LINUX.ORG.RU

Ну ладно, можно смеяться и говорить «ненужно»

 ,


7

6

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

Он начался с того, что по работе понадобился транслятор с языка 1С и будет он примерно таким:

  • ключевые слова в кириллице, заточен на русскоязычных пользователей
  • работает через трансляцию в Cl
  • семантика от CL. Пока мало сделано, постепенно буду достраивать мосты до недостающих частей. Но некоторые вещи в семантике CL не годятся и будут заменены (модули, #., на другие пункты будем смотреть)
  • RAII - подобные конструкции
  • опциональная статическая типизация
  • элементы ФП: декларации для контроля мутабельности. Замыкания.
  • eval, REPL
  • опциональные типы примерно как в Rust
  • исключения и отладчик как в лиспе (вызов отладчика до раскрутки стека, во многих случаях возможность выкрутиться из ошибочной ситуации и продолжить выполнение)
  • треды
  • пошаговая отладка отдельных тредов, а также трассировка в лог или на экран
  • лицензия - пока не знаю. Скорее всего MIT, но нужно понять, как всё это соотносится с местным законодательством
  • файлы описания интерфейсов отделены от реализации этих интерфейсов, как в С (спасибо за участие в обсуждении)
  • горячая замена кода, естественно
  • сборка мусора
  • парсер линза, т.е. сразу создаётся фундамент под средства обработки исходников, как в CLang
  • совместное развитие среды, языка и инструментов - для этого я и запилил clcon
  • интерфейс к C (с ограничениями на применение сигналов и тредов в библиотеках)
  • встроенные sql запросы и вообще возможность встраивания других синтаксисов без специального закавычивания - с поддержкой со стороны среды
  • гуй на tcl/tk по технологии клиент-сервер. После версии 1.0 можно обсуждать Qt, но вряд ли будет слой переносимости между разными GUI. Возможно, будет генерация tcl/tk из крупных блоков по метаданным (это для бизнес-приложений скорее).
  • базовая реализация CL - SBCL (из-за лицензии).

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

// -*- package :S2TEST ; coding : utf-8 ; encoding : utf-8 ; -*-
/*
(in-package :s2test)
(named-readtables:in-readtable :buddens-readtable-a)

модуль Пример1;
*/

клсс к () ;
  а : строка = "базя" ;
  б ; 
кнцклсс

клсс к2 (к) ;
  в ; 
кнцклсс 

// здесь полные слова, потому что редкое слово
ГлобальнаяПеременная э;

фнкц МояСтраница() : строка ; 
 перем рез;
 ПостгресСОтдельнымПодключениемВДаннойНити();
 ПостгресПодключиться("db1","pguser","uio123","192.168.184.128");
 //ВОтладчик("ура!");
 рез = "<html><body>Поля глоб. перем. э k2</p>";
 рез = рез + ПоляИЗначенияЭкземпляра (э);
 рез = рез + "<p>" + строка(ПостгресЗапрос("select * from ошибка")) + "
 </p>";
 рез = рез + "<br><a href=""/"">Домой</a></body></html>";
 ПостгресОтключиться();
 Возврат рез;
кнцфнкц

ЗапуститьВебСервер(2425);
ВебСерверГлотатьОшибки(1);

СоздатьГенерируемуюВебСтраницу("/ura",смвл("S2TEST::МояСтраница"));

э = СоздатьОбъект(смвл("к2"));
э.б = 2; 
э.в = 3;

Если найду тех, кто будет пилить со мной или, ещё лучше, даст денег на разработку - открою исходники.

★★★★★

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

ключевые слова в кириллице, заточен на русскоязычных пользователей

Но зачем? Выглядит как бейсик, переведенный промтом.

клсс к () ;

Сэкономил одну букву, а читаемость ухудшил.

кнцклсс

Это вообще вин, я считаю. Почему тогда конец блока функции обозначается КонецФункции? Единообразие должно быть же.

hippi90 ★★★★★
()

СоздатьГенерируемуюВебСтраницу(«/ura»,«S2TEST::МояСтраница»);

и в итоге как называется страница-то?

Rastafarra ★★★★
()

клсс
Функция

почему не фнк() или проц()? Неоднородный код получается...

Deleted
()

aнонiмуса в тред! И царька. И напильника. И вообще ты сейчас только что призвал всех демонов адалора

anonymous
()

клсс

Прочитал как КПСС. Подумал началось.

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

Оно потом превратится в СоздатьГенерируемуюВебСтраницу(«/ura»,смвл(S2TEST::МояСтраница)) или в СоздатьГенерируемуюВебСтраницу(«/ura»,ФункцияСимвола(S2TEST::МояСтраница)) Пока не знаю как назвать.

den73 ★★★★★
() автор топика

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

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

почему не фнк() или проц()? Неоднородный код получается...

Потому что сроки. Функция и КонецФункции - это из 1С. А клсс я уже сам придумал. В настоящей версии будет однородно: наиболее часто употребляемые ключевые слова - с выбрасыванием гласных по возможности и в нижнем регистре, а прочие слова - верблюдом и полностью.

Я привёл тот код, который компилируется и работает.

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

ключевые слова в кириллице, заточен на русскоязычных пользователей

масло масляное

СоздатьГенерируемуюВебСтраницу

масло масляное

зы. ты одинэсник чтоле? а я-то думал....

conalex ★★★
()

somequest Учись как не быть пустопорожней бестолковой балаболкой. А ты даже круг не умеешь.

anonymous
()

ВебСерверГлотатьОшибки

В голосину!

anonymous
()

Этот код очень смешной. Спасибо. Удачи проекту.

Weres ★★★
()

Кстати если ты из этойстраны, то напиши в сколково, выбей бабло на импортозамещение. Сейчас это модно, говорят.

anonymous
()
Ответ на: комментарий от deep-purple

забыл написать. Исправляю.

den73 ★★★★★
() автор топика

У тебя ошибки в синтаксисе, пофиксил:

// -*- package :S2TEST ; coding : utf-8 ; encoding : utf-8 ; -*-
/*
(in-package :s2test)
(named-readtables:in-readtable :buddens-readtable-a)

модуль Пример1;
*/

клсс к () ;
  а : стрк = "бз" ;
  б ; 
кнцклсс

клсс к2 (к) ;
  в ; 
кнцклсс 

// здесь полные слова, потому что редкое слово
ГлбльнПрмнн э;

фнкц МяСтрна() : строка ; 
 прм рез;
 ПстгрсСОтдльнмПдклчнмВДннйНт();
 ПстгрсПдклчтьс("db1","pguser","uio123","192.168.184.128");
 //ВОтладчик("ура!");
 рез = "<html><body>Поля глоб. перем. э k2</p>";
 рез = рез + ПоляИЗначенияЭкземпляра (э);
 рез = рез + "<p>" + строка(ПостгресЗапрос("select * from ошибка")) + "
 </p>";
 рез = рез + "<br><a href=""/"">Домой</a></body></html>";
 ПстгрсОтклчтьс();
 Взврт рез;
кнцфнкц

ЗпсттьВбСрвр(2425);
ВбСрврГлттьОшбк(1);

СздтьГнррмВбСтрнц("/ura",смвл("S2TEST::МояСтраница"));

э = СздтьОбъкт(смвл("к2"));
э.б = 2; // нерпавильно транслировалось
э.в = 3;
vurdalak ★★★★★
()
Ответ на: комментарий от Rastafarra

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

den73 ★★★★★
() автор топика
Ответ на: комментарий от vurdalak
модуль Пример1;
*/
мдл Прмр1;

И тебя поправил.

anonymous
()

ключевые слова в кириллице, заточен на русскоязычных пользователей

ужс нх! ннжн.

Psych218 ★★★★★
()

кнцклсс

Не буду оригинальным, это шикарно.

ВебСерверГлотатьОшибки(1);

Порвало.

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

WARNING ★★★★
()

// -*- package :S2TEST ; coding : utf-8 ; encoding : utf-8 ; -*-

Вот здесь ошибка. Правильно:

// -*- package :S2TEST ; coding : koi8-r ; encoding : koi8-r ; -*-

Ну и далее небольшие помарочки:

клсс

Лучше «сословие». Ну и прочие англицизмы подчистить, всё таки «заточен на русскоязычных пользователей».

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

Прстй язк пргрммровня из шкльника сздл n-ский узд.

fixed

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

Логичней так:

функция новыйСайт(Куда: строка, МояСтраница: шаблон): ничего ->
    Индекс = Страница(конструктор),
    Индекс.добавитьСтраницу(тип=Генерируемая, директория=Куда, шаблон=МояСтраница),
конец.
Deleted
()
Последнее исправление: merhalak (всего исправлений: 1)

кнцфнкц

Н охт тпр.

Vonnie - the language.

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

Склонения и спряжения

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

Camel ★★★★★
()

Вызов деструктора:

мамка.впечь

anonymous
()

Слишком непривычный для лисперов синтаксис. Разве не лучше будет так:

открскбчк опрдлт фктрл открскбчк н зкрскбчк
  открскбчк есл открскбчк мнш н 2 закрскбчк
    1
    открскбчк мнжт н открскбчк фктрл открскбчк - н 1 закрскбчк закрскбчк закрскбчк закрскбчк закрскбчк
cdshines ★★★★★
()
клсс ы-ы-ы-ы-ы () ;
  Ъ : строка = "птн пнх";
  Ь ; 
кнцклсс

В общем, веселый язык. Обязательно пиши еще! :)

