Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Прочее

Каким должен быть язык программирования?

Программисты делятся на тех, кто уже сделал компилятор своего языка программирования, и на тех, кто это сделать только собирается. Этот сайт сделан как раз для тех, кто только собирается. Итак, у сайта следующие цели:

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

  •   Обсуждение и разработка «на бумаге» такого языка программирования, который бы большинство программистов сочло бы идеальным или близким к тому. Обсуждения, дискуссии, притирка концепций — дело не одного дня и не одного месяца. Главное тут не скорость, а тщательность. К обсуждению приступить прямо сейчас, комментируя страницы этого сайта.

  •   Просветительская миссия. Существует множество книг на тему «Как написать компилятор». Диапазон авторов — от Ахо и Ульмана до Джека Креншоу. Но не существует книги «Как придумать язык программирования». Надеюсь, в результате дискуссий здесь появится материал, который можно будет озаглавить именно так.

  •   Не будет удивительным, если у кого-то начнут «чесаться руки» воплотить озвученные идеи в компилятор. Не стоит от этого зарекаться, но будет лучше отказаться от этого на начальном этапе. Язык программирования должен сперва «созреть», участники дискуссий тоже должны «созреть». Трудно отказаться от каких-то концепций, если на них потрачены усилия и написан код. Независимое мнение не должно зависеть от кода, который жалко выбросить.

            
Проект по созданию идеального языка программирования
Ernest Normand, 1886.
Пигмалион и Галатея.
Только тому, кто работает как
Пигмалион, будет своя Галатея.
Для попавших сюда случайно и/или неинтересующихся тематикой сайта есть возможность развлечь себя «чтивом»: статьи на компьютерные темы и компьютерный юмор. Надеюсь, это не позволит вам покинуть этот сайт с чувством разочарования.

             А теперь по-подробнее по пунктам.

Обсуждение существующих языков программирования

             Во многих языках есть некая «изюминка», привлекающая к себе сторонников. Есть и недостатки. Выявляя и обсуждая и то, и другое, можно нарисовать те контуры, в которые должен вписаться идеал языка программирования. В нём необходимо избежать уже совершённых ошибок. У них были разные причины, но в них надо разобраться.

Создание идеального языка программирования.

             Идеальный язык программирования — это такая же недостижимая мечта, как и идеальная жизнь. Но стремление к совершенству приводит к появлению вещей, которые делают нашу жизнь лучше. Скептики могут увидеть в этом изобретение очередного велосипеда. Но и это не бывает напрасным: если очередной велосипед не стал лучше прежнего, то сам процесс улучшает изобреталей. Велосипед может быть забыт и выкинут, а вот изобретатели приобретут инженерный опыт.

             Для начала вашему вниманию предлагаются мысли и идеи, которые уже есть на сайте. Надеюсь, что это вызовет интерес и желание это обсудить, прокомментировать или же возразить. И предложить такую альтернативу, которую и лучше, и понятнее.
            
             Часто проекты новых языков программирования либо нигде не обсуждаются и существуют только в голове авторов, либо обсуждаются в узком кругу. Затем пишется компилятор и общественность ставится перед фактом: есть новый язык, есть компилятор, пользуйтесь им; если он вам не нравится, то это ваши проблемы; мы никогда не обещали, что он вам будет нравится.
            
            Предлагается другой путь:
  • публикация идей, мыслей, наблюдений и замечаний,
  • обсуждение опубликованного,
  • формальное и неформальное описание языка,
  • принятие решений о деталях реализации,
  • разработка компилятора, если разработанный язык будет стоить того.
            При обсуждении хотелось бы увидеть конкуренцию идей, поэтому на сайт будут приняты любые, даже бредовые, на первый взгляд идеи. Ожидаются как комментарии к текстам имеющихся статей, так и новые статьи, которые будут присланы непосредственно администратору сайта. К присланным материалам предъявляются лишь три требования:
  • материалы должны быть по теме,
  • они должны быть написаны грамотным русским языком,
  • они должны быть содержательны.
            Помня о том, что «физик должен уметь объяснить простой уборщице, чем он тут занимается», надеюсь, что в наших рассуждениях нам удастся избежать терминов типа «сентенциальная форма», «транзитивное замыкание» и «функциональная декомпозиция». А если возникнет в них необходимость, то постараемся изложить мысли без специальной лексики. Всё гениальное — просто.

            Надеюсь, в результате дискуссий у нас появится на бумаге такой язык, который действительно стоит воплотить в компилятор. Без внесения в язык свежих идей и изюминок, которые помогут снискать языку популярность, к работе над компилятором даже не стоит приступать. В противном случае этот язык программирования годиться только для курсовой или дипломной работы. Или будет продуктом для узкой ниши, вторым языком «1С».

            История создания языков программирования знает примеры коллективного обсуждения будущих языков. Языки Алгол-68 и Ада разрабатывали созданные для этого комитеты. Результатом их работы было формальное и неформальное описание будущих языков, для которых в последствии были разработаны компиляторы. Коллективный принцип работы не гарантирует успешности, но он:
  • застрахует в какой-то степени от ошибок, противоречий и непродуманности концепций,
  • позволит услышать идеи многих программистов, у которых есть свои мысли, но изложить их некому.

