Специальность современное программирование

Недавний пост Хиллела Уэйна о влиятельных мертвых языках (ну. В основном мертвых. Отмечает он) напомнил мне. Что есть много такого. Чего люди не знают об APL. И с неясностью APL в широком мире программирования нужно простить то. Что мы думаем об APL в терминах мертвого (в основном) языка. Но этот вопрос возникает так часто. Что я думаю. Что стоит рассмотреть АПЛ в этом свете и прояснить понимание АПЛ в современном мире. Рассмотрим этот вопрос в трех частях:

  1. Что делает язык мертвым?
  2. Почему APL не мертв. И почему он может казаться мертвым некоторым людям?
  3. Что делает APL не только

Что делает мертвый язык? Короче говоря. Отсутствие жизни.

Но как это относится к языкам программирования? Прокси-показатели популярности и userbase могут помочь нам. Потому что популярные языки никогда не умирают. Причина этого заключается в том. Что языки со многими разработчиками и пользователями почти всегда развиваются и изобретают новые функции. Код и интерфейсы. Они поддерживают связь с современными устройствами и интерфейсами. Тем не менее популярность-это еще не все. В конце концов. Хаскелл провел годы в безвестности. Прежде чем стать. По крайней мере. Достаточно известным. Даже если его популярность никогда не возглавляла мировые чарты.

Жизнь-это созидание. Движение и потенциал. Язык умирает. Когда он перестает обеспечивать ценность в этих измерениях. Другими словами. Когда язык больше не может внести свой вклад. Когда он больше не подходит для создания новых идей. Когда он больше не идет в ногу с потребностями пользователя. Он умирает.

Языки, которые сохраняют удобство использования. Внедряя уникальные или инновационные модели мышления и решения проблем. Гораздо более устойчивы к потере популярности. Действительно. Большинство новых языков возникают из неизвестности именно благодаря уникальному сочетанию практичности и новизны/новаторства в некотором смысле. Что имеет значение.

Но такие языки, как APL. Являются прекрасным примером того. Как даже великие языки могут уйти в небытие из-за рыночных сил и неспособности обеспечить ценность в нужной нише. Что такое максима? Изменение — это единственная константа. Но не будем забывать. Что история повторяется.

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

По правде говоря. АПЛ едва не погиб.

APL процветал в 70-х и 80-х годах как язык сверхвысокой производительности для быстрого и точного решения проблемы. Он давал доступ к мейнфреймам. Который другие не могли. Отделы компьютерных наук университетов на самом деле нашли это слишком легко. И многие отделы. Охватывающие модель разработки программного обеспечения или модель формальных методов а-ля Дейкстра. Провели тяжелую кампанию против APL.

В течение 90-х годов волна разработки программного обеспечения. Персональных компьютеров и Объектно-ориентированного программирования (ТМ) поглотила любые альтернативы. Поставщики APL не реагировали должным образом. И мода того времени означала. Что ориентированное на пользователя. Быстрое развитие APL в короткие сроки стало персоной нон грата. Растущая популярность электронных таблиц означала. Что APL ведет войну на два фронта и быстро теряет позиции (mindshare). Такие усилия. Как J. Не смогли добиться достаточной доли рынка. Чтобы переломить ситуацию.

Несмотря на это. APL продолжала обеспечивать очень высокую ценность для своих существующих клиентов. А Dyalog продолжал инвестировать не только в поддержание языка. Но и в развитие и развитие. Чтобы оставаться актуальным и во многом опережать время (примерно на 20 лет, кажется).

В результате получается очень солидный язык с одними из лучших инструментов. Покойный великий Джон Скоулз ввел функциональное программирование в язык. По крайней мере. За десять лет до того. Как кто-либо в основном программировании (включая самого Джона) понял. Насколько актуальным оно станет.

Готовность сообщества APL продолжать гоняться за тем. Что означает

По иронии судьбы. В это десятилетие APL также позиционировалась как феникс из безвестности со зрелой. Быстрой и опытной платформой инструментов и методов для решения сегодняшних проблем. Потому что в то время как APL был

Мало того. Что APL продолжает развиваться и совершенствоваться на протяжении многих лет. Остальная часть сообщества программистов усваивает уроки трудного пути. Которые только служат тому. Чтобы сделать APL более актуальным сегодня. Чем когда-либо прежде.

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

Композиционный подход Lego block к программированию доказал свою высокую эффективность как в функциональном программировании. Так и в библиотечно-ориентированных моделях Python. Это обсуждалось много лет назад в знаменитом переходе Массачусетского технологического института от своей учебной программы 6.001 дня (десятилетие?).

Мы также пришли к пониманию ценности экспертов предметной области в практике программирования. Такие методы. Как Agile-метод и тому подобные. Подчеркивают код и тесную. Эффективную коммуникацию с пользователем системы. Методы, используемые во многих магазинах APL. Использовались и осваивались

Мало того. Что вокруг него существует сплоченная культура. APL-один из немногих языков. Намеренно созданных вокруг таких принципов. В некоторых случаях пользователи и разработчики объединяют программы вместе, а источником является их общий язык.

У нас также было некоторое время. Чтобы изучить подводные камни суперкомпиляции и Классический пример-теперь стандартная практика хранения данных в памяти вместо использования СУБД для всего. APL-приложения уже несколько десятилетий максимизируют системы баз данных в памяти и высокопроизводительные запросы. А поддержка готового языка для них и поддержка высокопроизводительной сериализации не имеют себе равных.

