Языки Программирования. Куда Мы Идем, Товарищи? Еще Один Малоизвестный, Но Очень Мощный Язык.

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

В последнее время появилось довольно много новых языков.

Но прогресса в этой области нет. Похоже, что развитие в этой области топчется на месте.

По возможностям языки мало чем отличаются друг от друга.

Явную оппозицию можно увидеть в области типизации переменных.

С одной стороны, это языки со строгой типизацией данных, такие как C, C++, Pascal, Fortran, Java, с другой — JavaScript и его клоны.

В JavaScript сторонники и противники типизации ведут открытую войну.

Новые стандарты JavaScript усиливают набор текста на этом языке.

Теоретики программирования считают строгую типизацию большим благом.

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

Слабо типизированные языки писать легче.

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

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

А потом, как обычно, теоретики превратили это в фетиш, на который теперь все молятся.

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

Нет необходимости объявлять переменные вообще.

Для предметной области целое число не имеет значения или же переменной является фактическое значение.

Какое значение пользователь ввёл с клавиатуры, оно и есть.

Задача программы — манипулировать такими значениями, не вникая в то, как они хранятся в памяти.

Это должен контролировать переводчик.

Еще одна проблема типичных языков программирования — управление памятью.

Здесь языки с ручным управлением памятью, такие как C, C++, Pascal, Fortran, противопоставляются языкам с управлением памятью с помощью сборщиков мусора, таким как Java. Существуют также промежуточные варианты, такие как Объект С.

Недостатки всех этих методов хорошо известны.

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

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

Подобные структуры находятся вне языков и обычно встречаются в библиотеках.

Это списки, карты, хеш-таблицы.

Пользоваться всем этим арсеналом неудобно.

Зачем я все это пишу? Зачем ныть о несовершенстве устройства мира? Нисколько.

Просто существует язык программирования, который не имеет всех этих недостатков.

Вроде есть и вроде нет. Он живет сам по себе, остальной мир живет сам по себе.

Он известен узкому кругу пишущих программистов.

Создатели языков не видят этого в упор.

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

И они этим очень гордятся.

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

Может я говорю о какой-то малоизвестной самоделке? Нисколько.

Это давно известный язык, родившийся на рубеже 60-70-х годов.

В отличие от многих других, его сразу же стандартизировали.

Стандарт этого языка становится третьим после Фортрана и Кобола.

В 1995 году стандарт этого языка был обновлен.

И основные производители сред на этом языке почти придерживаются этого стандарта.

Остаётся только дать этому языку название.

Я думаю, что это имя ничего не скажет подавляющему большинству, но его зовут MUMPS. Посмотрим, как он справится с изложенными выше проблемами.

Объявление и, как следствие, типизация в этом языке отсутствуют как таковые.

Переменные всегда существуют в 3 лицах.

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

Используется интерпретация переменной, необходимая для этой операции.

Переменная появляется сразу у 3 человек в момент ее записи.

Это либо расположение переменной слева от знака равенства, либо при чтении ее с внешних устройств.

Существует специальная команда для уничтожения переменных.

Переменная имеет не только значение, но и структуру.

Любая переменная представляет собой логическое дерево.

И списки, и хеш-таблицы можно легко сопоставить с такой структурой.

У языка есть еще одна уникальная особенность.

Переменная может находиться в постоянной памяти, поэтому потребность в файлах сильно ограничена.

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

Хотя это свойство языка не является главным.

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

В язык встроена полная поддержка баз данных.

Это данные на постоянных носителях, поддержка транзакций и логирование.

Язык поддерживает распределенные данные.

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

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

Язык имеет собственные встроенные средства ввода/вывода, в том числе асинхронные.

Управление памятью выполнено очень элегантно.

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

И расположение данных в памяти не определено; это может быть в разных местах в разное время.

Данные в памяти и на внешних носителях хранятся в виде B-дерева и по определению не требуют сборки мусора.

Несмотря на все свои преимущества, это очень компактный язык.

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

Программы на нем очень компактны, легко отлаживаются и невероятно надежны.

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

Лично мне этот язык доставляет чисто эстетическое удовольствие.

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

Хотя можно бегать и с гирями.

Но в этом мире все не так просто.

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

Я решил разработать новый язык на основе идеологии MUMPS, который бы учитывал современное состояние языков.

Но о недостатках MUMPS и о формулировках я предлагаю в следующий раз, если уж на то пошло.

Свершилось: Статья про МСХ habrahabr.ru/post/241369 Теги: #MUMPS #языки программирования #компиляторы

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.