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

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

Пессимисты плачутся в жилетку, оптимисты плачутся в декольте.
Костя Мелихан

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


Насколько востребовано изобретение очередного велосипеда, если к нашим услугам уже несколько тысяч уже изобретённых? Да, да, число языков программирования давно уже измеряется тысячами. Но нужны ли они?

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

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


        Было бы интересно изучить связь между числом языков, созданных к данному моменту, и числом программистов. Вполне очевидно, что эти числа коррелируют между собой. Если раньше программисты представляли собой узкую профессиональную прослойку, то теперь это массовая профессия. Уместно вспомнить опыт исторического развития человечества. Ограниченные малым числом социумы значительно отстают в развитии от своих собратьев в крупных сообществах. Этому есть убедительные исторические примеры. Численный рост мирового сообщества программистов увеличивает способности и возможности этого сообщества в генерировании новых идей, новых технологий и новых языков программирования.

        Эта тема достойна отдельного изучения и было бы интересно, если бы таковое состоялось. Но пусть эта гипотеза будет представлена на этом графике. Может, это даст кому-то стимул подтвердить или опровергнуть её.

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

Меня беспокоит количество языков, которые создаются, реализуются и представляются невероятно помпезно, а затем они исчезают, не оказав какого-либо существенного влияния. В течение всего этого времени — обычно в течение длительного многолетнего процесса разработки — для нового языка требуются значительные ресурсы, тогда как результаты этого процесса практически отсутствуют.

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

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

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

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

        На это хотелось бы возразить: JavaScript и PHP являются и тормозом, и подмножеством, но при этом прекрасно чувствуют себя в своей нише. А ещё надо помнить, что C++ нередко выбирают за быстрый код. Но закон Мура работает против C++, скорость работы программ становится второстепенным фактором. А на первый план выходят скорость написания программ, удобство модификации и сопровождения. Это увеличивает шансы тех самых «страшных тормозов», которые зачастую оказыватся не такими уж и страшными, а вполне даже симпатичными.

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

        А вот ещё цитата. Ларри Уолл, автор языка Perl:

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



        Это здавые мысли и трезые размышления. Но не всё так фатально. Поэтому хочется напомнить, что «пессимисты плачутся в жилетку, оптимисты плачутся в декольте». Рейтинги языков программирования убеждают в том, что шансы на соперничество с C++ всё-таки есть. Для этого достаточно посмотреть на места в рейтинге языков PHP, Ruby и Python.
Языки программирования


        В C++ есть такие недостатки, которые всегда будут играть против него. Тяжёлый синтаксис, небезопасная адресная арифметика, отсутствие проверки индексов и много чего другого, о чём можно много и долго говорить. C++ просто вынужден сохранять совместимость со всеми старыми возможностями. Эти недостатки невозможно исправить! Да, в язык постоянно добавляется «хорошее новое», но избавиться от «плохого старого» C++ не может по причинам обратной совместимости. А вот новые языки «свободны от обязательств», у их авторов руки развязаны. Они могут предложить и лёгкий синтаксис, и необходимые проверки. А C++ со своими недостатками может рассматриваться в качестве учебника «как нельзя делать».

        И нельзя не забывать о языках-конкурентах, которые тоже хотят низвергнуть C/C++ с верхних строк рейтингов. На роль «ниспровергателя C++» претендовало много языков. Лишь Java и C# в какой-то мере могут считаться таковыми. Но на плечах каких гигантов они поднялись?

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

        Прогресс информационных технологий непрерывен, хотя развитие происходит неравномерно. В определённые моменты открывается «окно новых возможностей». Тот, кто устремился в это окно первым или одним из первых, имеет большие шансы закрепиться. Тому есть множество примеров. Появление персональных компьютеров и целое семейство языков: Турбо-Паскаль, dBase. Автоматизация бухучёта в России и язык 1С. Появление браузеров и язык JavaScript. Повсеместное проникновение Интернета и Perl, PHP и ряд других скриптовых языков.

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

        Есть вполне прагматичные причины ухода в тень некогда популярных языков программирования. Если «новый» язык позволяет вести разработку ПО быстрее и дешевле, чем «старый», то это повод для смены инструмента. Правда, сейчас «порог» вхождения гораздо выше. «Клипперу», чтобы стать популярным, достаточно было иметь 2-3 сотни встроенных функций. Сейчас с таким багажом шанcов не будет.

        Некоторые специалисты прогнозируют, что взрывной рост ИТ затормозится в средине столетия. Так что ещё есть время и есть шанс вскочить на подножку уходящего поезда.

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