Пособие «Как придумать язык программирования»

             По ходу обсуждения будут вноситься исправления в уже написанный материал. Ожидаемо появление статей программистов, у которых существует к этой теме интерес — как профессиональный, так и любительский. Ведь всегда есть место для озарений. В результате весь ход наших дикуссий можно будет расценить, как пособие «Как придумать язык программирования».
            
             На сегодняшний день существуют тысячи языков программирования. Но ещё ни один автор языка не объяснил, почему это сдалано именно так, и не доказал, что это наилучшее решение. Никлаус Вирт, один из самых «плодовитых» языкописателей, профессор, автор многих книг, не посчитал нужным комментировать процесс изобретения своих языков. Что же говорить об остальных, которые придумали один единственный язык программирования? Восполняя этот пробел, будем стараться комментировать ход своих мыслей, аргументировать свои предложения.
            
             Создание языка начинается не с описания грамматики. Должны родиться какие-то идеи, потом они должны пройти, как минимум, проверку на непротиворечивость концепций. Затем должны выкристаллизоваться основные идеи как синтаксиса, так и семантики языка. И лишь потом — формальное описание.

Существуют ли книги или сайты на тему
«Как придумать язык программирования»?

            Вполне может быть, что материалы на тему «Как придумать язык пpогpаммиpования» всё-таки существуют, просто автор этих строк с ней не знаком. Тем не менее, как не бывает двух одинаковых прожитых жизней, так и не бывает двух одинаковых опытов разработки языка программирования. И если наш опыт будет интересен, то он достоин письменного описания.

            Существует материал А.В. Хохлова «Как создать язык пpогpаммиpования и тpанслятоp». Хорошая работа, но её правильнее было бы назвать «Как создать тpанслятоp». Андрей не описал, как хотелось бы, процесс выбора решений в ту или иную сторону. Всё-таки хотелось бы понаблюдать за ходом авторской мысли. Но ещё не вечер. Может быть, Андрей как-нибудь найдёт время изложить нам свои соображения.

            Из зарубежных авторов ближе всего, наверное, к нашей тематике подходит книга Роберта Себесты «Концепции языков пpогpаммиpования». Всем рекомендуется её чтение, она того стоит. Однако содержание книги более всего подходит выбранному названию, а не «придумыванию языков пpогpаммиpования».

            Книга отечественых авторов: М.М. Гавриков, А.Н. Иванченко, Д.В. Гринченков носит название «Теоретические основы разработки и реализации языков программирования». Несмотря на многообещающее слово «разработка» в названии, книга своим содержанием соответвует только второму подлежащему в названии — «реализация». Главы этой книги носят названия: «Способы задания формальных языков», «Основы теории перевода и ее применение к синтаксическому анализу», «Конструирование сканеров», «Применение КС-языков и грамматик в разработке языков программирования»... То есть это обычный набор тем для книги об изготовлении компиляторов.

            Из интервью Александра Степанова, автора библиотеки C++ STL, можно узнать интересные подробности создания этой библиотеки (ссылки - ниже). Однако эти воспоминания нельзя признать полными и исчерпывающими с точки зрения проектирования языка. Хотя поднятые темы настолько интересны, что обойти вниманием их нельзя.

            Создание языка программирования завершается описанием описанием грамматики языка (например, в БНФ) и его синтаксиса. Некоторые языки ещё проходят международную стандартизацию. А вот последующий процесс называется созданием компилятора/транслятора/интерпретатора. Совмещение ролей разработчика компилятора и создателя языка не ставит знака равенства между этими разными занятиями.