Zubok ★★★★★
()

начался с того, что по работе понадобился транслятор с языка 1С

Так он будет совместим с 1С? В смысле, чтобы можно было взять кусок кода и без переписывания запустить?

Если да, и если исходники будут открыты, то готов помогать по мере сил.

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

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

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

зы. ты одинэсник чтоле? а я-то думал....

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

Поэтому теперь я _собираюсь_ стать одинэсником.

Завтра я запишусь на курсы 1С. И стану 1С-ником. Потому что это выгодно и есть вакансии в моём городе.

А создавать новый язык программирования - это интересно и в конечном итоге нужно, но у меня больше нет на это ресурсов. Поэтому я и создал эту тему. Если бы не ограниченность в ресурсах, я бы продолжал его тихо пилить дома в одно лицо и вышел на люди уже с версией 1.0. А так приходится выходить с версией 0.1. Но может быть, я ещё и не открою исходники, а положу этот проект на полку и буду пилить его по 2-3 часа в неделю, после дня, проведённого за 1С. Так будет либо до версии 1.0 либо до того, как кто-нибудь другой создаст аналогичный язык и сделает эту задачу неактуальной.

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

Фонетически очень даже звучит. В конце файла: ка-эн-цэ-эф-эн-ка-цэ; ка-эн-це-ка-эл-эс-эс.

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

Попиши бизнес-логику на английском, потом поменяйся с кем-нибудь проектами.

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