Опубликовано: 2012.09.25, последняя правка: 2019.06.16    21:33

ОценитеОценки посетителей
   ████████████████████████████ 13 (65%)
   ███████████ 5 (25%)
   ███ 1 (5%)
   ███ 1 (5%)

Отзывы

     2013/07/03 12:58, Ryhor          # 

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

     2013/07/03 15:26, Автор сайта          # 

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

     2016/04/10 20:38, perfect_genius          # 

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

     2016/04/11 12:06, Автор сайта          # 

Текст — самая простая и самая универсальная форма. При всём развитии новых форм представления, текст всё равно останется. Даже самые продвинутые IDE будут иметь выгрузку в текстовый вид.

     2016/04/15 10:22, utkin          # 

Все эти языки текстовые — следствие слабости первых компьютеров. Для человека же естественны образы, и современная техника вполне может их предоставить.

Образы это только один из способов мышления. И если символьное представление, когда образы примитивы (как в тексте), то чисто технически поверх можно накатывать более сложные протоколы — грамматику и семантику языка, то на сложные образы (типа как у художников) натянуть шаблоны и правила проверки представить черезвычайно сложно. О практическом использовании таких методов вообще говорить не приходится. Максимально что придумало человечество это простая фильтрация. То есть банальная цензура, но её внедрение дает больше отрицательного эффекта, чем положительного. В общем не все так однозначно.
И вторая проблема естественного интерфейса (хоть текст, хоть речь, хоть графика) это не категоричность представлений. Ну вот наглядный пример — текущее положение в нашей стране у разных людей будет вызывать различные ассоциации, от бурного восторга, до полного неприятия. Ещё пример: что такое утро? Можно дать несколько правильных ответов, но как правило будут даваться большинство одинаковых. Скажем что это явление когда видимое излучение звезды начинает достигать наших рецепторов из-за горизонта планеты. Теоретически определение верное, но использовать его будут редко. Проблема получается так — существует много вариантов верных ответов, но часть из них формируется чаще в силу некоторых причин, определение которых долгий и сложный процесс формализация которого сильно затруднена.

     2016/04/15 15:26, Автор сайта          # 

Есть полная ясность, как работать с кодовым представлением текста. А как, к примеру, отсортировать картинки? По каким критериям? Как к картинкам применить операции сравнения? Как обеспечить единственность представления? В этом плане даже у текста единственность представления подвергается эрозии: Юникод позволяет некоторые символы записывать разными способами.

     2016/06/22 16:29, rst256          # 

И если символьное представление, когда образы примитивы (как в тексте), то чисто технически поверх можно накатывать более сложные протоколы — грамматику и семантику языка, то на сложные образы (типа как у художников) натянуть шаблоны и правила проверки представить чрезвычайно сложно.

А вы сумеете передать хотя бы 1% от той смысловой нагрузки которую вы вложили в данное сообщение посредством вышеозначенных "сложных образов (типа как у художников)"?

     2016/11/01 06:25, rst256          # 

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

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

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

Горбунов-Посадов М.М. Расширяемые программы. Источник: http://keldysh.ru/gorbunov

Добавить свой отзыв

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

Авторизация

Регистрация

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

Карта сайта


Содержание

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

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

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

●  Признаки устаревшего языка

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

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

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

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

Компилятор

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

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

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

Новости и прочее




Последние отзывы

2024/04/18 11:14 ••• Ivan
Энтузиасты-разработчики компиляторов и их проекты

2024/04/18 04:47 ••• void
Признаки устаревшего языка

2024/04/11 00:08 ••• Автор сайта
Постфиксные инкремент и декремент

2024/04/09 23:50 ••• Автор сайта
Русский язык и программирование

2024/04/07 15:33 ••• MihalNik
Все языки эквивалентны. Но некоторые из них эквивалентнее других

2024/04/01 23:39 ••• Бурановский дедушка
Новости и прочее

2024/04/01 23:32 ••• Бурановский дедушка
Русской операционной системой должна стать ReactOS

2024/03/22 20:41 ••• void
Раскрутка компилятора

2024/03/20 19:54 ••• kt
О многократном резервировании функций

2024/03/20 13:13 ••• Неслучайный читатель
Надёжные программы из ненадёжных компонентов

2024/03/07 14:16 ••• Неслучайный читатель
«Двухмерный» синтаксис Python

2024/03/03 16:49 ••• Автор сайта
О неправомерном доступе к памяти через указатели

2024/02/28 18:59 ••• Вежливый Лис
Про лебедей, раков и щук