Критерии идеального ЯП
От: Буравчик Россия  
Дата: 06.08.24 10:20
Оценка:
Какими свойствами должен обладать идеальный язык программирования общего назначения?

Что в нем должно быть, а что не должно быть?
Как он должен работать, а как не должен?
Что он должен поддерживать, а что, наоборот, не должен?
И т.п.
Best regards, Буравчик
Re: Критерии идеального ЯП
От: Osaka  
Дата: 06.08.24 10:59
Оценка:
Б>Какими свойствами должен обладать идеальный язык программирования общего назначения?

Британский учёный Тони Хоар, автор алгоритма быстрой сортировки, предложил такие критерии:

Простота — чтобы программист быстро разобрался в инструментах языка.
Безопасность — чтобы программист не тратил лишнее время на поиск ошибок.
Быстрая компиляция — чтобы программист не тратил время в процессе отладки.
Эффективность — чтобы программа не «ела» слишком много памяти.
Читабельность — чтобы программист не мучился, разбирая чужой код.

Re: Критерии идеального ЯП
От: Privalov  
Дата: 06.08.24 10:59
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Какими свойствами должен обладать идеальный язык программирования общего назначения?


Сдаётся мне, такого языка не существует и вряд ли когда-нибудь он появится.
Я считаю, что для суровых вычислений не придумали ничего лучше Фортрана. Говорят, что в последних стандартах с ним всё плохо. Но я имею в виду тот Фортран, с котоым работал — Фортран 77 стандарта 90-95.
Для низкоуровневых вещей Си подходит. Я вставки на нём к Фортрановской программе делал, позднее JNI.
Для веба — просто не знаю. Я в вебе гуманитарий.
Для БД запросы нникто не отменял.
Ленивые вычисления — это здорово, но не всегда они годятся.
Ну и т. д.

Б>Что в нем должно быть, а что не должно быть?

Б>Как он должен работать, а как не должен?
Б>Что он должен поддерживать, а что, наоборот, не должен?
Б>И т.п.

Всё-таки предметная область решает. Где-то сборка мусорв должна быть, а где-то она будет только мешать. Где-то нужны вычисления с фиксированноф точкой, где-то нет. Вон в PL/1 пытались затолкать всё, что можно.
Сегодня основной ресурс — время разработки.
Re: Критерии идеального ЯП
От: vsb Казахстан  
Дата: 06.08.24 12:34
Оценка:
Вообще весь девиз должен быть: "минимально достаточный"

1. Минимальный набор фич. Ничего лишнего. Честно говоря я не знаю, какой язык из существующих взять за пример. Очень грубо — Java 1.4. Но всё же не совсем то. Я на самом деле периодически начинаю думать над тем, какой набор фич минимальный и в то же время достаточный для создания софта произвольной сложности и вопрос этот сложный. Пока до готового результата не додумался.

2. Максимально простой и понятный инструментарий. Тут Go можно взять за пример. В стандартной поставке должны быть все инструменты, которые нужны любому программисту. Минимальные и при этом достаточные.

3. Максимально жёсткие и однозначные соглашения. Ни у кого не должно возникать мыслей о том, использовать ли пробел или таб для отступа. Система форматирования должна быть встроена в инструментарий, язык должен не давать никаких вольностей. Что-то вроде Prettier.

Язык должен переписать всё, не использовать ничего готового. Не использовать libc, ld, llvm, всё это на свалку истории.

Язык должен быть многоуровневым. На самом низу это ассемблер. Тут ничего изобретать не надо, ассемблер штука достаточно однозначная. Поверх него что-то вроде урезанного C. На этом наборе можно написать любой низкоуровневый софт, где надо считать байты и такты. Уровнем выше первая стандартная библиотека. Опять же что-то вроде libc, но сделанная по уму. На этом наборе можно писать низкоуровневый софт, где надо считать килобайты и миллисекунды.

Уровнем выше GC и вторая стандартная библиотека, всё, что требует GC или серьёзных "ненулевых" абстракций. На этом уровне уже можно писать софт произвольной сложности. Также на этом уровне добавляются исключения, недо-ООП и похожие языковые средства, требующие нетривиальной реализации, но ощутимо упрощающие процесс разработки ПО.

В целом стандартная библиотека должна быть минимальной и даже где-то недостаточной. Её главная цель — обеспечить общие интерфейсы. К примеру hashmap в стандартной библиотеке не нужен. sort в стандартной библиотеке не нужен. А вот некий интерфейс map — нужен. Для конкретной реализации подключайте популярную в этом году библиотеку. Все стандартные библиотеки устаревают со временем, но при этом выкинуть оттуда ничего нельзя. Поэтому в ней должно быть то, что со временем не устаревает и ничего более.

Система типов должна быть тоже минимально достаточной. Однозначно не должно быть ничего, похожего на генерики и тд. Повторюсь, что-то вроде Java 1.4.

Проблема метапрограммирования должна решаться через явную генерацию кода. Это должно быть встроено удобным образом в систему сборки, IDE должно показывать всё автосгенерированное, код должен быть хорошо отформатирован, должны быть удобные встроенные API для генерации кода в виде AST и тд. Т.е. если тебе очень захотелось написать hashmap<T>, то тебе это должно быть относительно легко доступно, но при этом весь сгенерированный код должен явно лежать в понятных местах и быть доступным программисту обычным образом.
Отредактировано 06.08.2024 12:39 vsb . Предыдущая версия .
Баг
От: Аноним Казахстан  
Дата: 06.08.24 12:35
Оценка:
Отредактировано 06.08.2024 12:37 vsb . Предыдущая версия .
Re: Критерии идеального ЯП
От: Shmj Ниоткуда  
Дата: 06.08.24 13:18
Оценка:
Здравствуйте, Буравчик, Вы писали:

Б>Какими свойствами должен обладать идеальный язык программирования общего назначения?


Да оно ж с небес не берется. Длительный процесс эволюции языков.

Вот есть C#/Java/TypeScript/C++ — это и есть то, к чему пришло человечество за миллионы лет своего существования. А возможно и во все Вселенной ничего лучшего нет

Берете самые популярные языки и смотрите.

По большому счету они все очень похожи.
Re: Критерии идеального ЯП
От: SergeyIT Россия  
Дата: 06.08.24 20:19
Оценка: +1
Здравствуйте, Буравчик, Вы писали:

Б>Какими свойствами должен обладать идеальный язык программирования общего назначения?


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