Создание компилятора

             Написание компилятора — не самая срочная задача, ибо нельзя поставить телегу впереди лошади. К тому же, это задача более практическая, чем этап проектирования языка программирования. Необходимо тщательно обдумать собственно язык. Лишь когда он станет красив «на бумаге», можно будет думать о компиляторе. Позволю в этом месте процитировать Евгения Зуева «Редкая профессия») о личном опыте создания компилятора С++:

  ... через некоторое время от нас ушел третий участник. Он весь был ориентирован на получение результата, а не на процесс его достижения. Само по себе это исключительно ценное качество, его наличие (подкрепленное высокой квалификацией) гарантирует успешное завершение работы в заданные сроки. Однако в данном случае оно обернулось своей худшей стороной — ... принятием важных решений "на ходу", без всякого обсуждения и плохо скрываемым недовольством коллегами, которые непонятно почему копаются там, где надо скорее программировать. Главное — скорее! За один день сделать работоспособный синтаксис, за месяц — добиться трансляции программы «Hello world!». Сложность системы не играет никакой роли, все программы устроены одинаково. Модули должны взаимодействовать согласно своим интерфейсам, обсуждать которые нет смысла, они и так сами за себя говорят — на то они и интерфейсы.

      Однако компилятор — такая система, которая объективно (исключая вырожденные случаи) не может быть сделана за три месяца, даже если предположить, что найдется гений, который физически смог бы написать за этот срок нужный объем кода. Как процесс его разработки, так и процесс кодирования должен предполагать совместную работу, постоянное обсуждение всех мало-мальски существенных решений и крайне аккуратное продвижение вперед, по крайней мере, до тех пор, пока не будет достигнут этап отладки. Слишком велико число связей между всеми компонентами компилятора и невозможно предвидеть, насколько серьезными окажутся последствия самого, казалось бы, невинного решения, принятого «на проходе» как очевидное.

Смотри так же:

Последняя правка: 2015-01-23    06:06

ОценитеОценки посетителей
   ████████████████████████████████ 36 (75%)
   ██ 2 (4.16%)
   ██ 2 (4.16%)
   ███████ 8 (16.6%)

Отзывы

     2014/11/28 02:42, Санал

Почему не использовать ДРАКОН в написании? Может, облегчится труд?

     2014/11/28 10:59, Автор сайта

Потому что «Дракон» далеко не идеален.

     2014/11/29 16:05, Nadolin

Здраствуйте всем! Благодарю за Этот Сайт, и содержащуюся на нем информацыю тех, кто к этому приложил усилия авторства, разработки,написания, и размещения здесь.

     2014/11/29 11:16, Автор сайта

Спасибо за тёплые слова. Но хочется сделать больше, чем сделано, и работы предстоит ещё много.

     2015/02/09 17:43, Павел

Здравствуйте! В статье упомянут коллектив авторов. Где можно с вами связаться? Где идёт обсуждение идей? Форум какой то или что? Кто входит в коллектив? Имею интерес послушать и частично поучаствовать в обсуждении.

     2015/02/09 22:03, Автор сайта

Пишите на электронную почту, указанную ниже, после этого поговорим.

     2015/02/19 10:22, programmer

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

     2015/02/19 14:27, Автор сайта

