LINUX.ORG.RU
ФорумTalks

Идея уровня Светоча: единый яызк программирования для всего или группы языков программирования

 , ,


0

1

Сейчас существует множество языков программирования, часть из них имеют различные сферы применения, а часть — имеют одинаковые сферы. Последнее создаёт трудности, так как ограничивает возможности программиста присоединиться к существующему проекту, так как он написан на языке, который тот не знает.

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

Первая идея, программа максимум:

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

Вторая, программа минимум:

Создать набор языков программирования, как минимум два. Один — интерпретируемый с динамической типизацией, а другой — более низкоуровневый, со статической типизацией, на замену C. При этом они должны иметь схожий синтаксис: одинаковый способ выделения блоков кода (а не так, как сейчас, в питоне — отступы, в паскале begin и end, в C --скобки), одинаковые операторы, одинаковые ключевые слова, если они совпадают. Также изначально должна быть предусмотрена возможность подключать к программе, написанной на одном языке модули, написанные на другом.



Последнее исправление: te111011010 (всего исправлений: 1)

Ответ на: комментарий от mandala

А шо, так можно? Можно сделать устройство, которое будет стоить не больше лопаты, весить не больше лопаты и при этом, помимо того, что копать землю, будет ещё летать в космос?

te111011010
() автор топика

если во имя коммунизма - то годно!

conalex ★★★
()
Ответ на: комментарий от mandala

Всё равно ты неправильно сравниваешь.

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

te111011010
() автор топика
Ответ на: комментарий от te111011010

вкратце: нужно уметь во всё это, чтобы описать как будет работать multi-everysing язык.
просто сказать «хочу язык»

  1. multi-paradigm
  2. multi-type system
  3. ...

не прокатит, нужно ещё описать как это возможно сделать и составить списочек.

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)
Ответ на: комментарий от system-root

Ну на примере питона могу предложить, как выглядела бы multi-type system. Сейчас для того, чтобы объявить переменную, достаточно просто присвоить ей значение. Для переменных динамического типа нужно так и оставить. А, если мы хотим сделать статическую переменную, то в первом присвоении нужно добавить перед ней название типа, например

int a = 5
.

Либо другой, более громоздкий вариант, как тип dynamic в б-гомерзком C#: https://habr.com/post/144330/

te111011010
() автор топика
Ответ на: комментарий от te111011010

угу, очень классно придумывать язык начиная с синтаксиса. </s
а я могу теперь эту a сложить с b?

system-root ★★★★★
()
Последнее исправление: system-root (всего исправлений: 1)

Есть такой язык как Haxe. Он не полностью в вашу концепцию укладывается, но всё так-же никому не нужен. Хотя, штука интересная.

DawnCaster ★★
()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от Dred

Не вкладывается в мою концепцию, так как в python и C много различий синтаксиса. Например, в C блоки кода выделяются фигурными скобками, а в питоне — отступами. Логические операции по-разному обозначаются, в питоне — and, or, not, а в c — &&, ||, !. В C нужно строчку заканчивать точкой с запятой, а в питоне — нет.

te111011010
() автор топика

Огласи, кто именно не даёт тебе создать эти гениальные языки.

Deleted
()
Ответ на: комментарий от Dred

Ну ты представляешь, какой будет бардак, если каждый будет перестраивать синтаксис под свои хотелки?

te111011010
() автор топика

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

Это же плюс, а не минус.

Да, в реальности такого не будет, так как кому-то гипотетический новый язык не понравится

Да, чё там может не понравиться? Любая корпорация о таком мечтает.

Создание единого языка программирования, который заменит все высокоуровневые языки программирования от C до python и lisp.

Есть же уже пистон, основная цель которого научить программированию мартышку.

Например, он может не использовать динамическую типизацию

Кто тебе, хипстеру с пистоном, дал право решать, какая типизация мне нужна?

В данный момент.

а другой — более низкоуровневый, со статической типизацией, на замену C

Постоянно пытаються, а сишка живее всех живых.

А зачем линупсов так много? Объединились бы они все, и тогда я смог бы запускать свои игрушки бесплатно без плясок с бубном.

ashot ★★★★
()

