Re: Что мы потеряли?
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.08.06 17:52
Оценка: 88 (12) +6 -1 :))) :)
Здравствуйте, Mamut, Вы писали:

M>Для нетерпеливых — вопрос находится в самом конце этой цитаты


Для нетерпеливых — ответ сразу. Это провакационный толчек сознания, а-ля НЛП с закосом под невинный вопрос. В принципе в саомй провакации нет ничего плохого, но вот булшит лично мне не нарвится. У меня стойкое ощущение, что это не вопрос, а гипноз.

Пояснию. При верной посылке (почему в мэйнстриме нет некоторых мощьных возможностей существовавших в Лиспе и Смолтоке десятки лет назад) совершенно протеворечивая и на сквозь лживая аргументация. Причем это даже не аргументация. Текст построен так, что он не доказыает, что-то, и не объясняет, и даже не является вопросом. Хотя внешне на то похоже, но автот этих строк имеет четкую позицию и пытается навязать ее читателю использую "безпроигрышные методы".

Чтобы не быть голословным, поясню на примерах...

M>Глава 18: Lisp in Lisp (Building an interpreter)

...
M> 30: Procedure writing programs

M>Что меня волнует, так это то, что "старые" языки могли выполнять задачи, которые (как мне кажется) сложны или вообще невыполнимы в современных языках. Как так произошло, что все эти Java и C# потеряли все эти возможности, а называются "современными"?


Дествительно как так произошло, что языки не имевшие каких-то возможнсотей и являющиеся наследниками языков так же никогда в жизни не поддерживающих этих возможнсотей могли потерять эти возможности?
Другими словами, как можно потерять то о чем даже не знал никогда, не то что не имел?

И главный вопрос. Зачем строить фразу так, как будто факт потери очевиден?

M>Я заметил одну ОЧЕНЬ беспокоящую тенденцию в мире Java...

M>теперь можно написать кучу маленьких файлов XML, которые описывают поведения или что-то похожее...
M>Не забывайте, что XML не компилируется и никак не проверяется, кроме как на правильность структуры, и могущие возникнуть проблемы нельзя никак определить до тех пор, пока вы его не протестируете или не развернете на сайте. В прошлом названия из кода выше были бы классами или экземплярами класса и компилятор мог бы сразу обнаружить ошибку. Теперь они потеряли эту немаловажную возможность.

А теперь вопрос. Что не так в этих рассуждения? Никто не догадался?
Правильно, ни Лисп, ни Смолток не являются компилируемыми языками и самое лучшее на что они могут быть рассчитаны — это JIT-компиляция в момент выполенния. Таким образом проверки корректности в случае "старых языков" будет выполняться точно так же в рантайме или (в лучшем случае, во время развертывания, но это уже при применении супер технлогий вывода типов и т.п.). Так что претензию отсуствия статических проверок можно предъявить те же претензии что и к внешним ХМЛ-файлам.

M>Кажется, что им удалось изобрести новый скриптовый язык поверх Java, который на самом деле имитирует то, что у нас уже было лет десять тому назад в ASP/JSP/VB, но имимтирует намного хуже, потому что XML — это не язык, а структура данных...


Любой язык можно характеризовать как структура данных интерпретируемые человеком и машиной. Так что ХМЛ-языки фрэймворков вроде Spring-а — это такие же языки как и все остальные, только очень специализированные. Другими словами — это DSL-и рассчитанные реализацию конкретных возможнсотей отсуствующих в Яве или C#.

M>Возвращаясь к отправной точке — какие возможности мы потеряли, перейдя с Lisp/Smalltalk на всякие VB/Delphi/C++? а потом на всякие Java/C# и т.д., и какие возможности теперь заново изобретают (в худших формах) в этих новых "язвках"?


Это очередной булшит этой заметки. "Мы" (Кстати, кто это? Мэйнстрим? Или это прием цель которого создать впечатление, что автор и читатель стоят на одних позициях?) никогда не теряли Lisp/Smalltalk. Их попросту никогда не было у "нас". Были (да и есть) люди для которых был Lisp. Были и есть те для кого существует Smalltalk. Есть даже откровенные фанаты этих языков. Но все они это капля в море. Ява и C# — это мэйнстрим языки. Они захватывают умы тех кто учился программировать на Паскале, С и С++ (или на самих Яве и C#). А в этих языках никогда не было тех возможнсотей которые есть в Лиспе.

Так что правильно ставить вопрос так:
Почему умы масс захватили Паскале, С, С++, Ява, VB и C#, а не Lisp или Smalltalk?