Опыт других проектов говорит о том, что нужно несколько человеко-лет. Отсутствие средств указывает на отсутствие здравого смысла? Интересное мнение…

реальная выгода создателей популярных языков исчислялась в сотнях тысяч долларов

Пожалуйста, факты в студию со ссылкой на источники.

     2015/02/19 14:26, programmer

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

     2015/02/20 13:25, Автор сайта

Давайте вот о чём договоримся. Если Вы готовы профинансировать проект – Вы можете рассуждать о деньгах. Не готовы – значит деньги не затрагиваем, это не Ваша забота. Идём дальше. У вас есть какие-то новые идеи в программировании? Есть у Вас есть конкретная критика предложенных здесь новшеств? Если да – высказывайте идеи, критикуйте предложенное. Если нет – не тратьте своё и моё время.

     2015/02/20 11:59, programmer

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

     2015/02/20 12:18, programmer

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

     2015/02/20 15:38, Автор сайта

Вам же писали: не готовы финансировать – не пишите о деньгах. Если для Вас «конкретика будет означать как раз раскрытие новых подходов и идей», а раскрывать Вы не хотите, то пишите на своём сайте. Зачем Вам мой сайт?

     2015/02/20 12:54, programmer

Изучение чужих ошибок и реакции на них. Т.е. если вы допускаете ошибку, существует значительная вероятность, что вы как-то к ней пришли. Меня это интересует, откуда это взялось.
Для Вас лично я бы порекомендовал изучить ошибки результатов шизанутого творчества создателей 1С финансовых программ - язык программирования. Их ошибки очень характерны, хотя и происходят из жадности, тупости и прочих элементарных вещей.

     2015/02/20 16:11, Автор сайта

Если Вы пишите, указывая на ошибки – это критика. Но Вы пишите об ошибках, не указывая на них – это критиканство. А Вам лично я бы посоветовал давать рекомендации на своём сайте. Там пишите о тупости, жадности, максимальном ущербе заказчикам.

     2015/03/18 07:43, Е.В.Геній

"Для Вас лично я бы порекомендовал изучить ошибки результатов шизанутого творчества создателей 1С финансовых программ - язык программирования. Их ошибки очень характерны, хотя и происходят из жадности, тупости и прочих элементарных вещей."

Пока вижу только критиканство - очень похоже что 1С своимъ встроеннымъ РЯП кого-то оставило безъ миски супа...

     2015/04/07 10:50, misha_shar53

Из рассмотрения выпал очень важный язык программирования MUMPS. Не рассматривая его нельзя вообще говорить об идеальном языке программирования. Я уже 3 года на идеях MUMPS пытаюсь создать идеальный язык программирования. Уже много сделано. Есть спецификация языка(MSH). Многие обсуждаемые в этом разделе проблемы мне понятны. Но писать комментарии к отдельным конструкциям языка бессмысленно без изложения концепций языка. Некоторые проблемы в моем языке просто отсутствуют как таковые. Некоторые опираются на традиции MUMPS. Я постараюсь подготовить статью с моим представлением об идеальном языке. Мне будет интересно ваше мнение о моих исканиях. По поводу текущего обсуждения. Я считаю принципиальной ошибкой то, что за основу обсуждаемого языка взят язык Си. Уже создано огромное множество вариантов языков на его основе. ничего принципиально нового на этом пути нет. Идти в этом направлении бессмысленно.

     2015/04/07 15:38, Автор сайта

Этот язык 1) старый, 2) малопопулярный. О чём это говорит, если руководствоваться общепринятыми стереотипами? Если этот язык не стал популярен, хотя время у него было, то, значит, есть на это причины. Чем-то он не нравится людям, скорее всего и мне не понравится. А ещё в нём нет чистых функций, лямбд и всего того, что вошло в широкую практику в последнее время.

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

Почитал о нём в Википедии. Раздел «критика» рассказывает о таких вещах, которые охлаждают интерес к языку. Отсутствие типизации (все данные хранятся как строки), низкий уровень абстракции, нечитабельность синтаксиса, отсутствие обязательного объявления переменных и поддержки приоритетов арифметических операций. Ключевые слова языка не зарезервированы, лишний пробел может совершенно изменить смысл синтаксической конструкции.