В пост-Ruby on Rails. Мире больших данных. Управляемом данными. Оказывается. Что производительность действительно имеет значение. Долгосрочная масштабируемость имеет значение. Но производительность также имеет большое значение. И для многих урок заключался в том. Что вы не можете иметь все. Но есть и другой элемент. В мире блоков Lego. Если вы можете быть конструктором и строителем блоков. У вас есть огромная сила и преимущество по сравнению с людьми. Которые могут только сшивать большие блоки/компоненты других.

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

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

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

Конечно, это не только солнце и розы. Близкая смерть APL в 90-х годах все еще давит на сообщество. Большинство пользователей сегодня-молодые энтузиасты или старые седые бороды. С драгоценным небольшим количеством в середине. Это все еще небольшая. Хотя и страстная (иногда слишком страстная) община. Многие его пользователи просто не присутствуют в интернет-каналах. Столь драгоценных и жизненно важных для мировоззрения многих из нас.

Иногда это происходит потому. Что они находятся под контролем NDA и не могут присутствовать или говорить о своей работе. У других просто есть дела поважнее. И они не станут утруждаться. Другие могут не любить делиться. Но они не остаются связанными с более широким сообществом программистов. Потому что они являются пользователями APL для своей страсти где-то в другом месте. И они не отождествляют себя с открытым исходным кодом интернет-сообщества полиглотов языка программирования.

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

Тем не менее. APL-это маленькое сообщество. Независимо от того. Как вы его разделяете. Но не позволяйте этому помешать вам присоединиться к нему. Сообщество APL по-прежнему в основном состоит из людей, поэтому. Пожалуйста. Свяжитесь с кем-нибудь в Dyalog, или со мной, или с Адамом в APL Orchard с вопросами. Которые у вас могут возникнуть. И мы поможем ответить на ваши вопросы и указать вам правильную документацию.

Неужели АПЛ мертв? Уже нет. Изменения в современном оборудовании. Бизнес-потребностях. Методах разработки и нашем понимании программирования делают APL в его современном состоянии, возможно. Более актуальным и жизнеспособным. Чем когда-либо прежде.

Вот некоторые вещи. Которые делают APL огромной добавленной стоимостью в современном пространстве:

  • Это очень высокий уровень.
  • Решения во многих областях программирования просты для выражения в прямом APL без сложных библиотек и ад зависимостей.
  • APL механически симпатизирует современным архитектурам GPU и CPU. Что приводит к быстрому коду. Который не должен быть трудным для чтения или записи или порта.
  • Dyalog APL поставляется с обширным инструментарием, примерами. Документацией. Интеграциями. Визуализацией, отладкой. Инструментами/функциями. Библиотеками. Сериализацией и поддержкой платформы.
  • Идиоматический APL допускает автоматический или почти автоматический анализ сложности и предсказуем по производительности во многих архитектурах.
  • Современный APL часто может превзойти рукописный код C.
  • Идиомы APL часто переносимы между доменами. А это означает. Что методы и стратегии. Которые вы изучаете. Применяются в большем количестве областей (в отличие от библиотечного подхода. Который ограничивает применимость данной функции).
  • Более лаконичный APL позволяет сократить количество шаблонных шаблонов и провести более целостный анализ систем для лучшей оптимизации всей архитектуры.
  • APL сохраняет фокус на высоком уровне. Помогая вам избежать преждевременной оптимизации.
  • APL-это язык. Разработанный с нуля на принципах. Согласованных с
  • Программы APL могут быть принципиально проще и прозрачнее. Что приведет к лучшему пониманию проблемы и лучшим решениям.
  • APL обеспечивает преимущества потока данных. Функционального программирования в стиле Lego без необходимости прибегать к большим и сложным наборам библиотек черного ящика. Которые ограничивают вашу свободу и понимание. А также ограничивают вашу междоменную передачу.
  • APL особенно подходит для инновационных пространств. Где простое использование готовых решений может привести к неоптимальным результатам. В то время как APL может позволить экспертам домена повторять новые и существующие решения вместе композиционным образом для решения сложных и даже не очень сложных областей с апломбом.
  • APL легко интегрируется в существующие или новые кодовые базы благодаря обширной интеграционной поддержке REST, JSON, .NET, Python, C/C++. Общих объектов, TCP, CSV. Office, HTTP. Docker, COM. R и многих других интерфейсов.
  • APL позволяет вам иметь единую кодовую базу. Которая является переносимой производительностью как для ЦП. Так и для GPU-архитектур.
  • Многие более распространенные технологические стеки могут быть полностью и непосредственно реализованы в чистом APL без каких-либо библиотек. Таких как высокопроизводительные системы запросов к базам данных в памяти; это приводит к меньшему количеству кода и меньшей сложности. Часто эти прямые выражения так же коротки или короче. Чем вызовы библиотеки к существующим реализациям.

Когда дело доходит до этого. APL предлагает уникальную платформу в Dyalog. Которая часто может обеспечить тройную производительность во время выполнения и контроль при одновременном снижении долгосрочных затрат на техническое обслуживание и повышении производительности разработчиков на одной и той же кодовой базе по сравнению с обычными платформами. Модными сегодня. В моей книге такой радикально ориентированный на ценности язык далеко не мертв. Он вернулся после долгого перерыва и пришел сюда. Чтобы кое-что показать молодежи.