С достаточно общим языком программирования, который вы найдете наиболее галлюциногенными?
Я слушал много программных подкастов и потратил некоторое время на изучение некоторых новых языков, которые считаются предстоящими и важными. Я не обязательно говорю о BrainFuck , но какой язык вы бы назвали языком, который бросает вызов общим парадигмам программирования?
Что касается меня, то в 90-х годах я занимался некоторым функциональным и логическим программированием (например, Прологом ), поэтому не могу сказать, что нашел там что-то особенное.
Я далек от того, чтобы быть экспертом в этом, но даже сегодня самым изнурительным языком программирования для меня является Perl . Не потому, что «Привет, мир» сложно реализовать, а скорее лексическая гибкость, поэтому некоторые из самых сложных решений можно так поэтически разложить, что мне приходится выходить из терминала, чтобы очистить голову. Я не говорю, что, скорее всего, продам коммерческую реализацию программного обеспечения, просто есть определенная причина, по которой Perl так (не) известен. Достаточно взглянуть на основной список книг.
Итак, какой ваш умопомрачительный язык продвигает ваши лучшие программы и практики ?
источник
Ответы:
APL
Этот язык является невероятно мощным и очень лаконично, это будет больно ваш мозг.
Для начинающих сложно использовать без пользовательской клавиатуры или, по крайней мере, наложения клавиатуры, чтобы показать все непонятные символы, которые он использует.
Тогда язык имеет векторную / массивную парадигму и специализируется на сложной линейной алгебре. В оригинальной версии даже не было циклических конструкций, все, что делалось путем объединения довольно необычных операторов массива.
strip_tags()
кто-нибудь? (позаимствовано из Википедии)источник
Haskell . Это очень близко к тому, чтобы быть чисто функциональным, к которому большинство людей не привыкли; очень требовательный, что полезно, когда вы знаете, что делаете, но разочаровывает до тех пор; имеет довольно загадочный, очень символический синтаксис, который хорош, когда вы его знаете, но непрозрачен до этого ... список можно продолжить.
Кроме того, просто невозможно отформатировать материал так, чтобы он мне нравился.
источник
Пролог. Это было так сильно отличается от любого другого языка, который я использовал, когда я впервые столкнулся с ним. Мне это нравится, поэтому я не ненавижу синтаксис или что-то еще.
источник
!
).Я согласен с вами на Perl. Это самый уродливый синтаксис, который я когда-либо видел. Они говорят, что даже разработчики Perl не могут вспомнить, что они написали на следующий день.
источник
Я хотел бы сказать Forth . Обозначение, что все операции являются стековыми манипуляциями. В чистом виде нет локальных переменных для использования.
источник
Руби .
Это заставляет меня хотеть убить себя
(Я мог бы иметь неправильный синтаксис, но вы поняли).
источник
DateTime.Now.AddMonths(1);
? Эти функции вряд ли делают код более читабельным. (Я не говорю, что C # имеет лучший синтаксис. Вы можете перенести его на любые языковые соглашения, и он все равно будет применяться.)Brainfuck
Любой, кто может честно написать это издевательство над языком, даже не нуждается в такой теме.
Hello World (указатели слева; объяснение справа):
источник
Лисп - мой последний умопомрачительный язык.
Я взял с собой монады и функциональное программирование из Haskell, и теперь у меня есть макросы для работы. Я только вхожу в CLOS и вообще не касался системы условий.
источник
MUMPS
Это язык , который выскакивает из времени к времени в рассказах онлайн и имеет добавленную честь быть в фактическом использовании производственного хранения критически важной информации жизненной безопасности (то есть, записи пациента). Однако это также язык, где ценится краткость, и в рабочем коде могут появиться такие функции, как приведенные ниже (пример из статьи Википедии по теме):
источник
Я бы сказал, Coq , или другая реализация теории зависимых типов. Система типов Хаскелла не очень выразительна сравнительно. Переход к более выразительной системе типов (например, исчисление конструкций (CoC)) позволяет вам делать некоторые изящные вещи, такие как проверка свойств программ в языке и встраивание сильных инвариантов в ваши типы, которые можно проверять статически.
источник
Цель-C . Честно говоря, я изучал его очень кратко и на первый взгляд настолько не любил синтаксис, что отказался от него.
Так как это такой (относительно) общий язык (в основном для разработки под Mac / iPhone / iPad ), я уверен, что он действительно несколько приличный, когда вы к нему привыкнете.
источник
[foo bar]
это просто синтаксический сахар, дляobjc_sendMsg(foo, "bar");
которого, в свою очередь, ищется указатель функции (это особая «полоса», а не универсальная). Вы поняли, что это полностью утка?[receiver doStuff:arg]
Я выбираю Меркурий .
Меркурий согнул мой разум, показав, что даже чистые языки могут выполнять ввод / вывод .
Это работает так, что функции ввода / вывода в Меркурии принимают значение «состояние мира» и возвращают новое значение «состояние мира». Таким образом, функции ввода / вывода в Меркурии преобразуют мир, и, следовательно, поддерживается чистота.
источник
Это должна быть схема , конечно. Попытка объяснить
call-with-current-continuation
всегда причиняет боль моему мозгу, но как только вы поймете это, вы сможете принять невероятно элегантные решения.Хотите остановить на полпути через алгоритм и передать управление кому-то еще? Конечно!
Хотите возобновить одно и то же продолжение несколько раз? Конечно!
Хотите приостановить выполнение алгоритма, переопределить функцию, а затем возобновить выполнение с исходным стеком, но с обновленным глобальным состоянием? Нет проблем! И сделать это несколько раз с различными изменениями глобального состояния, но с одной и той же точкой повторного входа в стек? Для вас, сэр, что угодно!
источник
Раньше я использовал древний редактор под названием TECO (Text Editor and COmparator), который был очень мощным языком для модификации текста со всеми видами макросов. Я не помню точную известную цитату об этом, но суть была в том, что «любая случайная коллекция из 20 символов почти всегда является законной программой TECO, и она изменит ваш файл (это редактор) принципиально непредсказуемым образом. Я помню, как писал Конвертер Fortran в PL1 примерно на странице кода TECO.
источник
Сборка была самым «умопомрачительным» для меня, но я только начинаю это.
источник
Лисп . Обучение - это серия маленьких прозрений, каждое из которых полностью изменит ваше представление о решении задач программирования.
источник
REBOL
Он построен вокруг понятия кода как данных, как Лисп . Сторонники языка с трудом объясняют, в чем его уникальные преимущества перед другими подходами в этой семье, и, как правило, пожимают плечами и говорят что-то вроде: «Ну, парень, который разработал AmigaOS, придумал его, стандартная библиотека включена и микроскопическая, и как только вы «получите» его, это будет похоже на прием красной таблетки «Матрица», и вы никогда не захотите возвращаться ».
Проблема в том, что он частично причудливый и точно не определил, какие программисты являются его рынком. Но также отчасти потому, что многие из сторонников этого просто отстой в объяснениях . :)
Но Дуглас Крокфорд раньше был фанатом, черпал вдохновение в этом из-за создания JSON и предлагал людям заняться этим уже в октябре 2010 года:
Я думаю, что стоит посмотреть на тех, кто хочет понять, как они думают о языковом дизайне и расширяемости. Теперь, когда это открытый исходный код (после 18 лет разработки), обычные заявления об отказе от ответственности, которые я держал на расстоянии вытянутой руки, больше не применяются ... это стоит посмотреть! Сообщество даже вышло из своей проприетарной программы обмена сообщениями на основе Rebol и начало общаться в Stack Overflow (к моему большому удивлению!)
источник
Я бы сказал, что многие люди избегают писать напрямую, что разработчики считают SQL невероятным. Я думаю, что многие люди просто не думают с точки зрения наборов.
источник
чистый
Чистый - это функциональный язык, основанный на переписывании терминов. Мне нравится это, это и разреженно и выразительно, если немного преуменьшено.
источник
Это может быть не самым изнурительным, но мне было труднее всего учиться (я думал, что Haskell и язык ассемблера были проще!)
Это набор языков HDL , в частности, VHDL (и Verilog в меньшей степени)
Преодолеть тот факт, что каждая «функция» запускается одновременно, невероятно сложно, и вы не можете избежать перехода к распараллеливанию абсолютно всего. Конечно, это всего лишь пограничный язык программирования.
источник
Tcl
Я начал изучать это однажды, но когда я научился достаточно, чтобы иметь смысл, я действительно не любил то, как это заставило мой мозг чувствовать. Казалось бы, это можно назвать умопомрачительным.
источник
Машинный язык Тьюринга , очевидно. Он чрезвычайно мощный, безусловно превосходит все существующие языки программирования и гарантированно повредит ваш мозг, если вы попытаетесь его использовать.
источник
С
Указатели, управление памятью и приведение типов требуют много времени и легко ошибаются. Отсутствие встроенных структур данных, таких как хеш-таблицы или списки, означает, что вам нужно либо разработать собственную, либо найти стороннюю библиотеку и изучить ее API.
источник
JESS (Java Expert System Shell). Эта адаптация CLIPS, встроенная в среду Java, является языком экспертной системы на основе функциональных правил. Попытка отобразить реальные объекты Java как факты и найти правильные вопросы, чтобы задать ожидаемые результаты, является настоящей проблемой. Меньше, если вы знакомы с теорией экспертных систем, но когда вы исходите из чисто ООП мышления, это не подходит. ПРИМЕЧАНИЕ: CLIPS - это не Lisp, а выглядит так. Еще один изумитель ума.
Как только вы пройдете начальную кривую обучения, он станет достаточно мощным и чертовски быстрым, чтобы найти ответы.
источник
TeX считается языком, так как он завершен по Тьюрингу , и я считаю его довольно сногсшибательным. Язык для набора математики (и книг по программированию) ...
источник
CIL
CIL, общий промежуточный язык, к которому компилируются все программы .NET , своего рода объектно-ориентированная сборка. Мне интересно попробовать написать или прочитать в нем код и сравнить его конструкции с C #, которые я уже знаю. Это хороший способ узнать больше о том, что делает .NET за кулисами. И это может быть полезно для таких вещей, как динамическая генерация кода или перезапись существующего скомпилированного кода с использованием Mono Cecil .
источник