Я считаю принципиальной ошибкой то, что за основу обсуждаемого языка взят язык Си

С чего Вы это взяли?

постараюсь подготовить статью с моим представлением об идеальном языке

А Вы не хотите сделать свой сайт на эту тему?

     2015/04/07 14:44, misha_shar53

Этот язык 1) старый, 2) малопопулярный. О чём это говорит, если руководствоваться общепринятыми стереотипами?

Если руководствоваться стереотипами то ничего нового не получишь.

Если этот язык не стал популярен, хотя время у него было, то, значит, есть на это причины. Чем-то он не нравится людям, скорее всего и мне не понравится.

Причины, возможно, есть. И вам он тоже может не понравиться. Но от этого язык не станет хуже. Чтобы оценить достоинства, надо хотя бы немного с ним поработать. И чтение Вики недостаточно.

А ещё в нём нет чистых функций

Странно? Почему это нет?

лямбд и всего того, что вошло в широкую практику в последе время.

В практику в последнее время вошло много всякого мусора. Не всегда полезного.
Лямбд - точно нет и зачем они в MUMPS я не понимаю. Кстати я их не встречал и в Си. А что еще вошло в широкую практику в последе время? Анатации Java? Языки начинают напоминать кучу мусора. Ломается стиль языка и его обзорность.

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

Попробую.

Почитал о нём в Википедии. Раздел «критика» рассказывает о таких вещах, которые охлаждают интерес к языку. Отсутствие типизации (все данные хранятся как строки),

Это как раз его достоинство. Типизация языка порождает 80% его проблем. А как хранятся данные - в виде строк или в каком другом виде - неизвестно и языком не определяется и зависит от конкретной реализации.

низкий уровень абстракции,

Утверждение в корне неверно.

нечитабельность синтаксиса

Не хуже чем в других языках программирования. В нем нет нечитабельных конструкций. И вообще это сильно зависит от стиля написания программы.

отсутствует обязательное объявление переменных

Это его основное достоинство. Управление данными полностью переложено на язык. Решается целая куча проблемм. Функции пишешь по смыслу, не вникая в тип аргументов

     2015/04/07 14:56, misha_shar53

А Вы не хотите сделать свой сайт на эту тему?

Вы хотите чтобы я убрался с вашего сайта?
И не хотите даже выслушать мои аргументы? Открывать свой сайт я не планирую. Все свободное время я трачу на разработку языка MSH.

     2015/04/07 19:46, Автор сайта

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

Утверждение в корне неверно.

Меня не надо переубеждать, лучше подправьте Википедию и будьте готовы отстоять свою точку зрения, ссылаясь на авторитетные источники.

Вы хотите чтобы я убрался с вашего сайта?

Нет. Если Вы не хотите пользоваться своим языком в одиночку, Вам рано или поздно придётся сделать свой сайт. Сделайте его заранее, у Вас будет канал общения с Вашими будущими пользователями. И на этом сайте Вы можете изложить свои аргументы в наилучшем виде.

Все свободное время я трачу на разработку языка MSH

Всё-таки отщипните кусочек времени, напишите о языке, Вы получаете полную свободу изложения!(см. выше).

     2015/04/07 17:28, misha_shar53

Языки, в которых отсутствует типизация, менее эффективны.

Спорное заявление.

Они не найдут применения в некоторых сферах, например, в системном программировании.

Утверждение ошибочное. MUPMS в OS DSM11 использовался в качестве системного. Мне трудно представить чтобы на нем нельзя было сделать

Всё-таки отщипните кусочек времени, напишите о языке, Вы получаете полную свободу изложения!(см. выше).

Я этим сейчас и занимаюсь. И обязательно завтра послезавтра напишу.

     2015/04/08 05:16, misha_shar53