Ну на примере питона могу предложить

С этого бы и начал. Я бы не читал и писал многабукв.

ashot ★★★★
()

Эсперанто не взлетит.

kravzo ★★
()
Ответ на: комментарий от te111011010

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

Какого 404? Ну во всяком случае, в арабских странах именно так. Есть язык Корана, он для богослужений, есть современный стандартный арабский — на нём телевидение, книги и тд, сделан на основе языка Корана, но дополнен современными понятиями типа «интернет», для которых по понятным причинам слов не нашлось. А ещё есть диалекты которые во всех странах разные, и звучат по-разному и они для повседневного общения.

Опять же, для православных богослужений используется церковнославянский язык, который действительно другой язык, близкий к языкам бывшей Югославии, типа македонского, а вовсе не особая форма русского.

У католиков для богослужений используется латынь и её приходится учить верующим.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)

Создание единого языка программирования, который заменит все высокоуровневые языки программирования от C до python и lisp.

Есть такой язык, Red на основе Rebol который как раз и соответствует описанной идее.

При этом они должны иметь схожий синтаксис: одинаковый способ выделения блоков кода ..., одинаковые операторы, одинаковые ключевые слова, если они совпадают.

Но зачем? Для разных типов языков хороши разные синтаксисы. Да и для меня например не составляет никакого труда знать синтаксис бейсика, паскаля, C, питона, Tcl и bash, а так же ещё нескольких языков. Сложность совсем не в синтаксисе, который можно изучить за полчаса, а в необходимости запомнить словарь язык, чтобы эффективно им пользоваться.

В естественных языках кстати так же, изучить алфавит совсем несложно, грамматику чуть сложнее, а самое сложное — словарь.

Самый простой синтаксис кстати у Lisp-подобных языков. Есть довольно интересный язык Arc например, который тоже предполагался универсальным языком в некоторой мере.

Один — интерпретируемый с динамической типизацией, а другой — более низкоуровневый, со статической типизацией

Но ведь типизация может быть не только динамической и статической. Есть куда больше вариантов. Тут мне нравится типизация как в языке OCaml например, но она не вписывается ни в то, что ты называешь динамической, ни то что ты называешь статической типизацией.

А главная проблема тут в том, что ты, по всей видимости, знаком с очень малым числом языков, потому тебе и кажется, что их разнообразие можно свести к двум языкам. А на самом деле типов языков много больше и хотя можно было бы объединить похожие языки в один, например Fortran, Algol, Pascal, C, Basic — это всё почти одно и то же, но в других случаях языки существенно друг от друга отличаются.

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

Хотя если очень хочется, то как основу для второй группы я бы предложил Tcl, ибо по простоте и гибкости он значительно превосходит Python, Perl, PHP, Ruby и прочие скриптоязыки и гораздо универсальнее чем Lua.

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 3)
Ответ на: комментарий от Xenius

Кстати ты ещё про одну группу языков забыл — языки интерактивной консоли. Туда относятся bash / sh, fish, tcsh / csh, cmd / command.com, PowerShell.

И вот как раз Tcl ближе всего к языкам интерактивной консоли из тех языков которые традиционно используются для неинтерактивных скриптов.

Xenius ★★★★★
()
Ответ на: комментарий от ashot

А единую еду ты не хочешь?

А почему бы и нет? Проблема в том, что сейчас это дорого, ибо нет массового спроса и массового производства.

Xenius ★★★★★
()

Сейчас существует множество языков программирования, часть из них имеют различные сферы применения

программа максимум: Создание единого языка программирования

«Гарри Поттер и Серебряная Пуля», жанр: драма, ужасы, фантастика.

Nervous ★★★★★
()

Первая идея, программа максимум:
Вторая, программа минимум:

Отлично. Распиши milestones, временные затраты, бизнес-план на ближайшие годы.

pacify ★★★★★
()

программа максимум
программа минимум

Фактически описал Java, когда для неё запилят фичи, находящиеся сейчас в процессе экспериментов и разработки.

foror ★★★★★
()

Не прокатит. Некоторые фичи конфликтуют между собой.

hateyoufeel ★★★★★
()
Ответ на: комментарий от Xenius

