Zorko писал(а):
Как нам можно относиться к языкостроителю, который не понимает недостатков Си?
В лучшем случае просто игнорировать исходящий от него бред.
Не неси чушь. Си отличный язык если его использовать там где нужно -- для кодогенерации с правильных языков. Ты же сам пропагандируешь такой подход с обероном -- из оберона в си, из сей в машкод нужного процессора...
"Если вы не генерируете Си, то Си генерирует вас!" )))
У сей есть как недостатки, так и достоинства перед тем же обероном. Взять хотя бы перечислимый тип -- да, в сях он отстойный, в с++ или с# он гораздо лучше, но всё же в обероне перечислений и вовсе нет, как и объединений. А ведь эти типы крайне важны в программировании -- перечисления больше в прикладном софте, а объединения в низкоуровневом системном.
Если новичок в программировании изучает оберон, то он просто даже и понять не сможет, чего он лишается, и будет плодить говнокод -- нетипизированные константы вместо перечислений, иерархии записей или прямо работу с адресами в памяти вместо цивилизованных объединений.
А ведь в модуле-2 и паскале эти типы были, вырезав их из оберонов Вирт просто как серпом прошёлся по яйцам своего языка...
Zorko писал(а):
geniepro писал(а):
И вот тут, кстати, Вирт в своём обероне пошёл не той дорогой -- возложил на расширяемые записи (объекты по сути) функционал перечислимого типа и объединения (union)...
Да он просто унифицировал подход. Упростил. Вирт — строитель языка-ядра. В этом ценность его работы. А почему ты решил, что это не та дорога?
Такой путь просто противоречит духу строгой статической типизации -- переносить обнаружение ошибок в программах на как можно более ранние стадии разработки программы.
Вместо того что бы компилятор заявил программисту что он пихает не то что нужно не туда куда нужно, программист вынужден заниматься нудным тестированием, которое по определению не способно обнаружить все ошибки в программах.
Вирт сделал шаг от статической типизации к динамической, и это, имхо, глубоко неверный путь.
Zorko писал(а):
Ну не стоило в Java делать такой сильный упор на ООП, начисто вырезав из языка средства структурного программирования.
о_О это какие же средства структурного программирования вырезали из Явы???
http://ru.wikipedia.org/wiki/%D1%F2%F0%F3%EA%F2%F3%F0%ED%EE%E5_%EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E51. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:
последовательное исполнение — в Яве есть
ветвление — также есть
цикл — и это никуда не пропало
2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций).
Возможно тебя удивит, но и подпрограммы из Явы никто не выкидывал.
3. Разработка программы ведётся пошагово, методом «сверху вниз».
Насчёт этого пункта я не уверен, точно знаю что в Обероне это требование структурного программирования не реализовано, а, скажем, в С# или в Хаскелле оно есть. Яву же я не настолько хорошо знаю...
Zorko писал(а):
Но я уверен, что подмечу недостатки Эрланга даже в таком простом примере как хеловорлд, мне просто лень этим заниматься.
Эх, мне бы такую самоуверенность ))) Хеловорлд на эрланге выглядит примерно так:
io:write("Hello world").
Zorko писал(а):
geniepro, за всё время пока мы с тобой общаемся меня не покидает чувство, что твоё знакомство со многими языками и парадигмами — чисто умозрительное, как с Алголом-68 (это же надо было сказонуть как тебе нравится этот язык) и Фортраном.
Да, это действительно так. Мне трудно представить, что бы кто-то имел опыт серьёзной работы хотя бы на двух десятках языков, это, видимо, такие динозавры, что начали писать программы ещё на заре программирования.
Алгол-68 просто красивый язык, имхо, куда красивее того же Оберона, хотя в Алголе-68, несомненно, есть и куча недостатков. Ну так -- 68-75 гг разработки, что уж от него требовать. Но для своего времени это был впечатляющий язык.
На Фортране я, к счастью, не работал, и надеюсь не придётся...
Zorko писал(а):
Ты не имеешь опыта работы на Форте (ярчайший представитель подхода расширяемого программирования), не оценил (подозреваю, что “ниасилил”) Пролог (представитель парадигмы логического программирования)...
В детстве я баловался Фортом, но решил поберечь свой разум и не писать программы в стековом стиле без всяких намёков на типы данных.
Пролог меня когда-то впечатлял, но, к сожалению, не понадобился -- слишком уж он специфичен...
Zorko писал(а):
... делаешь упор на ФП, но не предлагаешь единого императивного языка, который более или менее подходил бы для широкого круга задач.
Ну, тут мне особо нечего предложить, это правда.
Самым качественным универсальным императивным языком я считаю Аду, но по своей работе предпочитаю С# -- при его недостатках он, в принципе, вполне устраивает, учитывая что мне приходится не в одиночку программы писать. Аду мало кто знает, а учить что-то новое -- ещё меньше кто хочет, увы...
Zorko писал(а):
(ну вот зачем в Эрланге -deftype? Нахрена там минус спереди? А нахрена типу скобки? Этому есть какое-то разумное объяснение, лежащее вне уродского мировоззрения автора?).
Синтаксис Эрланга и впрямь нестандартен, однако он крайне прост и по любимой оберонщиками арифметике синтаксиса оставляет обероны далеко позади. Эрланг, возможно, самый простой язык из практичных языков, применяющихся в индустрии.
Что касается уродства мировозрения автора Эрланга. На Обероне просто в принципе недостижим тот уровень надёжности софта, что достигнут в Эрланге -- 99.999% и более. Значит, всё-таки всё нормально с его мировозрением...
Конкретно про -deftype. Я и сам непонял, почему в оригинальной статье использовано слово deftype. В текущем описании языка указано просто type. Возможно, со времени написания статьи произошли изменения в языке. Это, конечно, недостаток, но оберонщикам ли жаловаться на изменения в языке?
Минус же нужен вот по какой причине. В Эрланге модуль кроме определений функций может так же иметь разную метаинформацию, и эта метаинформация записывается в едином стиле:
-Ключ(Значение).
(почему авторы языка выбрали такое представление я не в курсе, увы).
В эту метаинформацию входят такие данные, как имя модуля, список экспорта, типы данных, спецификации типов функций, макросы.
Почему это сделано именно так -- я тоже не в курсе, такой вот дизайн языка, которому уже почти 30 лет...
Zorko писал(а):
Поэтому наше общение похоже на разговор глухого со слепым, и мы в итоге не достигнем какого-то базового соглашения.
Для такого недопонимания придуман специальный термин -- "парадокс Блаба"...
http://ru.wikipedia.org/wiki/Грэм,_ПолZorko писал(а):
Расширяемое программирование. Ты конечно привык, что язык запаян, готов, обиблиотечен и окомпоненчен, и даётся дрожащему от восторга программисту в запаянном гробике ящичке. Испортить ничего невозможно, у программиста просто не будет такой возможности. Если тебя плющит, смирись, ничего исправить в языке уже нельзя. Таковы Java и C#. Языки-фирмачи с поплющенным сишным синтаксисом. Оберон же (особенно 07) вследствие своего размера является языком-ядром и пошалить в нём ручками — более чем доступное удовольствие. Т.е. с недостатками Java и C# тебе придётся жить. Недостатки Оберона, даже очень серьёзные идеологические просчёты, легко исправимы малыми силами, лишь бы знать в каком месте ударить.
В Форте же, который я всюду приплетаю, можно конструировать всё вплоть до новых конструкций цикла. Форт-система является диалоговой и работает в режиме интерпретации и компиляции, разрешая переключаться между ними. В Форте ты создаёшь примитивы, кубики, слова, из которых потом создаёшь программу. Аналога этому механизму в других известных мне языках нет (если эти языки — не диалекты Форта, хоть и под другим названием).
О, ты затронул любимый довод лисперов и немерлистов.
Справедливости ради, в Немерле возможности наращивания языка уступают лисповым и тем более фортовским.
Zorko писал(а):
На Форте можно разработать Форт-ассемблер и писать как на ассемблере. А можно Паскаль-слова и писать структурно, как на Паскале. Уверен, что и хаскеловские примитивы тоже могут быть достигнуты на Форте.
Вполне возможно. Ты, наверное, сильно удивишься, но в хаскеле тоже можно сделать фортовские примитивы, к тому же, благодаря статической системе типов в этом eDSL контролируется работа со стеком в процессе компиляции, то есть хаскельная форт-программа не сможет совершить попытку работы с пустым стеком.
Вероятно и в Форте это можно сделать, так же как и создать свою систему типов, но я о таком не слышал.
В Хаскелле, кстати, средства построения eDSL также как и в Форте позволяют сделать встроенный ассемблер, или Бейсик, например...
Zorko писал(а):
Почему ты напрочь игнорируешь расширяемое программирование? Да всё просто, надо же заниматься затыканием дыр средствами, на которых легко это делать, и расширяемое программирование в пролёте.
Да кто же сказал, что я его игнорирую? Потихоньку использую там где нужно. Правда, не на форте, лиспе или немерле с хаскеллем, а в сях -- когда надо делаю макросы, "расширяю язык" )))
У форта проблема в том, что в стандарте языка не прописаны стандартные средства создания структур данных, статической типизации и прочего. Это можно сделать, и кто-то делает, и получается что в разных форт-проектах используются разные по сути языки на основе форта. Хорошо ли это? Спорный вопрос...
Zorko писал(а):
Но я желаю тебе смены платформы на что-то другое, отличное от дотнета, может тогда перестанешь считать, что для микроконтроллеров программируют полтора человека в мире.
С чего ты решил что я пишу программы только под .NET? Ну да, сейчас я ограничиваюсь виндою, потому что другие платформы для меня малоактуальны, однако писал я программы и под микроконтроллеры, лет 10 назад...
А то что под твои любимые ретроплатформы программы пишет ничтожное количество людей -- вряд ли ты сам будешь отрицать этот факт...
ЗЫ. Ох и любишь же ты простыни текста писать... )))