LINUX.ORG.RU

Qod. Опубликовал исходники компилятора, над которым работаю

 , qod, ,


4

4

Финально определился с названием языка, подчистил разные хвосты и написал README. Теперь наконец-то можно посмотреть на нечто большее, чем просто фрагменты кода в постах на форуме: https://github.com/wandrien/qod/

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

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

А пока можно посмотреть на сам код вживую.

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

И еще одно.

Эти исходники у меня несколько лет валялись в полуразобранном состоянии. Недавно я закрыл критичные дыры в структуре кода, после чего он стал минимально неужасным.

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

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

формирует мои отношения с читателями кода

Формирует, формирует.

Точнее, с читателями кода — наверное. Но это такая особая категория — всегда найдутся те, кому нравится копаться в слабоструктурированной лапше без документации, по типу «угадай, что делает эта консрукция». Ну хорошо, пусть будут не мусорщики, а египтологии/любители головоломок, полтора инвалида.

С теми, кто мог бы заинтересоваться самим языком на более высоком уровне — таки формирует.

следует вообще никогда ничего не публиковать

Годный план.

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

на фоне намного более спорного select case case case

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

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

В выжал бейсике такое было. Так что поздравляю, ты переизобретаешь бейсик.

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

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

Нет, это про CoffeeScript.

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

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

Нет, это про CoffeeScript.

Нет, это про Forth и ему подобные.

Разве CoffeeScript конкатенативный? Обычная надстройка над JS, нафиг никому не нужная, с кучей привычных сишных скобочек.

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

Кстати раз уж зашел разговор про бейсик, напомню, как в VB выглядят циклы

Нормально выглядят. Как инструкция для дебила: дошёл до loop, вернись к do. Так что присмотрись к VB, там много годноты.

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

Кстати раз уж зашел разговор про бейсик, напомню, как в VB выглядят циклы:

Я рассматривал вариант ввести в качестве цикла с пост-условием такой вариант:

loop
  тело цикла
repeat while условие;

loop
  тело цикла
repeat until обратное условие;

Либо оставить только вариант с прямым условием и уволить лишнее ключевое слово после repeat:

loop
  тело цикла
repeat условие;

Но тут людей вон даже от when порвало. А такая запись цикла еще сильнее устроит пожар.

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

Так это главная фича бейсика.

Главная фича бейсика - это что первоначально он влезал в ПЗУ восьмибитной машины.

Все остальные VB и VB.NET это попытка MS оживить помершую, но когда-то любимую лошадь. Однако эта попытка не лишена изящества.

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

Либо оставить только вариант с прямым условием и уволить лишнее ключевое слово после repeat

Вообще необходимость писать (и главное - читать) обратные условия в repeat until делает мне почти физически больно как человеку, который лет 20 пишет на ЯП, унаследовавших do while от Си:

char str2_return_buff[bitsizeof(word) + 2];

char @str2(word Value; word Base; char Sign)
	char @Buff = @str2_return_buff;
	char @Digit="0123456789ABCDEF";

	word I = countof(str2_return_buff) - 1;
	Buff[I] = #0;
	repeat
		dec I;
		Buff[I] = Digit[Value % Base];
		Value = Value / Base;
	until Value == 0;

	if Sign != #0 then
		dec I;
		Buff[I] = Sign;
	end

	return @Buff[I];
end

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

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

Многие влезали, и влезают.

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

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

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

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

Вообще если абстрактно рассуждать, то да – repeat until имеет очень цельный смысл. Эта такая штука, которая «не пускает дальше тех, кто не прошел проверку и заставляет переделывать то, что выше по тексту».

Но это наверное тот случай, когда brain damage после Си неустраним.

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

Это условие, которое верно сразу по тексту после условия.

А, и еще.

Чтобы это имело смысл как цельная концепция, необходимо запретить break в таких циклах.

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

Я рассматривал вариант ввести в качестве цикла с пост-условием такой вариант

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

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

классический if

это арифметический IF statement с ветвлением на три результата

https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn9p/index.html

cat t.f; f77 t.f && ./a.out
        A = 1
        B = 2
        C = -3
        D = B**2 - 4*A*C
        IF (D) 10, 20, 30
30      PRINT *, ( SQRT(D) - B )/2/A
20      PRINT *, ( - SQRT(D) - B )/2/A
10      CONTINUE
        END
t.f:5:72:

    5 |  IF (D) 10, 20, 30
      |                                                                        1
Warning: Fortran 2018 deleted feature: Arithmetic IF statement at (1)
   1.00000000
  -3.00000000

Логический IF с предикатом добавили чуть позже

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

реально классический(ариф) это трипути sign

откуда взято что закорюка изображающая if в фортране - это и есть «классический if».

классический if это правило вида

"if" bool_exression "then" operator
"else" operator
alysnix ★★★
()
Ответ на: комментарий от alysnix

был Такой МакКарти(elefant его) - апосля ариф if Бекуса&Ко

ОН предложил многопутевой cond - комитет отказался и только после всё заверте в lisp'е

if then else появился чуть позже и парралельно с генезисом скобок скобкофилов

классика локальна :)

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

"if" bool_exression "then" operator "else" operator

К 1960 напридумывали и не такое:

IF X EQUALS Z THEN MOVE A TO B; 
	OTHERWISE ADD A TO C AND ALSO IF NOT POSITIVE,
	GOTO ERROR-ROUTINE; OTHERWISE ADD A TO B AND ALSO PERFORM PATH-1 THRU PATH-6.

https://bitsavers.computerhistory.org/pdf/codasyl/COBOL_Report_Apr60.pdf?page=35

vM ★★
()

больше треша и угара ! надо по ключевым словам и иероглифам переплюнуть це-пе-пе...

можно ли в рамках концепции(а она есть ли вообще?) переопределить if..или сделать свой until..repeate ??

пока-что это чистый паскаль в который зачем-то запихивают невпихуемое. Вот был-же ту-же на ЛОР некий язык с «ежели A поболее Б знать <действие>».. «повторям <действо> покуда <условие>»

даже чистый паскаль, итоговая кодо-генерация максимально лаконичная, было-бы интереснее. Как tinyc

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

переопределить if..или сделать свой until..repeat

Макросов не хватает, это точно. Настоящих макросов. Таких, чтобы можно было написать макросы на макросах, выраженные макросами. И каждый пишет свой if. И документация к самому языку тогда тоже не нужна.

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

Зачем в C switch если есть if?

if - это выбор по разным булевским выражениям.

switch - это множество вариантов одного! арифметического выражения.

код у этих операторов разный вообще.

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

что для одного константа для другого переменная

ващет набор проверок и есть число

да же если есть побочки проверок это всё отображаемо в число с побочками

чуствую без работы люди с цпш не остануться

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