Мне кажется прежде чем приступать к обсуждению нового языка, надо определиться с целями его создания. Зачем это делать. Я вижу 2 цели:
1. Создать традиционный язык, хорошо себя зарекомендовавший, который легко воспримет широкая аудитория, но более эстетически выглядящий.
2. Создать Новый язык обладающий новыми свойствами. Тогда надо определиться будет ли он нишевым или нет.И если да то для какой ниши он создается. Какими свойствами он должен будет обладать.
Мне кажется вы склоняетесь к 1 варианту. Но тогда это будет еще один 10001 Си или С++ подобный язык и перспективы его выживания мне кажутся сомнительными. Может я не прав.

     2015/04/08 08:59, misha_shar53

Хотелось бы более подробно разобраться с якобы недостатками MUMPS и его критикой.

Этот язык 1) старый, 2) малопопулярный.

Это не аргументы. Даже еще более старый Аналитик совершенней большенства современных языков программирования. Эти аргументы никак не относятся к свойствам языка.

Чем-то он не нравится людям, скорее всего и мне не понравится.

Странное заявление. Причем здесь люди? Надо получить собственное мнение о языке.

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

А вот при создании нового желательно стереотипами не пользоваться.

Почитал о нём в Википедии. Раздел «критика» рассказывает о таких вещах, которые охлаждают интерес к языку.
Нечитабельность синтаксиса.
Ключевые слова языка не зарезервированы, лишний пробел может совершенно изменить смысл синтаксической конструкции.

Спорное утверждение, но частично я с этим согласен. Но подправить синтаксис проблем не составляет.

низкий уровень абстракции.

Ну совсем не в тему. Уровень абстракции у MUMPS выше, чем у остальных языков. В литературе даже он упоминался как язык 4-го поколения. Организация данных тому подтверждение.

поддержки приоритетов арифметических операций.

Да приоритеты отсутствуют. Это конечно не достоинство языка, но и не недостаток. Дело привычки у программистов и выбор модели у разработчиков. Если это включено в стандарт языка то это допустимая модель работы с данными.

Отсутствие типизации (все данные хранятся как строки), отсутствие обязательного объявления переменных.

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

     2015/04/08 13:36, Автор сайта

Но подправить синтаксис проблем не составляет.

Да, но тогда это будет другой язык, вовсе не MUMPS, о достоинствах которого Вы хотите рассказать.

В принципе, языки с некоторой долей погрешности можно разделить на две категории.
  • Языки, допускающие эффективную реализацию. Их эффективность направлена либо на наибольшую скорость исполнения, либо на наименьшее использование вычислительных ресурсов. Последнее важно для мобильных применений: меньшая производительность процессоров, требования энергоэффективности (чтобы батарея меньше разряжалась).
  • Языки, которые ставят целью наибольшую скорость работы программиста, а не программы. Поэтому на некоторые неэффективные решения закрываются глаза. Ну и что, что в PHP массивы реализованы посредством ассоциативных массивов: нет прямого обращения по индексу 2 в массиве $arr[2], но есть обращение к элементу ассоциативного массива по ключу 2. Ведь работает, не правда ли?
Каждая философия имеет право на жизнь, особенно если у языков непересекающиеся ниши.

C/C++ ещё много лет будет здравствовать. Но и у конкурентов есть хорошие шансы: ведь C/C++ не может освободиться от своих «плохих» черт по причине обратной совместимости. Если бы Вы познакомились с языками Oberon-2, D, Rust, то не говорили, что это «ещё один Си». Скажите сторонникам Oberon-2, что этот язык такой же, как Си, и Вы узнаете, что они о Вас думают.

Он покусился на самое святое в теории программирования на его бога — декларирование переменных. Откуда взялся этот бог уже никто и не помнит.

Если кто и не помнит – так это Иваны, не помнящие родства. Всё дело в эффективном использовании памяти. Статическая типизация позволяет зарезервировать память ещё на этапе компиляции. Программы с динамической типизацией резервируют память на этапе исполнения. Более того, эту память приходится выделять в «куче», когда размер памяти под объект становится известен в момент его создания. А выделение в «куче» - достаточно «дорогостоящее» занятие: Двухстековая модель: тесты на скорость Так что декларирование переменных – не блажь.

