История упрощения в языках программирования

Более быстрое и надежное планирование по мере развития доменов приложений требует изменения языков программирования.

Язык C был разработан для написания операционной системы, поэтому для непосредственного использования аппаратного обеспечения. Вот почему типы, такие как int или указатель строки, соответствующие структуре памяти.
C хочет разбить операции за счет навязанной программисту работы и фактически предназначен для критического ПО, где пишущая работа ничто по сравнению с трудностями обработки и ее оптимизацией.
Это идеально подходит для реализации программ, для которых он был разработан. Там, где все идет не так, это когда создатели новых языков, посвящённые в C, и которые делают компилятор в C, считают себя обязанными возобновить синтаксис этого системного языка, даже если приложения этого нового языка не имеют ничего общего с системой и не требуют такого рода синтаксиса. Это случай C++, языка приложений, разработанного как системный язык, а также тех, кто стал его преемником, как Java и C #.

Всегда было сопротивление программистов упрощению языков, их рабочему инструменту, к которому они прикреплены. Джон фон Нойманн, изобретатель компьютеров, когда ему представили Fortran (1954), получил такую реакцию :

«Why would you want more than machine language?»
(Зачем нам что-то, кроме машинного языка?)

Когда появился ассемблер, менее 1% программистов хотели использовать его предпочтительнее машинного языка, его считали игрушкой для девочки. (Источник: Ссылки на «Будущее программирования »)

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

Универсализация объекта

В « Смолталке» (1970) все - предмет. То же самое и в Скала. Это позволяет наследовать атрибуты и методы всего и, следовательно, сокращать объявления.

Принцип объектов, разработанный для Smalltalk, не очень хорошо понимался в других языках и особенно C++. Нельзя сказать, что они действительно упрощают программы. Но они помогают повторно использовать код и это уже прогресс. Скала сделала лучше, как мы увидим.

Петли, а не узлы

Питон (1991) популяризировал for in с картинами, что унаследовано от Gap (1986), а также «ряды», унаследованные от языка Icon (1970).
Можно просканировать картину или коллекцию, которая является категорией объектов.

for i in x
   ...

В общем, синтаксис Python облегчает программирование, а также чтение программы - аспекта, о важности которого пренебрегли в C++ (всегда вопрос о игрушке для девочки).

Еще более универсальные объекты

В JavaScript (1995) функция также является объектом. Кроме того, синтаксис такой же, как и для ассоциативной таблицы. От Smalltalk отличается, помимо динамической стороны, то, что ты повторяешь классические элементы процедурных языков, такие как функция, массив, объект, чтобы сделать его единым существом языка. Таким образом, функция может содержать другие функции, и можно просканировать атрибуты объекта...

Унифицированная обработка и данные

PHP (1995) принесла несколько более неудобные, чем выгодные упрощения. Например, массив использует цифровые индексы как ключи, и это источник путаницы.
Но в проблеме унификации обработок и данных он сделал шаг. Таким образом, код PHP вписывается в документ, он смешивается с данными, но также генерирует содержимое этого же документа. JavaScript делает то же самое, но динамически.

Универсальный коммутатор

В Script (2001) можно сделать коммутатор с любым оператором и всеми типами данных.

switch x
  < 10 : ...
  = 15 : ...
  else ...

Синтаксис петли while включает в себя приращение, так что ты не рискуешь попасть в бесконечную петлю. Нечто подобное реализовано в более старых языках.

x = 0
while x < 10
   ...
let x + 1

Еще более простые классы

В Scala (2004) объявляется класс и его конструктор с таким же заголовком. Scala зациклилась на написании кода, который в пять раз компактнее Java для той же виртуальной машины, и это правда благодаря такой простоте.
Можно делать паттерн-матч с классами, что еще больше расширяет свит... поле.
Более тонкое упрощение - это возможность создать систему обмена в Scala, определив игроков и сообщения, на которые они реагируют. Это облегчает создание программ на более общем уровне.

Упрощенная конкуренция

В Go (2009) запускаются конкурирующие задачи, такие как простые функции. Это облегчает создание веб-приложений, в которых конкуренция важна, и проще, чем JavaScript, и программирование событий.

А потом?

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

Несколько идей для дальнейшего улучшения языков...

Если у вас есть другие идеи, не стесняйтесь дать их в комментариях....

Читайте также: