Re[9]: "альтернативные" языки
От: BulatZiganshin  
Дата: 12.02.07 09:38
Оценка: +3
BZ>>все возможности *яызка* Смоллток в руби есть.

VD>+1 Даже больше. Но действитльно языки одного направления, хотя Руби вроде дрался с Перла.


семантика — смолток, синтаксис — эйфель, фичи — перл. вообще, руби — это просто фантастическая коллекция наиболее удачных решений из разнообразных языков. например, в книге "жемчужины прогшраммирвания" описан гипотетический язык с очень удобным операторм case. нигда в реальных яхзыках такого так и не сделали. кроме руби!

BZ>> правда, изменилась терминоллогия, и главное — нет той замечательной среды. ведь это же была первая IDE в мире! и до сих пор, как я понимаю, нет ни одной среды, где было бы так легко работать со структурой классов и проверять, что возвратят те или иные методы


VD>Сполток конечно обладал первой IDE, но на сегодня IDE Явы и Шрпа намного мощьнее.


не видел ни ту, ни другую, ни третью, так что могу ошибаться. но фишка в том, что смолток динамчисекий язык и в его среде во-первых ты работал непосредтсвеенно с классами, а не исходными файлами, во-вторых, мог проверить работу любой функции непосредственно запустив её

>Тут ты не прав. И причина тут в том, что для этих языков доступна полная информация о типах. Кстати, для Хаскеля хорошую IDE сделать можно, хотя язык имеет плохие особенности вроде уникальных идентификаторов (из-за выбранной системы типов и уращения клгоритма вывода типов), что весма странно будет выглядить в современном мире. А у Руби и Смолтока их динамическая типизация приводитк к серьезным ограничениям.


что означает "уникальные идентификаторы"? я вообще лучше знаю английскую терминологию

BZ>>C# же, как и Delphi — язык чисто практический, я лично в нём ничего концептуального не вижу.


VD>В них выражены все концепции ООП. Причем используется система типов основанная на классах, то есть так что родилась в Симуле. Смоток и Риби пошли своим путем. Лично мне он не нравится. Но в любом случае достаточно одного представителя этого направления — Руби. Теболее что Руби на мой взгляд более интересный язык.


вместо C# и Delphi с теоретической точки зрения лучше изучать Eiffel, это дейсвтивительно красивый и мощный язык с чистой ООП идеологией. руби отличается от него динамической титпизацией, это отдельная парадигма со своими преимуществами и недостатками

BZ>> и вообще, на мой взгляд, изучать ФП надо с...


VD>А причем тут ФП? У тебя случае мунктика на нем нет? В списке били и Хаскель, и Схема. Вот на них пусть ФП и изучается.


есть. я вроде и говорил про эти два языка, ты не заметил?

BZ>> наиболее теоретичсеких, удобных в программировании, но неэффективных (пролог, хаскел),


VD>С каких пор Пролог стал ФЯ?


логичнсеколе программирование — тоже мощная, хотя и медлительная парадигма

BZ>> и далее спускать к более практичным, но сложным в использовании языкам. и заканчивать на C#, яве или чём-то ещё, что будет реально использоваться. языки более низкого уровня, типа C++, изучать необязательно — разве что чтобы понять, как функционирует процессор, да и это начинающему ни к чему


VD>А я так не считаю. Как раз я бы сначала познакомил людей с выражениями, потом с основами процедурного программировнаи, а потом бы уже давал бы ФП и ООП как его расширения (заужение). На мой взгляд так будет проще донести до людей эти идеии. Возможно даже вначале показывать сам подход в виде паттернов, а потом показывать соотвествующие языковые конструкции.


имхо после выражений нужно переходить к более сложным выражениям

VD>Что касается языка, то я бы как раз выделил на роль первого языка Немерле или Руби. Руби я бы посоветовал тем учетилям которые считают, что вначале людям не надо морочить голову с типизацией, а Немерле тем кто считает, что типизация важнеший аспект. Ну, и по той причине, что на немерле можно показать практически все приемы кроме разве что ЛП.


вот именно, и ничего хорошего я тут не вижу. мимхо, надо изучать разные параддигмы по их чистым представителям, а не язык, где они как-то сбиты вместе. что касается руби... он очень хорош для некадровых программистов. профессионалы должны думать более систематчисеким путём, они должны жить со сторгой типизщацией в уме, и для них руби будет полезен ближе к концу курса как красивый практический язык

BZ>>такой подход научит человека мыслить на наиболее высоком возможном уровне — ведь здесь важно, с чего ты начнёшь.