о что декларирование переменных является злом и не только не помогает но и сильно мешает некоторые из разработчиков языков начинают понимать.

Такое «понимание» связано с тем, что закон Мура работает на тех, кто уверен, что «пипл чип всё схавает». А ещё появилась типизация Хиндли — Милнера, которая зачастую создаёт иллюзию, что типизации нет. Это специально для тех танцоров, которым всегда что-то мешает.

     2015/04/08 13:34, misha_shar53

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

     2015/04/09 00:57, misha_shar53

Скажите сторонникам Oberon-2, что этот язык такой же, как Си, и Вы узнаете, что они о Вас думают.

Извините что затронул ваши религиозные чувства. Ладно не Си Алгол или Паскаль.

А ещё появилась типизация Хиндли — Милнера, которая зачастую создаёт иллюзию, что типизации нет. Это специально для тех танцоров, которым всегда что-то мешает.

Вообще то я хотел сказать не о танцорах и что им мешает. А о существовании фантомов вроде декларирования переменных и GOTO, которые тормозят развитие языков программирования. Мне просто искренне жаль, что колоссальные ресурсы уходят в никуда. Хотя ваше обсуждение языка мне было полезно и интересно.

     2015/04/10 15:06, Автор сайта

Печально, что Вы не видите разницы между C/С++ и Oberon-2 и объясняете это религией. Жаль, что Вы считаете, что «goto» и статическая типизация являются одинаковыми тормозами в развитии. А Вы не пробовали понять, в чём заключаются плюсы Haskell, языка со строгой статической типизацией?

     2015/04/10 14:38, misha_shar53

В принципе, языки с некоторой долей погрешности можно разделить на две категории.
Языки, допускающие эффективную реализацию. Их эффективность направлена либо на наибольшую скорость исполнения, либо на наименьшее использование вычислительных ресурсов. Последнее важно для мобильных применений: меньшая производительность процессоров, требования энергоэффективности (чтобы батарея меньше разряжалась).
Языки, которые ставят целью наибольшую скорость работы программиста, а не программы. Поэтому на некоторые неэффективные решения закрываются глаза. Ну и что, что в PHP массивы реализованы посредством ассоциативных массивов: нет прямого обращения по индексу 2 в массиве $arr[2], но есть обращение к элементу ассоциативного массива по ключу 2. Ведь работает, не правда ли?
Каждая философия имеет право на жизнь, особенно если у языков непересекающиеся ниши.

Я бы выделил 3 ю категорию: Информационные системы и базы данных. На этих приложениях эффективность однозначно определяется скоростью обмена с базой данных, а типизация и эффективность работы с памятью имеет второстепенное значение.

     2015/04/10 19:10, Автор сайта

Согласен с Вами. Вот поэтому в ближайшее время будет сформулирована «философия» проекта. Поскольку изобрести универсальную «серебряную пулю» не удастся, придётся сделать выбор: «Это нам подходит, а вот это – нет».

P.S. Философия языка сформулирована.

Написать отзыв

Написать автору можно на электронную почту mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Каким должен быть язык программирования?

Изобретение очередного велосипеда?

Все языки эквивалентны. Но некоторые из них эквивалентнее других

Лень — двигатель прогресса

О наименовании проекта и языка программирования

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

Компьютерный юмор

Прочее

Последние комментарии

2018/06/14 00:37, rst256
Лень — двигатель прогресса

2018/05/31 18:52, rst256
Программирование без программистов — это медицина без врачей

2018/05/31 17:57, rst256
Циклы

2018/05/31 17:50, Comdiv
Разбор цепочек знаков операций

2018/05/31 17:42, Comdiv
Как отличить унарный минус от бинарного

2018/05/30 18:57, Александр Коновалов aka Маздайщик
Раскрутка компилятора

2018/05/29 21:52, Автор сайта
Указатели и ссылки в C++

2018/05/28 20:29, Александр Коновалов aka Маздайщик
Анонс будущих статей