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)

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

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

В общем у тебя не 1С. 1С — это Visual Basic по-русски, а у тебя прообразом явно что-то паскалеподобное выступает (не питон, иначе синтаксис был бы отступами). Предыдущий паскаль по-русски: Рапира. Если не видел, то рекомендую ознакомиться.

monk ★★★★★
()

Отличный ЯП, прям как в глаза нассали

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

фнкц, кнцклсс, кнцфнкц, змн н {}, бдт кмпктн бъвлн нд сдлть тдльн, ндбн срз псл фнкц псвть см фнкц.

Теперь вы понимаете каково мусульманам. У них без гласных весь Коран (канонический текст).

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

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

Это все так, но комментировал часть про запятые и точки – синтаксически это зло.

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

Кто-то сделал так однажды с create.

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

Я не попадаю в критерий: не петросянил по поводу языка ТС. Перди в лужу дальше.

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

вот почему они такие злые. нелегко им такое читать.

mir-inoy ★★
()

отсыпьте автору гласных, сколько кому не жалко

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

И не говорите. Вот до чего лисп людей доводит.

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

Теперь вы понимаете каково мусульманам. У них без гласных весь Коран (канонический текст).

В иврите, вроде, так же? Только во всём языке.

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

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

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

َ — фатха; ِ — касра; ُ — дамма; ْ — сукун.

Если после буквы следует звук «а», над ней ставится наклонная чёрточка, которая называется «фатха». Если после буквы следует звук «и», чёрточка ставится под буквой, и называется «касра». Звук «у» обозначается надстрочным значком «дамма», похожим на маленькую запятую. Если после буквы нет гласного звука, то над ней ставится «сукун» — маленький кружок.

Гласные звуки передаются с помощью специальных значков огласовок (ивр. ‏ניקוד‏‎‎‎ — некудо́т), состоящих из комбинаций точек и штрихов, ставящихся вокруг буквы (сверху, снизу, слева). Гласный звук, соответствующий значку огласовки, произносится после буквы. Если после согласного звука нет гласного, под буквой ставится нечитаемый значок шва (ְ). Иногда огласовочные точки и штрихи комбинируются с четырьмя «матерями чтения»; в этом конкретном случае, эти буквы уже не читаются как согласные, а используются для передачи гласных звуков. (Об этом см. ниже). В подавляющем большинстве текстов значки огласовок не пишутся. Огласовки ставятся лишь в

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

и некоторых других текстах.

redgremlin ★★★★★
()

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

Походу, таки не взлетит. Представьте себе RMS или Линуса или даже нелюбимого всеми Поттеринга в позе «дайте денюжек, открою исходники». Не представляете? Я тоже.

anonymous
()

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

В голос.

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

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

До XI века Коран записывался куфическим письмом без огласовок.

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

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

Ок, теперь я знаю больше.

DarkEld3r ★★★★★
()

Диагноз

Больной ублюдок (с)

anonymous
()

Если серьёзно, то довольно занимательно. Единственное, чего не пойму зачем было брать lisp за основу. Да, он идеален во многих отношения, но если цель хотя бы частично касается задачи переводить часть проектов с 1ски или переманивать разработчиков на ней, то может быть всё таки выбрать javascript? Всё таки браузер есть везде. Ну да ладно, всё равно интересно.

И ещё, насколько будет совместимость с 1ской? То есть какая тут вообще задача стоит? Если язык несовместим, то почему он похож на 1с?

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

«Отныне» для констант?

«ВоВеки»

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

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

Я купил сегодня 6 книг по 1С. Пока я не найду работу, данный проект приостановлен. Может быть, в зимний «мёртвый сезон» смогу уделить время.

Открытия исходников не будет.

А теперь до свидания. С конкретными предложениями обращаться на

budden73@mail.ru

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

Открытия исходников не будет.

Просто из любопытства: что тебя в открытии исходников пугает? Думаешь будут смеяться и тыкать пальцами? Тему ведь создать не постеснялся, да и уверяю тебя - никто даже смотреть не будет. Посчитай количество открытых проектов на гитхабе/битбакете и 90% (в лучшем случае) из них никому нафиг не нужны.

Или боишься, что украдут сорцы и идею? Или какие ещё мотивы?

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

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

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

да разве не ясно? Тут он переделал стандартную readtable и получил тот же лисп, но в другой обёртке. А так бы ему пришлось не дай Б-г свой интерпретатор писать или даже компилятор

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

Typical attention whore

Открытия исходников не будет.

А теперь до свидания. С конкретными предложениями обращаться на

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

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

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

Вы антисемит?

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

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

А вы откуда так много знаете?

Использую бездонные возможности интернета.

Вы из ИГИЛ?

Упаси боги!

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

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

Блин, слова перепутал, надо было «юдофоб» ))

anonymous
()

смеяться и говорить «ненужно»

подтверждаю, заканчивай ты это дело

I-Love-Microsoft ★★★★★
()

Поскольку всё равно ищу работу, решил вывесить анонс по постоянному адресу и дать на него ссылку.

http://rosinmn.ru/ecovillage/lisp/announce_lang.html И резюме там же рядом http://rosinmn.ru/ecovillage/resume-site.rtf

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

По некоторым параметрам он

превосходит все современные популярные и набирающие популярность языки, в т.ч. С++, Java, Go, Rust, Python.

луль

anonymous
()

все компоненты системы находятся под пермиссивными лицензиями
(BSD,MIT,Public Domain), хотя юридический статус этих лицензий для России требует уточнения.

Исходники где?

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

луль

Ну если считать «ключевые слова в кириллице» преимуществом, то наверное да. Хотя с такими заявлениями надо осторожнее.

DarkEld3r ★★★★★
()

кнцклсс

Тебе гласные не завезли? ;)

Ken Thompson was once asked what he would do differently if he were redesigning the UNIX system. His reply: «I'd spell creat with an e.»

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

В чём rtf не открывается? Я делал open office-ом. Или ты попал на тот момент, когда туда залился случайно кривой файл.

Извините, тему языка больше не обсуждаю.

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

а, понятно, это хорошо. Я подумал, что речь об опциональной типизации, которая в Rust невозможна.

sevenredlines
()

смвл
кнцклсс
кнцфнкц

То есть надо запоминать аббревиатуры? Проще английские слова тогда уж запомнить. Особенно учитывая, что у тебя половина слов всё равно англоязычные, только написанные кириллицей, например «Постгресс» и «Сервер»

Xenius ★★★★★
()

P.S. а проект clcon при этом продолжает потихоньку ползти - буду стараться хотя бы раз в две недели урвать полдня и что-нибудь закоммитить.

Проект clcon является необходимой и неотъемлемой частью проекта языка.

Если есть желающие посодействовать, то можете присылать патчи - багов там вполне достаточно на любой вкус.

Можете допилить новый функционал - из наиболее очевидного не хватает подсказки по параметрам при вводе функции (для этого в SWANK есть серверная часть), закладок в редакторе и массовой замены в файлах.

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

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

Можете допилить новый функционал

Когда кто-то путает «функционал» с «функциональностью», в мире умирает один котёнок

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

Когда кто-то путает «функционал» с «функциональностью», в мире умирает один котёнок

Какая прелесть.

anonymous
()

Что за плод насильного коитуса 1сника и лиспера?

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

Еще один любитель по книгам учиться. Работать иди, джуниором, падаваном к грамотному 1С-мастеру. Может хоть так человеком станешь.

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