Вот тут лично я могу высказать свое мнение. Хотя оно для многи может показаться радикальным.

К такому положению дел, по-моему, привели следующие вещи:
1. Привычки. Лисп и Смолток очень не традиционные языки. Привычки — это опыт который закладывается в каждого человека с детства и остается в сознании практически на уровне рефлексов. Так в начальной школе нас обучали арифметике в которой есть инфиксная запись выражений и есть приоритеты. Так вот и Лисп и Смолток нарушают эти прадиции (и не только эти). Смолток плюет на приоритеты (ради умозрительных приемуществ), а Лисп и вовсе плюет на инфиксную запись. Примитивные арефмитические выражения на этих языках уже выглядят не похоже на то к чему привыкли те самые массы. Уже одно это заставляет ломать сознание. А вот как раз ломка сознания и борьба с привычками — это очень болезненные процессы. Большинство людей скорее выбросят нечто не привычное, чем будут пытаться себя перебороть.
2. Традиции. Лисп и Смолток родились в недрах исследовательских лабороторий и очень долго жили только там. Потом из Смолтока долго пытались устроить успешный коммерческий продукт, но добились только того, что интерес к Смолтоку так никогда и не возник. А Лисп вообще долгое время существовал для окружающего мира почти как прикол. Потом пошли ПК на которых оба языка по началу вообще не могли работать. Там счет шел на байты и инструкции, и GC с нитерпретацией смотрелись совсем странно. Алголоподобные же языки напротив поставлялись с массовыми компьютерами и вообще были ближе к народу.
3. Lisp и Smalltalk плохие языки. Понимаю, что этот пунтк вызовет бурю эмоций у их фанатов. Но объективно это так. Надо только понимать, что термин "плохие" для разных людей имеет разное содержание. Вы можете быть фанатом динамически типизированных языков, и вам может быть не важны проверки компилятора и скорость исполнения, или вы можете считать отставание Lisp и Smalltalk не сущесвенным, а проверки в рантайме ничем не хуже сделанных компилятором... но это ваше мнение. А мнение других людей другое. Так вот очень многие из особенностей этих языков делали их плохими для программистов. Отсуствие синтаксиса в Лисп является приемуществом для тех кто ценит макросы, но является недостатком для того кто не хочет читать вместо понятных выражений какой-то (по его мнению) эзопов язык (польскую нотацию). И таких примеров в обоих языках море. Главное что объеденят Лисп и Смолток — это то охренение в которое пребывает программист, привыкшей к Алголоподобным языкам, впервые сталкивающися с Лиспом или Смолтоком.

Ну, а теперь ответ на вопрос.

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

Скала, Немерле и даже Питон с Руби и являются развитием идей этих старичков. Они потихоничку проникают в массы и рано или поздно проникнут в современных фаворитов (Яву и C#, возможно и в С++, но похоже скорее случится второе пришествие), или гибриды воде Скалы и Немерле вытеснят с рынка сегодняшних фаворитов, как они, в свое время, вытеснили вчерашних.

Есть правда еще один ответ. Основан он на глубокой и чистой вере в человеческую глупост и бездарность. В соотсвествии с ней в мэйнстрим-ЯП вообще нельзя вводить что-то мощьное или сложное, так как по делу это будет использоваться очень редко, но вот во вред его будут использовать часто и с большим удовольствием. Совершенно естественно, что выдаются такие суждения теми, кто о себе подобное никогда в жизни не подумает. Тупые и бездарные это те кто седят за соседними столами. В общем, как в том анекдоте:

------------------
— Глянь какая здоровенная жидяра перед нами идет!
— Ага.
— А, давай ему морду набьем?
— Ты, что? А если он нам?
— А нам то за что?


В общем, это мнение тоже не безосновательно. Но сдается мне, что оправдвать отсуствие нужных многим программистам возможнсотей тем, что ими могут как-то не так воспользоваться тупые индусы. Особенно этот аргумент бессмысленнен в средах типа .net и Явы где можно без проблем использовать два и более языка. А языки типа Nemerle и Scala к тому же еще и имеют неплохие средства защиты от дурака.

M>[1] Я не имею ни малейшего представления, как перевести некоторые из этих терминов, поэтому оставил их, как есть.


Ну, например слово "могущие" нужно переводить как "которые могут", то есть не "могущие возникнуть проблемы", а "проблемы которые могут возникнуть". В остальном перевод очень неплох.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.