Тут мне нравится типизация как в языке OCaml например, но она не вписывается ни в то, что ты называешь динамической, ни то что ты называешь статической типизацией.

Типичная статика. На плюсах всё тоже самое шаблонами делается.

next_time ★★★★★
()

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

Почему же потеряет?

Crocodoom ★★★★★
()

Идея не бредовая. Время от времени она посещает лучшие умы человечества. НО...
Она не реализуема.

Хотя многие понимают, что максимум пять ЯП, включая специализированные типа ассемблеров или ФОРТРАН'а перекрыли бы все потребности специалистов по ИТ.

Deleted
()

На Земле насчитывается более 7 тыс.[1] языков.
Сейчас существует множество языков программирования, часть из них имеют различные сферы применения
сферы применения

Это называется разделяй и властвуй. Нет понятия «сферы применения» языка программирования хомячкам ссут в уши и никто не задумывается. Сфера применения определяется наличием каких-либо функций в STL и всё. Внести в STL все функции и он станет всеобъемлющим...

xwicked ★★☆
()
Ответ на: комментарий от te111011010

такое бывает в некоторых странах типа 404

В 404 ровно полтора языка, и то с натяжкой. Если считать всякие фени и языки падонков, то тогда все мы полиглоты конечно. Лучше бы кетай привел в пример или арабесок каких. И то, это обычная история: лингва франка + язык твоей деревни. По аналогии сишка + nih-язычок от очередной корпорации.

bread
()
Ответ на: комментарий от Deleted

Хотя многие понимают, что максимум пять ЯП, включая специализированные типа ассемблеров или ФОРТРАН'а перекрыли бы все потребности специалистов по ИТ.

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

Xenius ★★★★★
()

Есть грааль, он вроде сейчас уже компилирует яву в бинарь, но потом в одной программе можно будет объединять модули на яве, с++.

Bobby_
()

Rust уже придумали, расходимся.

post-factum ★★★★★
()
Ответ на: комментарий от Xenius

и я придумаю что-нибудь

Я тоже умею придумывать. Но вот если бы тебе, скажем, дали один ЯП (например, Си) и поставили задачу пилить что-нибудь.
Например, БД, там. Или ещё что-нибудь. Системное, скажем.
С блэкджеком и шлюхами.
И пилил ба как миленький. Писал бы либы, изобретал бы костыли. всё на этом вашем богомерзком Си.
Или ты хочешь сказать, что Си не годится для написания БД или системщины?

Deleted
()
Ответ на: комментарий от Deleted

В таком случае можно дать hex-редактор и инструкцию по командам процессора, если уж на то пошло.

Можно делать всё что угодно.

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

Ну например Assembler, C, Tcl, J, OCaml. Что, думаешь, их хватит для всего?

Xenius ★★★★★
()
Последнее исправление: Xenius (всего исправлений: 1)
Ответ на: комментарий от Xenius

нужно много больше, чем пять

Ну хорошо. Я признаю, что в полемике погорячился.

А в целом я клоню к тому, что нынешний зоопарк недоязычков как бы навевает определённые сомнения. Сколько их? 100500?

Deleted
()
Ответ на: комментарий от Xenius

около 30 млн., причем 90 процентов - драйвера, которые не зависят друг от друга.

Bobby_
()
Ответ на: комментарий от greenman

Ты что от баб на аватаре отказался?

Может завтра обратно поставлю, кто знает?..

mandala ★★★★★
()
Ответ на: комментарий от Bobby_

На С нельзя написать сложный проект

С фига ли? Вопрос сложности организации процесса проектирования/программирования не означает невозможности.

зачем Страуструп запилил плюсы

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

Deleted
()
Ответ на: комментарий от Deleted

нынешний зоопарк недоязычков как бы навевает определённые сомнения. Сколько их? 100500?

А нам-то что за печаль? Рыночек порешает, кто из них нужен, а кто не очень.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Ну, пока рыночек порешивает, сотенка-другая шаблончиков таки порастрескивается и парочка-другая миллиончиков долларчиков поутекает в песочечек.

А нам никакой печали, в этом ты прав.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.