Другие языки программирования и технологии

Какой язык программирования самый высокоуровневый?

Такой, не стандартный вопрос:
Какой язык(полный по Тьюрингу) обладают самым высоким уровнем абстракции по-вашему мнению?
Например я знаю, что самый низкоуровневый язык, если его можно так назвать, это бинарный код, а самые высокоуровневые по-моему мнению это scratch и python
Самые высокоуровневые - LISP и Haskell.
LISP реализует лямбда-исчисление.
В Haskell по сравнению с LISP добавлены статическая типизация (правда, ценой макросов) и полный отказ от императивных конструкций, вместо которых предполагается использовать монады (сами монады никто не мешает использовать и в Лиспе, но в нём они не имели критически важного значения).
Выше лямбда-исчисления пока ничего нет, так как отсутствует соответствующая математическая проработка.

Программирование, как относительно новая отрасль, кажется страной возможностей, наполненной демократическими порядками. Если же присмотреться повнимательнее, то в ней, как и везде, существует жёсткая функциональная иерархия: учёные, инженеры, техники. Первые разрабатывают теоретические модели (вроде того же лямбда-исчисления), вторые (лет 30-50 спустя) начинают их использовать и строить прикладные средства для них, третьи оперируют исключительно "стандартами", "лучшими практиками", "что сейчас модно" и т.п., попросту говоря, делают работу так, как определено другими.

Чтобы сравнивать уровень абстракции языков, нужно смотреть не с точки зрения инженеров (и тем более, техников). Инженеры обычно не хотят изучать абстракции, но их вынуждает к этому растущая сложность среднестатистического приложения: невозможно контролировать большое количество прикладной логики, не имея ёмких языковых средств для её выражения и для повторного использования алгоритмов. 50 лет назад программистам хватало модульности и трёх типов данных (символ, целое число, вещественное число) с возможностью организации их в массивы. 40 лет назад признаком высокого уровня языка считались условный оператор, цикл, процедура, статический контроль типов и типы данных "структура" и "массив". 20 лет назад никто не мыслил высокоуровневый язык без сборщика мусора, разделения интерфейса и реализации, параметрического полиморфизма. 10 лет назад начали задумываться о выводе типов и лямбдах и перестали, наконец, уповать на бестолковый объектный подход. Сегодня популярны монады, декларативный подход хотя бы к некоторым частям приложения, отказ от переменных и состояния. Глядишь, и до каррирования и остальных серьёзных вещей когда-нибудь дорастут. Техники же вообще никогда ничего не хотят изучать: им нужно дать в руки дрель и инструкцию по ней и показать, где сверлить дырку.

Инженеры выбирают язык самого низкого уровня, который может предложить требуемые им фичи. Поэтому, скажем, декларативность часто реализуется кодогенераторами вроде Mustasche, для деструктуризации и val-ов джава-комитет выбрал самые идиотские из всех возможных способов, а в C++ метапрограммирование на трёх уровнях реализовано тремя в корне отличающимися синтаксическими моделями (не говоря уже о синтаксисе лямбд - он ужасен). Мейнстрим - это выбор инженеров, некий медианный язык. А техники обычно ничего не выбирают, а если где-то и пытаются ("у нас отжайл, мы сами всё решим"), то получается лишь очередной провальный проект.

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

А что касается низкоуровневых языков, то есть ещё кое-что под машинным кодом. Например, у Интела в x86 уже третье десятилетие есть концепция микроопа. Процессор на лету разбирает инструкции, дробит их на эти микроопы, самостоятельно определяет зависимости между ними, перемешивает их и исполняет. И самый низкий уровень - это сами микросхемы (ядра процессора, память и т.д.). Ещё в 1990-х бывало, что инженер-электронщик для своих задач паял плату, чтобы не изучать язык программирования. Сейчас, наверное, такого уже не встретишь, все платы паяют в Китае.
Алмас Кулмагамбетов
Алмас Кулмагамбетов
26 066
Лучший ответ
Хочу огорчить. Авторы яп не устраивают ралли, кто круче, и кто "высокоуровневей". Просто потому, что понимают, что это глупость.
Почему ты решил так сформулировать вопрос, задавай его сам себе
Игорь Скрипкин
Игорь Скрипкин
64 459
Руслан Улукбекович Лично для меня высокоуровневость это плохо, так как я принадлежу той касте программистов которые считают что хороший программист должен знать как работает каждая строчка его кода, это во-первых, во-вторых этот вопрос я сформулировал из личного интереса, я отлично знаю что сравнивать языки программирования это глупость
Рахметолла Бейсеков Эм... Может у автора вопроса ДЗ такое. Что за тупость писать задавай вопрос сам себе. Тут люди вообще-то чтобы у других спрашивать и помогать, а не писать всякую ересь. Свой ответ я уже опубликовала, поэтому пишу не просто так
Рахметолла Бейсеков Твоё мнение. Тем более я написала "ДУМАЮ". Просто некоторые программисты идут изучать более сложные языки программирования, а потом более высокооплачиваемые и востребованные. <Я соображаю по этим критериям. Я возмутилась тем, что Вы написали "задавай его сам себе". Можно было и без этого, так как тут люди собрались помогать друг другу. Почитай устав ОТВЕТЫ MAIL.RU Там есть страница с правилами и "как написать хороший ответ". Сам посмотри в чём твоя ошибка, и почему я возмутилась
А почему ты считаешь, что уровень Python выше уровня Ruby, JavaScript или PHP? Какие у тебя аргументы в пользу именно Python?

Scratch - это не высокоуровневость, а тривиальный способ записи алгоритма в виде блок-схемы. Помнится, нечто подобное было в конце 1980-х для Pascal - на ДВК с символьным монитором.
СС
Сергей Сокол
67 625
Руслан Улукбекович Я не знаю, по этому я и спросил, знал бы не спрашивал
Андрей Ковалёв Нн- опечатка
Какой-нибудь декларативные, логические языки.
Михаил Куршев
Михаил Куршев
88 801
Сейчас всё большую популярность приобретают программы на нодах. Функции представлены как блоки на визуальной схеме. Эти блоки можно соединять между собой и программировать алгоритмичную обработку данных. Есть видеоредакторы и графические редакторы. Мне, например, понравился векторный редактор для создания инфографики и визуализации данных NodeBox: http://www.newart.ru/htm/myzavr/mz192.php
Сергей Горащук
Сергей Горащук
96 452
Например Aladdin(финансовая программа в Black Rock) написан на Julia, первоначально он был написан на C++, Java и Perl
Alex Terenya
Alex Terenya
58 461
матерный
АК
Артур Ким
47 582
"Так, разработчики Icon (и его диалекта Unicon (англ.)рус.) описывают его как VHLL. К языкам сверхвысокого уровня также часто относят такие современные сценарные и декларативные (в частности функциональные) языки как Ruby, Python, Haskell, 1С, а также Perl и предшествовавший ему мини-язык AWK"
Цитата вики
Валерий Шкарин
Валерий Шкарин
31 428
Руслан Улукбекович Ахах, только что читал)))
Языки метапрограммирования
Дмитрий Мохнев
Дмитрий Мохнев
18 446
Русский
китайский
Точно не ассемблер.
Думаю С++

Похожие вопросы