VD>Твой подход привьет человеку конкретный образ мышления и осложнит восприятие других парадигм. Точно так же плохо давать в начале ООП, а потом пытаться обучить ФП.


а ты собираешься их смешанно давать, типа одно предложение их одной парадигмы, второе из другой? имхо надо изучить каждую из них — ООП, ФП, ЛП в чистом виде, на чистых языках, и затем уже идти к тому, как они могут сочетаться. иначе вчедловек, привыкший к ФП-поверх-ООП в Немерле будет *очень* обескуражен ООП-поверх-ФП в окамле, и скорей всего до него долго не дойдёт в чём тут приницпиальная разница

VD>В обоих случаях будет отторжение второй парадигмы и ломка. Особенно это актуально для ФП, так как литература по нему полное дерьмо. Вообще удивительно как казалось бы стольк умные люди придумавшие все это так бездарны в писательстве! Ну, да это отдельная тема.


а ты читал книгу Вадлера или Худака или судишь по Хал-Ван Даму?

VD>В общем, я виду к тому, что ООП и ФП надо давать параллельно и обязательно как развите стурктурного программирования.


почему? потому, что ты сам начинал с него? в хаскеле неструктурное программирование вообще трудно поредставить, оно лежит в самой идеологии языка. то же самое в прологе

BZ>> если первым яхзыком будет бейсик, то он для человека станет "родным", и дальше все новые концепции будут перекладываться на его "архитектуру"


VD>Забавно, что ты заметил, что первый язык привязывает к образу мышления. Стало быть твое предложение сделать ФП первым в изучении ни что иное как попытка привязать программирование к нему. На мой взгляд это ошибка.


я вообще-то предлагал начать с Пролога, поскольку считаю ЛП наиболее высокоуровневой парадигмой. и дальше идти по остальным парадигмам, чтобы человек с самого начала усвоидл каждую из них. но по отдельности, а не в виде nuj бутерброда, которы они приняли в том или ином конкретном языке. иначе он не научится видеть, что здесь принадлежит к ФП, что к ООП, и как их можно соединить иначе или вообще одну из них выкинуть

VD>Бэйсик же бывает разным. Бывает 70-ых годов с жудчащими goto вместо функций. А бывает VB.NET почти не отличающийся от C#. В прочем VB.NET — это ООЯ, что опять же привяжет к ООП. Что плохо.


VD> А вот как средство изучения структурного программирования Васик довольно хорош. Так чта... а пуркуа бы собственно не па?


с.п. на данный момент уже можно считать частью ООП. я не вижу смысла изучать его отдельно, благо что при других парадигмах нестурктурно программировать всё равно не получится

VD>Я вот первым языком учил С. И особых проблем не вознкло. ФП крышу рвал по началу, но только от того что писатели пытающиеся его объснить были бездарностями.


имхо, ты м сейчас мыслишь в императивном стиле, используя ФП только локально. на что несомненно откладывает отпечаток используемый тобой язык

VD>Кстати, ООП я освоил на раз. И уверен, что это произошло так легко потому, что я сначала испытал в нем потребность, а затем прочел о нем. Я в 93-ем писал программу выводящую окна на экран и после первого лобового опыта стал задумываться как бы это дело реализовать. Патом я стал читать книжку про Виндвс и восхищался идеями сообщений и окон. Далее я изобразил что-то подобное на структурах и указателях на фукнции. Ну, а потом я уже читалш про С++ и мне все казалось логичным и стройным.


VD>Уверен, что именно так надо преподносить знания в учебных заведениях. То есть:

VD>1. Базовые знания.
VD>2. Постановка задачи хорошо решающеся с помощью некого подхода.
VD>3. Решение в лоб.
VD>4. Анализ проблем.
VD>5. Теоритический рассказ о подходе.
VD>6. Решение задачи с помощью паттерна.
VD>7. Демонстрация встроенных средств языка.
VD>8. Анализ приемуществ встронных средств языка над использованием паттерна.

VD>Уверен, что при таком подходе крышу сносить не будет.

VD>Так что продаю идею.


т.е. сначала надо научить людей структурному программированию, чтобы они поняли что это бяка и освоили ООП? а перед этим научить их програмимровать на асме, чтобы затем преподнести им идеи стурктурного программирования? а перед этим — в машинных кодах, да?

твой подход хорош для доучивания людей, которые уже владжеют некоей неэффектвиной парадигмой. с нуля же их учить этой парадигме только чтобы продемонстрирвоать её неэффектинвость, нет никакого смысла. их надло сразу учить мыслить в правильном ключе, и pfmtv уже более простые подходы давать только для парктических нужд
Люди, я люблю вас! Будьте бдительны!!!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.