Каким должен быть язык программирования? Анализ и критика Описание языка Компилятор
Отечественные разработки Cтатьи на компьютерные темы Компьютерный юмор Новости и прочее

Идеальный транслятор

А этот… э… диван?
— Ручной труд, — быстро сказал Роман.
— Безотказен. Конструкции Льва Бен Бецалеля. Бен Бецалель собирал и отлаживал его триста лет…
— Вот! — сказал лоснящийся Модест Матвеевич.
— Вот как надо работать! Старик, а все делал сам.

А. и Б. Стругацкие «Понедельник начинается в субботу»

            У меня есть идеальный транслятор. Только не подумайте, что я продавец очередного «идеального продукта» с рекламой в духе Голливуда. Я не торгую трансляторами, не ищу пользователей и не собираюсь доказывать, что этот транслятор наилучший. Потому, что придерживаюсь мнения: если Вы сами убеждены, что Ваше программное средство лучшее — радуйтесь втихомолку и используйте его, а не участвуйте в очередной компьютерной «религиозной войне». Ведь все равно убедить в чем-либо участников таких войн невозможно. Как выразился один из завсегдатаев компьютерного форума: «на свете нет ничего такого, что заставило бы нас отказаться от нашей системы программирования».

            Речь о другом. Когда-то в компьютерном жаргоне существовало грубоватое выражение «полировать глюкало». Это означало заниматься ерундой — продолжать улучшать и без того работающую программу. При этом программист никак не мог заставить себя прекратить это занятие, поскольку оно доставляло ему эстетическое удовольствие. Некоторые «полировали» неделями, срывая все сроки и вызывая истерику у заказчиков. А если нет срока сдачи программы, можно ли заниматься этим год? А десять лет? А двадцать пять? Ну, это вряд ли, разве что Вы какой-нибудь граф Монте-Кристо, имеющий в камере замка Иф только листинг одной программы. Да и граф, помнится, просидел всего-то 14 лет. Ну, а совершенствовать двадцать пять лет программу на ассемблере, созданную в 1982 году? Это совсем невероятно: и компьютерный мир был другим, да и какая из тогдашних программ имела бы сегодня практический смысл?

            Тем не менее, и такая программа нашлась, и такой программист (я) нашелся. Прежде всего, замечу, что 25 лет для процессоров не так уж и много. Ведь процессор 8086 выпущен ещё в 1978 году, а 80386 — в 1985. Конечно, потом добавлялись команды вроде SSE2, но принципиальных изменений мало, даже 64-разрядные процессоры не сильно меняют картину. Так, что команды, написанные в 80-х, нормально выполняются и сегодня. А разбираться с командами, а не с текстом на языке высокого уровня пришлось потому, что исходный текст был недоступен. И уж конечно и в мыслях не было, что процесс совершенствования одной программы затянется на долгие годы. Это произошло постепенно, само собой. О результатах этого уникального эксперимента я и хочу рассказать и, думаю, вряд ли кому-нибудь удастся в ближайшее время повторить что-то подобное.

            В свое время мне сильно повезло: первая же серьезная программа, в которой я захотел разобраться, на примере которой учился программированию и которой в итоге занимаюсь почти 25 лет, была прекрасно написана выдающимся специалистом. Звали его Гарри Килдэлл. По логике вещей, он вполне мог бы оказаться на месте Билла Гейтса и, на мой взгляд, это было бы справедливее. Ну, уж как вышло — так вышло. Ходят слухи, что IBM в 1981 году просто ограбила Килдэлла, присвоив его операционную систему CP/M под именем MS DOS (и создав для этого подставную фирму MicroSoft). Любителям конспирологии есть, где разгуляться, тем более что сам Килдэлл погиб в 1994 году при неясных обстоятельствах. Но как бы то ни было, в силу многих и не всегда понятных причин одна из его прекрасных программ так и не нашла массового пользователя ни в 1982 году, когда она появилась, ни позже. Хотя, например, ещё Петер Нортон писал положительный отзыв на эту программу для компьютерного журнала.

            В 1987 году эта программа досталась и мне вместе с компьютером IBM PC XT. Собственно в компьютере кроме MS DOS 3.0, текстового редактора SideKick и этой программы вообще больше ничего не было. А являлась эта программа транслятором с языка PL/1 подмножества «G» (подмножество общего назначения).

            Программистам старшего поколения не нужно объяснять, что такое PL/1 и чем он был в 70-80-ые годы. Жаль, что на «персоналках» все пошло кривым путем бейсиков и Си (но это я опять скатываюсь к «религиозной войне»). Одним из объяснений, почему PL/1 не прижился на персональном компьютере, было отсутствие транслятора. Дескать, язык такой сложный, что транслятор не поместится в памяти. Но, во- первых, транслятор для IBM/360 вообще «помещался» в 64 Кбайта (на самом деле он имел оверлейную структуру). А во-вторых, транслятор-то давно уже был, вот этот самый Digital Research PL/I-86 compiler!

            Сначала у меня ничего не получалось, несмотря на энтузиазм, с которым я взялся за изучение новой системы программирования (была отличная документация на английском). Сыпались непонятные ошибки, нельзя было писать по-русски даже комментарии, а системная библиотека была рассчитана на DOS 1.0. Поэтому я решил разобраться, как все устроено, исправить, что нужно и пользоваться. Но сначала получить текст транслятора как результат дисассемблирования. В конце 80-х без опыта и готовых средств это было очень не просто. Даже получить большую распечатку в виде книги в отсутствии лазерных принтеров было нелегким делом.

            Постепенно все стало налаживаться, выработалась и технология: на распечатке пишутся комментарии к понятым фрагментам, затем комментарии переписываются в файлы исходного текста. В конце концов, вся распечатка покрывалась пометками и засаливалась до такой степени, что приходилось создавать новую, разбирать которую было уже проще. Разгадывание оказалось увлекательным занятием, помню, радовался как ребенок, когда удавалось внести небольшое усовершенствование или просто найти ошибку в трансляторе. Кроме того, разбирательство с транслятором принесло огромную пользу в понимании свойств этого языка и языков вообще, их возможностей и даже замыслов их создателей. Я заметил, что количество ошибок и глупых решений в моих собственных программах сократилось. По мере накопления опыта стали возможными более существенные изменения, например, почему бы не использовать команды сопроцессора? Почему бы не вставить не реализованный оператор PUT DATA ? Каждая новая возможность транслятора немедленно применялась в программах, которые ту же переписывались под новые условия. В основном, я занимался инженерными расчетами и не чувствовал ни малейшей необходимости использовать другие системы программирования, которые наконец в начале 90-х в огромном количестве стали появляться и в нашей стране.

            Через несколько лет я с удивлением увидел, что на персональном компьютере PL/1 использую только я (и маленькая группа моих коллег), а остальные работают или на Си или на Паскале и даже не слышали о трансляторе с PL/1, а новое поколение программистов уже и не знает, что это за язык. Честно говоря, я не расстраивался по этому поводу, поскольку уже привык к сладкому вкусу независимости (считая, что программные средства будут работать так, как я сочту правильным, а не так как кто-то там уже сделал!). В это время стали возможны более сложные доработки: переход от 16 к 32 разрядам и от DOS к Win32. Нашлось и удобное время для продолжения работ с транслятором — длительная дорога на работу и обратно. Конечно, кому-нибудь это покажется ненормальным: ездить годами на работу и чуть не каждый день вертеть в руках одну и ту же распечатку. Но мои соседи по транспорту вообще постоянно решают бессмысленные «японские кроссворды» и им же не приходит в голову, что они просто теряют зря время.

            Постепенно для меня прояснилась и задача: я хочу создать «идеальный» транслятор, программу, где каждая из 29 тысяч команд проанализирована на предмет необходимости и простоты. Каждая команда (раз уж так вышло, что у меня текст только на ассемблере) должна получить правильный и внятный комментарий. Я постараюсь убрать все лишнее, а «освободившееся место» использовать для расширения возможностей транслятора. Я не буду ставить себе никакого конечного срока, т.е. никакая версия не является окончательной.

            Создание «идеального» транслятора не является обязательной работой, а скорее годится в рубрику «развлечения не без пользы». Только ошибки в программах по вине транслятора делают его анализ опять приоритетным. Внося расширения, буду стараться оставаться в рамках языка и дорожить тем огромным практическим опытом по использованию PL/1, который уже накоплен.

            Такой подход сделал долгую работу незаметной и необременительной, а многолетний анализ позволил и без исходного текста разобраться в мельчайших деталях транслятора, понять (и задокументировать) его лучше, чем, вероятно, сам Килдэлл. Т.е. я оказался в роли Бена Гана из «Острова сокровищ», который в своих долгих блужданиях по острову нашел клад Флинта и безо всякой карты.

            Новый «исходный» текст, пусть и на ассемблере, дал возможность продолжить совершенствование транслятора с того места, на котором остановился Килдэлл, а иногда убирать шероховатости, оставленные разработчиками языка. Приведу несколько примеров. Как известно, «главная» программа на PL/1 начинается с заклинания PROC OPTIONS(MAIN). Смысл ключевого слова OPTIONS — в возможности задать параметры, относящиеся не к языку, а к «внешней среде». Это, например, начальный размер стека, который с точки зрения языка бесконечен. Но параметр MAIN как раз относится именно к языку, так же как, например, RECURSIVE или EXTERNAL . И они пишутся безо всякой OPTIONS . Я подправляю транслятор, чтобы MAIN можно было писать и так и так. Тексты старых программ менять не надо, зато в новых программах уже не надо вставлять надоедливую OPTIONS . Изменился ли язык? Формально да, а по сути лишь убрана маленькая «неровность» стандарта. В трансляторе это обошлось всего в несколько команд.

            Другой пример. После ключевого слова окончания процедуры или функции можно повторить её имя. Например, F:PROCEDURE;… END F; Если имя указано — транслятор проверяет его на совпадение с именем в заголовке. Если не указано — транслятор ничего не проверяет. Теперь это правило легко расширяется и на циклы:
DO I=1 TO 100
DO J=1 TO 100;
DO WHILE(…);
…
END WHILE;
END J;
END I;
На мой взгляд, дух PL/1 сохраняется, а доработки транслятора просто ничтожны.

            Следующий пример. Разработчики PL/1 перенесли из Алгола «сложные» циклы, т.е. возможность менять в заголовке цикла сам закон изменения параметра, например, DO I=3,5,100, BY -1 TO 0; Признаком смены «формулы» цикла является запятая, а признаком конца всего заголовка — точка с запятой. Я, например, использую такие циклы вместо конструкции UNTIL , когда первую итерацию нужно выполнять всегда:
DO F2=F(X), WHILE(ABS(F1-F2)>EPS);
F1=F2;
X+=DX;
F2=F(X);
END WHILE;
            В трансляторе я решил довести до конца идею «сложных» циклов и разрешить смену не только закона изменения параметра цикла, но и самого параметра, например, вот задание прохождения по «квадратной» траектории:
Y=0;
DO X=0 TO 99, Y=0 TO 99, X=100 TO 1 BY -1, Y=100 TO 0 BY -1;
ПЕРЕМЕСТИТЬ(X,Y);
END;
            Здесь на самом деле 4 цикла с двумя параметрами и когда один параметр меняется, второй — «замораживается» и остается таким, каким был при выходе из предыдущего цикла.

            Подобных дополнений довольно много, но все они необязательны к применению да и, на мой взгляд, без чистки шероховатостей языка нельзя считать транслятор «идеальным».

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

            Начнем с наименее важной характеристики — размеров транслятора. Я все время стараюсь сделать его как можно меньше, просто потому, что это легко измерить, есть объективный показатель совершенствования. Я отдельно считаю размер команд и статических данных. Это пошло с давних пор, когда ещё было необходимо втискивать команды «прохода» транслятора в 64 Кбайта. Сейчас сокращение на несколько байт не имеет смысла, но все равно приятно, когда при анализе находятся очередные лишние команды. На начало 2011 года размер команд «идеального» транслятора составляет 87091 байт, размер статических данных 182619 байт и, следовательно, весь размер транслятора 269710 байт.

            Я не пытаюсь установить мировой рекорд малости (да и транслятор Лиспа или Форта все равно будет меньше), но уверен, что немного найдется трансляторов с языка такого уровня таких же размеров. Сравните, например, хотя бы с размером файла с данной статьей. Причем, я вовсе не «зажимаюсь» с возможностями транслятора. Он может выдать и распечатку всех имен и результаты трансляции в виде ассемблера (хотя сразу генерирует готовый код объектного модуля) и даже раскрашивает сообщения об ошибках на экране. Т.е. многое можно было бы выбросить без ущерба для функциональности, но тогда какой же это будет «идеальный» транслятор, если нельзя получить, например, распечатку результата анализа в виде обратной польской записи? Для сопровождения это вовсе не роскошь, а необходимость. Несколько портит дело большой размер статических данных, но там львиную долю занимает один буфер внутренних операций (131072 байта). Когда-то он занимал лишь 256 байт, но изящно увеличить его удалось только до 65536 элементов по 2 байта каждый. Одно время я хотел все буфера выделять динамически, но затем махнул рукой. Практического смысла в экономии на данных нет, да и выполняемый модуль у меня один (он включает транслятор, редактор связей, библиотеки и т.п.) размером в полтора мегабайта. Зато для компактности большая часть других статических данных размещена как раз в этом буфере (к моменту его использования эти данные уже не нужны), а остаток места в буфере занимает довольно длинный текст описания ошибок при трансляции, выдаваемый на экран, как справочные данные.

            Обнаружилась любопытная вещь. Оказалось, что «скорость» совершенствования (в данном случае уменьшения размера команд) примерно постоянна уже много лет. Т.е. и здесь действует что-то вроде «первого закона Мура». Но значит, и здесь когда-нибудь сработает «второй закон Мура» — т.е. сокращения закончатся. Можно привести механическую аналогию — сжимание пружины. Увеличивая нагрузку можно заставлять пружину продолжать сжиматься. Но рано или поздно ее витки лягут друг на друга. Дальше можно лишь сломать пружину, но сжать её больше не удастся.

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

            Следующей по важности (точнее, по неважности) характеристикой является скорость трансляции. Когда-то это был очень важный параметр. Помню, первая же более-менее объемная программа транслировалась на IBM PC XT минут шесть. Можно было сходить чаю попить. Конечно, я старался ускорить транслятор, но быстро возросшая скорость самих компьютеров обесценила эти усилия. К тому же мешает отсутствие объективного показателя скорости вроде размера в байтах для предыдущей характеристики. Дело не в том, что хочется засечь микро и наносекунды. Я бы предпочел иметь в процессоре специальную команду типа RDTSC, которая бы считала такты, если управление находится внутри заданного диапазона адресов, а вне этого диапазона такты не меняются. Тогда даже для небольшой конкретной процедуры можно было бы получать некий числовой показатель скорости и смотреть, как на него влияют изменения команд. А так, исправления нескольких команд, обычно никак не ощущаются на скорости работы всей программы. За неимением таких средств, для оценки скорости работы я просто делю объем транслируемой программы на время трансляции и на тактовую частоту процессора. Объем программы можно выразить в байтах или строках. Конечно, строка исходного текста, это очень субъективный показатель, зависящий от стиля программирования, но, тем не менее, почему-то часто принято оценивать объем программы именно в строках.

            На моем компьютере с обычным процессором Intel Core Solo CPU 1.33GHz все 40 модулей программы (моей основной работы) общим объемом 4479812 байт или 148423 строк транслируются за 6382 миллисекунды (время засекает сам транслятор). Это означает, что «идеальный» транслятор работает со средней скоростью 528 байт или 17 строк исходного текста в секунду на каждый мегагерц тактовой частоты процессора. Здесь, правда есть небольшой обман: это время не первой, а второй и последующих трансляций, когда файлы уже попали в кэш Windows. Небольшим обман я считаю потому, что перетрансляции у нас идут десятками с утра до вечера и то, что первая из них проходит медленней, практически незаметно. В указанный объем программы входят, естественно и заголовочные файлы, которые транслятор для каждого модуля разбирает заново, из-за чего объем текста всего проекта становится довольно большим.

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

            Наконец рассмотрим практически единственно важную характеристику современных трансляторов — качество генерируемого ими кода. Но как раз качество кода однозначно оценить сложно. Для разных случаев могут быть разные критерии. Готов признать, что «идеальный» транслятор генерирует не идеальный, а обычный нормальный код. Без сверхсложных оптимизаций, но и без глупых команд типа LEA ESI,[ESI]. Транслятор имеет регистровую модель IA-32, пытается максимально использовать регистры и в сложных случаях распределяет их по алгоритму Биледи. Кстати, в моих прикладных программах до этого алгоритма почему-то дело никогда не доходит. Имеется и поиск часто встречающихся случаев. Поэтому и оператор X=X+1; и оператор X+=1 ; транслятор легко превращает в одну команду инкремента.

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

            Вот так выглядит исходный текст:
TEST:PROC MAIN;
DCL
(I,J,K) FIXED(31),
F ENTRY(FIXED(31),FIXED(31)),
X (100,100) FIXED(31);
DO I=1 TO 100;
DO J=1 TO 100;
F(I,J);
K+=X(I,J);
END J;
END I;
END TEST;
            Вот так выглядит часть программы в обратной польской записи:
…
IID 0 N 1 00 00 I
C4 0 N 0 00 00 #00000001
ILD 1 N 0 01 00
IAS 2 S 0 31 00
WHL 0 N 0 01 00
IID 0 N 1 00 00 I
ILD 1 N 0 31 00
C4 0 N 0 00 00 #00000064
ILD 1 N 0 07 00
ILE 2 N 0 01 00
DOW 1 N 0 01 00
LIO 0 N 1 64 00 N0008
LL4 0 N 0 07 00
FE
IID 0 N 1 00 00 J
C4 0 N 0 00 00 #00000001
ILD 1 N 0 01 00
IAS 2 S 0 31 00
WHL 0 N 0 01 00
IID 0 N 1 00 00 J
ILD 1 N 0 31 00
C4 0 N 0 00 00 #00000064
ILD 1 N 0 07 00
ILE 2 N 0 01 00
DOW 1 N 0 01 00
LIO 0 N 1 65 00 N0009
IID 0 N 1 00 00 I
NID 0 N 1 00 00 #01AEE89B
AST 2 N 0 00 00
            А вот, что получилось у транслятора в итоге:
1 000000 TEST:PROC MAIN;
2 000000 DCL
000000 TEST:
000000 B88C9B4002 mov eax,37788556
000005 E800000000 call ?START
3 00000A (I,J,K) FIXED(31),
4 00000A F ENTRY(FIXED(31),FIXED(31)),
5 00000A X (100,100) FIXED(31);
6 00000A
7 00000A DO I=1 TO 100;
00000A C7050800000001000000 mov I,1
000014 @1:
000014 833D0800000064 cmp I,100
00001B 7F4D jg @2
8 00001D DO J=1 TO 100;
00001D C7050C00000001000000 mov J,1
000027 @3:
000027 833D0C00000064 cmp J,100
00002E 7F32 jg @4
9 000030 F(I,J);
000030 BB589C0000 mov ebx,offset @00009C58h
000035 E800000000 call F
10 00003A K+=X(I,J);
00003A 693D0800000090010000 imul edi,I,400
000044 A10C000000 mov eax,J
000049 C1E002 shl eax,2
00004C 03F8 add edi,eax
00004E 8B8780FEFFFF mov eax,X+0FFFFFE6Ch[edi]
000054 010510000000 add K,eax
00005A FF050C000000 inc J
000060 EBC5 jmps @3
000062 @4:
000062 FF0508000000 inc I
000068 EBAA jmps @1
00006A @2:
11 00006A END J;
12 00006A END I;
13 00006A
14 00006A END TEST;
00006A E800000000 call ?STOPX
15 00006F
CODE 00006F
DATA 009C60
            Как видите, особых изысков нет, но и ужасным такой код назвать нельзя. Обратите внимание на способ передачи параметров I и J внутрь процедуры F через список адресов в памяти, а не через стек. Для рекурсивных процедур это замедляет работу, для не рекурсивных —… ускоряет. Здесь как раз видна противоречивость оценки качества кода. Например, для передачи параметров потребовалось 13 байт (5 байт — засылка адреса списка в EBX и 8 байт на сам список адресов в памяти). Если бы I и J передавались через стек, потребовалось бы всего 12 байт. Однако возврат из процедуры F в данном случае производится командой RET (1 байт), а в случае использования стека RET 8 (3 байта). Какие плюсы, какие минусы перевесят в каждом случае — совсем неочевидно.

            Так можно ли считать этот транслятор «идеальным»? Себе я отвечаю на этот вопрос положительно. Для доказательства и приведены характеристики, которые не получить без многолетней работы. Это буквально «вылизанное» средство, которое постепенно развивалось вместе с эволюцией компьютеров. Сразу такой транслятор создать было бы невозможно. Он уже сильно отличается от исходного: половина команд добавлена вновь, а вторая половина изменена (что ничуть не умаляет заслуг Килдэлла). Новые решения, которые теперь легко добавлять, я сам же проверяю на практике и ими вполне доволен. К тому же, всеохватность языка PL/1 позволила успешно применять его для самых разных задач. «Идеальным» оказался транслятор и для моего руководства: не требуются деньги на лицензионные средства или время на переучивание, а положительные результаты получаются.

            Не всегда транслятор оказывается «идеальным». Например, иногда к результатам его работы с подозрением относятся антивирусы, а программа, которая должна была установить защиту от копирования, вдруг выдала нелепое сообщение: «Ваша программа не предназначена для работы под Windows». Подозреваю, что их сбило с толку отсутствие в программах секции «text». Для тех, кто не знает: когда-то так «умно» назвали раздел EXE-файла, содержащий выполняемые команды. Просто здесь он называется ближе по смыслу: «PROGRM».

            Я с уважением отношусь к советским конструкторам, особенно оружейникам. Их труд и блестящие результаты являются вдохновляющим примером и настоящим, без иронии, идеалом, к которому нужно стремиться. И, на мой взгляд, есть что-то общее между трансляторами для программистов и оружием для военных. При такой аналогии мой транслятор, пожалуй, это пистолет Макарова. Это классическая схема, компактность, надежность и простота. Причем простота конструкции данного пистолета обманчива: за каждой деталью стоит огромный объем поисков и отработок. И статью я хочу закончить цитатой об этом оружии: «С современной точки зрения пистолет Макарова считается устаревшим оружием. Однако и сегодня (через 64 года после создания — прим. мое) он является единственным серийным пистолетом, проходящим [все] комплексные проверки».

Автор: Д.Ю.Караваев. 08.03.2011

Опубликовано: 2018.08.26, последняя правка: 2019.01.29    14:24

ОценитеОценки посетителей
   ██████████████████████████████████████ 10 (90.9%)
   ▌ 0
   ████ 1 (9.09%)
   ▌ 0

Отзывы

     2018/09/22 10:02, Автор сайта          # 

Если не секрет, на чём программируете сейчас, неужели по-прежнему на PL/1?

     2018/09/22 11:22, Д.Ю.Караваев          # 

А по поводу PL/1 — да, используем и тоже, как говорится, «и в ус не дуем». Дело в том, что для инженерных задач он очень подходит. Многие вещи в нем и проще и эффективнее и, что очень важно, проверены на практике за очень долгий период.

Кроме этого, а может быть и главное в этом — это доступность транслятора для исправлений. Например, можно ввести новую систему типов: Типы в инженерных задачах, а можно захватывать максимальные ресурсы при выполнении программы: http://files.rsdn.org/122727/pl1ex22.doc

Так что, вполне себе рабочий язык для вполне себе актуальных задач. Незаслуженно и парадоксально получивший ярлык «дико сложного», притом, что нынешнее поколение программистов вообще считает предыдущее чем-то вроде дикарей с луком и стрелами. Честно скажу, за все время моей карьеры программиста никогда не возникало сложностей в части «как это выразить на языке». Все сложности всегда были по части «как найти решение этой задачи?». Поэтому программы на PL/1 постоянно и успешно работают на борту МКС.

     2018/09/22 12:00, Автор сайта          # 

Для меня PL/1 — это такая далёкая история... Конечно, ПО — не скоропортящийся товар, но факт того, что PL/1 до сих пор работает на современной технике — это, конечно, для меня сюрприз. Про лук и стрелы — это Вы красочно живописали. А что ещё как из современного, так и из «древностей» в РКК «Энергия» используют? Просто любопытно.

Ваше письмо подтолкнуло меня к чтению Википедии насчёт PL/1 :) Как правило, все языки имеют свой сайт: java.org, dlang.org, haskell.org, rust.org, golang.org. А вот про pl1.org в Википедии не пишут. Материалов про него мало.

     2018/09/22 12:42, Д.Ю.Караваев          # 

У нас тоже была попытка создать сайт и даже имя было вполне удачное: http://pl1.su но по некоторым причинам он так и остался замороженым в начальной стадии.

Фраза про «лук и стрелы» попалась мне на одном из форумов. Вроде имелся ввиду АЛГОЛ.

РКК — большая организация, то и инструментальные средства используются самые разные. Наше подразделение чисто «прикладное», руководству всё равно, какими инструментами мы пользуемся. Не просим купить лицензионные продукты, успеваем за развитием возможностей компьютеров — ну и слава богу.В общем-то, PL/1, который для IBM/360, вместе с IBM/360 и ушел. А вот для X86 только жить начал после принятия стандарта ANSI X3.74 в 1987 году.

Ещё могу привести байку (на самом деле это правда), что вместе с первой экспедицией на МКС летел и компилятор с PL/1. Не было уверенности, что ПО связи заработает сразу как надо, да и пропускная способность была даже штатно очень слабая. Поэтому в аварийном случае рассматривался вариант: диктуем экипажу исправления в исходных текстах и перетранслируем на борту. К счастью, такая экзотика не потребовалась.

Напоследок компьютерная байка (к сожалению, забыл, у кого её прочел). Почему PL/1 не вытеснил Фортран и Кобол.

В середине 60-х в американском компьютерном сообществе сложились две группы, условно «инженерная» и «экономическая». Одни использовали Фортран, другие — Кобол. К друг другу относились свысока, почти ненавидели (вроде фанатов ЦСКА и Спартака). При создании нового языка была мысль объединить преимущества каждого из языков в одном и, тем самым, объединить обе группы одним инструментом. Разработчики искренне верили, что программисты благосклонно воспримут новый язык, как следующую ступень развития, уж явно совершеннее и Фортрана и Кобола. В действительности получилось обратное. «Инженеры» возмутились, что в их прекрасный простой Фортран воткнули бухгалтерский ввод-вывод (в PL/1 имеется спецификация вывода дебета/кредита). А «экономисты» возмутились тем, что в их простой Кобол был вставлен целиком Фортран. В результате массового перехода на PL/1 не произошло. Фортран и Кобол продолжали оставаться основными инструментами. И только новое поколение в 70-х, уже не связанное этой «вендеттой» начали пользоваться новым инструментом. Уже искренне удивляясь, почему предыдущие поколения не признают преимущества этого языка, а видят только недостатки.

Такая вот непредсказуемая вещь — язык программирования.

     2018/09/22 14:11, Автор сайта          # 

Интересно, какова степень Вашего авторства на данный момент? Это тот самый изначальный компилятор от главы Digital Research, который развивали и развивали и даже сделали 64-разрядную кодогенерацию? Или Вы на определённом этапе взяли и написали компилятор с нуля и это теперь на 100% Ваше детище? Думаю, ответ на этот вопрос будет интересен не только мне, но и читателям. А он вполне логичен, потому что вопрос авторства в Ваших статьях освещён не был.

     2018/09/22 15:33, Д.Ю.Караваев          # 

Для меня вопрос непростой. Сначала формально нет, не разработчик. И такой задачи не ставилось.

Если Вы поставили себе задачу разработать язык и затем его воплотить в транслятор, то у меня получилось все наоборот: разбирая готовый транслятор, я осознавал возможности языка. Постепенно втянулся и, осознавая возможности и границы языка, начал пытаться их развивать. Так что, в начале не разработчик, а переработчик, а сейчас больше разработчик. Текст транслятора остался на ассемблере, но теперь имеет десятки тысяч комментариев и если выбросить сами ассемблерные команды, то по комментариям останутся понятны все действия при трансляции. От Килдэлла осталось очень немного, хотя следует признать, что скелет транслятора все же сохранился. В целом получается, что и да и нет: и разработчик, и не разработчик.

Имея такой совершенный ассемблерный код, не вижу смысла переписывать с нуля, такого качества уже никому не достигнуть. С проблемой переносимости (с архитектуры x86 на другую) так и не сталкивался, скорее виртуальные машины появятся на всех архитектурах для всех архитектур.

     2018/09/22 16:21, Автор сайта          # 

В целом получается, что и да и нет: и разработчик, и не разработчик.

Но если Вы хотите внести свой транслятор в перечень отечественного ПО, то вопрос об авторских правах надо как-то надо решать.

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

Почему имеет смысл — хотя бы полностью очиститься в вопросе авторских прав :) Но есть другой аспект: если Вы хотите, чтобы Ваш транслятор достался потомкам на века, есть смысл написать его на более понятном языке, нежели ассемблер. Это более лёгкая поддержка — не для Вас, а для потомков. Как вариант, можно переписать транслятор PL/1 на самом PL/1 — дополнительная проверка транслятора.

С проблемой переносимости (с архитектуры x86 на другую) так и не сталкивался

Может, я и не прав, но как мне кажется, что архитектура ARM куда более практична для космоса и вообще бортового оборудования: она энергоэффективнее, на каждую единицу потреблённой электроэнергии приходится наибольшее количество выполненных команд. Архитектура MIPS тоже неплоха в этом плане. И неплохо было бы иметь кодогенератор для LLVM. Но это я сужу со своей колокольни. Вам куда виднее :)

     2018/09/22 17:36, Д.Ю.Караваев          # 

Но раз Вы хотите внести свой транслятор в перечень отечественного ПО, то вопрос об авторских правах надо как-то надо решать.

А стоит ли беспокоиться? Исходный продукт вышел 34 года назад в виде 16-разрядного продукта для MS DOS 1.0 (для MS DOS 3.0 уже были нюансы). Он до сих пор доступен в сети под именем PL/I-86. Его потомок генерирует очень отличный от исходного код и совсем для другой среды. Да и международная обстановка облегчает вопросы о правах :)

Если Вы хотите, чтобы Ваш транслятор достался потомкам на века, есть смысл написать его на более понятном языке, нежели ассемблер. Это более лёгкая поддержка — не для Вас, а для потомков. Как вариант, можно переписать транслятор PL/1 на самом PL/1 — дополнительная проверка транслятора.

Будучи представителем действительно универсального языка, тем не менее, я скептически отношусь к таким вещам как «раскрутка компилятора». Вспоминается шутка 90-х: «транслятор с Паскаля нужен, чтобы писать на нем трансляторы с Паскаля». У меня нет ни физических, ни моральных сил переписывать транслятор, особенно учитывая, что сразу на порядок просядет эффективность и быстродействие. Тем более что две трети транслятора занимает генерация x86, т.е. все равно привязка к командам. Дополнительная проверка транслятора — слабая плата за переписывание. Гораздо эффективнее получаются проверки, когда мы находим нового программиста. В его исходных текстах обязательно найдется что-то неожиданное :)

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

Может, я и не прав, но как мне кажется, что архитектура ARM куда более практична для космоса и вообще бортового оборудования: она энергоэффективнее, на каждый ватт электроэнергии приходится наибольшее количество выполненных команд. Архитектура MIPS тоже неплоха в этом плане.

Будучи сторонником универсального языка, я являюсь и сторонником CISC-команд. В защиту таких команд приведу шуточную аналогию. Знаете ли Вы, что в соревнованиях по плаванию теперь есть специальный судья, который следит за тем, чтобы пловцы после стартового прыжка вынырнули ДО середины бассейна? Так как под водой, понятно, они движутся быстрее. При чем здесь CISC ? А они, набрав себе операндов, тоже «ныряют» вглубь кристалла. И пусть действуют там как можно дольше "не барахтаясь на поверхности", т.е. не обращаясь к медленной памяти. Предельный случай — квадратный корень или тригонометрия в FPU. Вы можете написать свою функцию корня, никаких особых, волшебных команд внутри FPU нет, но он все равно сработает быстрее, поскольку не надо читать команды и обращаться к памяти за данными.

RISC команды работают быстрее, но быстрее ли программы из RISC команд? Это не факт, учитывая, что кристаллы все быстрее и быстрее, а память все отстает и отстает. Архитектура, где любая команда может стать командой перехода, сложна в конвейеризации и выделении линейных участков программы.

Но это я сужу со своей колокольни. Вам куда виднее :)

Да я тоже не господь бог. Сейчас наши программы работают на МКС на обычных ноутбуках под Windows. Ну и одна на контроллере AT90S2313. Особой «космической» специфики здесь нет.

     2018/09/22 18:41, Автор сайта          # 

А стоит ли беспокоиться? ... Да и международная обстановка облегчает вопросы о правах :)

Да уж... У нас есть очень хороший рычаг — угроза пересмотра договоров об авторских правах :)

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

Вы меня удивили! Даже не подумаешь о подобном. Надо взять себе на заметку :)

RISC команды работают быстрее, но быстрее ли программы из RISC команд? Это не факт, учитывая, что кристаллы все быстрее и быстрее, а память все отстает и отстает. Архитектура, где любая команда может стать командой перехода, сложна в конвейеризации и выделении линейных участков программы.

Да я не про скорость, а про энергоэффективность. Фигурально выражаясь, на вычисление квадратного корня х86 тратит 10 джоулей, а ARM — 1 джоуль. А в космосе (да и вообще, в бортовых системах) — каждый киловатт-час на счету.

 Сейчас наши программы работают на МКС на обычных ноутбуках под Windows.

Значит, там всё неплохо с энергоснабжением :)

Ещё мысль про «очистку» авторских прав. Транслятор PL/1, который вы долго «допиливали», был изначально написан, скорее всего, на Си или на чём-то подобном. Но не на ассемблере. А раз так, то Вы можете предъявить миру текст на ассемблере, а вот наследники Килдэлла если что-то и предъявят, так это текст на Си. И даже после трансляции тексты на 90% будут несовпадающи. Когда-то в далёкие советские времена рассказывали случаи из жизни «загнивающих»: два программиста спорили в суде насчёт авторских прав на одну и ту же программу. Выиграл суд тот, который смог показать суду лишние команды, внесённые в программу специально как тайнопись.

     2018/09/22 20:13, Д.Ю.Караваев          # 

Значит, там всё неплохо с энергоснабжением :)

Каждый ватт экономят на спутниках. Здесь все-таки другие масштабы. Кроме этого, это т.н. «компьютеры экипажа». Поэтому взята обычная и привычная среда и техника, а не что-то специальное.

Транслятор PL/1, который вы долго «допиливали», был изначально написан, скорее всего, на Си или на чём-то подобном. Но не на ассемблере.

Транслятор Килдэлла был написан на PL/M. Это нечто среднее между ассемблером и Си.

Поскольку я не собираюсь продавать транслятор в Америке, думаю до суда не дойдет. Кстати, жена Гарри умерла в 2002, насколько помню, у него сын и дочь. А тексты после многолетней «полировки» не совпадают на 100%. Т.е. вообще ничего общего при похожей функциональности.

     2019/04/29 17:21, VIT1972          # 

Дмитрий Юрьевич, а где можно скачать Ваш транслятор?

     2019/04/29 20:47, kt          # 

Эта юмореска была в журнале downgrade №5 за 2012 год (http://www.dgmag.in). В конце заметки была ссылка на Zip-файл. Версия, правда старовата и ещё 32-х разрядная. Но для знакомства подойдет.

     2019/04/30 00:03, VIT1972          # 

Все же хотелось бы последнюю версию. Транслятор развивается?

     2019/04/30 10:08, kt          # 

Да, развивается. Сейчас вот это рабочая 64-х разрядная версия.

http://files.rsdn.org/122727/PLINK64.EXE

     2019/04/30 11:02, VIT1972          # 

Спасибо, попробую.

     2019/05/01 18:41, Comdiv          # 

Программа с выводом одной строки заняла 89600 байт. Можно ли уменьшить runtime, и что в нём?

     2019/05/01 19:49, kt          # 

Например, встроенный отладчик со встроенным дисассемблером. Он запускается, если в командной строке перед параметрами указать два вопросительных знака подряд: t.exe ??123457

     2019/05/03 06:50, Виктор          # 

К сожалению, по скорости счёта в разы уступает компилятору oт IBM. Аналогичная ситуация с линуксовым проектом iron-spring.com, но там, судя по всему, его окончательно забросили.

     2019/05/03 09:54, RZ          # 

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

     2019/05/03 13:10, Виктор          # 

https://cloud.mail.ru/public/4PzN/2GJZVJb4J

История такова: у меня в ЖЖ возникла дискуссия на тему ошибок программ с IBM-овского компилятора при антипереполнении. Собеседник обратился к уважаемому Д.Ю. с просьбой адаптировать тестовую программу под свой компилятор. В корневом каталоге в архиве по ссылке — результат Д.Ю., в папке IBM — результат компиляции моей программы стандартным транслятором. Программка, конечно, примитивная, с более сложными результаты могут отличаться.

Сам по себе IBM-транслятор даёт код где-то на уровне gcc/gfortran или даже лучше по скорости, но проигрывает на подобных вычислительных задачах PGI-компилятору иногда в 2-3 раза и выше при счёте в один поток.

     2019/05/07 14:54, kt          # 

Любопытно. Оказывается, я принял участие в состязании. Мне тоже хотелось бы найти волшебные команды, которые увеличивают скорость в разы. Давайте разберёмся.

Я подправил выдачу в тестовой программке, поскольку оператор TIME в стандарте «G» выдает строку в формате ЧЧ:ММ:СС и нет тысячных, они записываются отдельно в системную переменную ?M_TIME. Кстати, замечу, что время не обязательно измерять дважды, достаточно запоминать предыдущее. В общем, теперь программа выглядит так:
A1:PROC OPTIONS (MAIN);
//---- ОСОБЕННОСТИ КОНКРЕТНОЙ СИСТЕМЫ ----
DCL
?MEMORY FIXED(31) EXT INIT(-1), // РАЗМЕР РЕЗЕРВИРУЕМОЙ ПАМЯТИ
?MASK_87 BIT(8) EXT, // МАСКА FPU
?M_TIME FIXED(31) EXT,
?TST387 ENTRY;

?MASK_87='00001101'B; // МАСКА ИСПРАВЛЯЮЩАЯ АНТИПЕРЕПОЛНЕНИЕ НА НОЛЬ
?TST387; // УСТАНОВИЛИ СОСТОЯНИЕ FPU БЕЗ АНТИПЕРЕПОЛНЕНИЯ

//---- СОБСТВЕННО ПРОГРАММА ----
DCL
T(5000,5000) FLOAT(53) BASED(P), // ЧТОБЫ МАССИВ БЫЛ НЕ В ФАЙЛЕ
P PTR,
MATRIX FILE, // ЧТОБЫ ОТВЕТ ВЫДАВАЛСЯ НЕ НА ЭКРАН
T1 FLOAT(53),
DTM FLOAT(53),
(I1,I2) FIXED(*),
(I,J,L,N,M,DD) FIXED(*),
(TIME1,TIME2) CHAR(8);
ALLOCATE T;
ON ERROR PUT SKIP LIST('ERROR STEP',L,STOP);
T=0;
DO I=LBOUND(T) TO HBOUND(T); T(1,I),T(I,1)=1; END I;
N=5000;

DO L=1 TO 10000;
DTM=0;
DO I=2 TO N-1;
I1=I-1; I2=I+1;
DO J=2 TO N-1;
T1=(T(I1,J)+T(I2,J)+T(I,J+1)+T(I,J-1))/4;
DTM=MAX(ABS(T1-T(I,J)),DTM);
T(I,J)=T1;
END J;
END I;

M=?M_TIME; // ПРЕДЫДУЩИЕ ТЫСЯЧНЫЕ
TIME2=TIME1; // ПРЕДЫДУЩЕЕ ВРЕМЯ
TIME1=TIME; // ТЕКУЩЕЕ ВРЕМЯ
//---- ВЫЧИСЛЯЕМ, СКОЛЬКО ТЫСЯЧНЫХ ПРОШЛО ----
IF TIME2=TIME1 THEN DD=?M_TIME-M; ELSE DD=1000-M+?M_TIME;
PUT SKIP EDIT(L,DTM,DD)(F(5),X(1),E(14),F(5));
END L;

PUT SKIP(2) LIST(TIME,'ЗАПИСЫВАЕТСЯ ОТВЕТ В ФАЙЛ MATRIX.TXT');
OPEN FILE(MATRIX) PRINT TITLE('MATRIX.TXT') LINESIZE(250);
PUT FILE(MATRIX) DATA (T);
END A1;
Увы, запуск на процессоре Intel core i5-3210M 2.50 GHz дал время одной итерации 624 тысячных, а у транслятора IBM около 220, т.е. почти в три раза быстрее. Если посмотреть на получившиеся команды основного цикла по I и J, то у IBM их 39, а у PL-KT целых 104. Казалось бы, вот и разгадка. Никаких волшебных команд нет, но оптимизатор IBM превратил двумерный массив в одномерный, заменил деление на 4 умножением на 0.25, выровнял данные и команды на 16.

Для себя я различаю оптимизацию стратегическую, оперативную и тактическую. Стратегическую оптимизацию решения задачи в целом может провести только программист: кроме самых простых примеров, транслятор не может понять смысл всей задачи. Пример оперативной оптимизации — это как раз результат работы транслятора IBM. Он вынес все повторяющиеся действия из циклов, убрал индексы I и J и вообще не стал создавать таких переменных. Сам заменил деление умножением. А в маленьком PL-KT вообще нет оперативной оптимизации, а есть только тактическая — в пределах нескольких команд, например, использование SIB-адресации. Тактическая оптимизация часто позволяет распараллеливать независимые друг от друга команды, поскольку процессоры имеют несколько внутренних каналов ввода и исполнения.

Но вернемся к нашим баранам, т.е. к тесту. Я попытался вручную повторить некоторые приемы оптимизации. Замена деления умножением, к моему удивлению, совершенно ничего не изменила. Похоже, процессор сам оптимизирует случаи вроде деления на степень двойки. А вот выравнивание данных на 16 привело не к ускорению, а к замедлению работы. Выравнивание данных здесь вообще выглядит не очень. Я рассчитываю, что будет использовано 5000х5000х4=100 000 000 байт, а транслятор IBM реально использовал 400 миллионов. Для 32-х разрядной системы это значительная разница. Ожидаемо самый большой вклад времени дает запись в массив (чуть ли не половина времени), что ещё более снижает вклад остальных оптимизаций.

Меня могут ехидно спросить: ну и что ты тут разглагольствуешь о тактической оптимизации, когда твой код все равно в три раза медленнее? Я часа три пытался найти, что же приводит к такой большой разнице. Последним действием, на всякий случай привел в соответствие начальное заполнение массива. В исходном примере было
T=1E-30;
А у меня
T=0;
поскольку в PL-KT нет присваиваний массивов константе, кроме нуля. Пришлось дописать программу:
 DO I=LBOUND(T) TO HBOUND(T);
DO J=LBOUND(T) TO HBOUND(T);
T(I,J)=1E-30;
END J;
END I;
И вдруг скорость почти удвоилась. Неоднократные повторные проверки подтвердили: время итерации стало не 624, а примерно 365. Ну, раз пошла такая пьянка, тогда уж сравнивать надо не с 64-разрядной версией, а тоже с 32-х разрядной, как у IBM. И переменные FLOAT брать 4-байтные, т.е. FLOAT(24), а не FLOAT(53). Транслирую старой версией транслятора (http://files.rsdn.org/122727/PLINK.EXE) и получаю результат ещё чуть лучше — 343 миллисекунды. Таким образом, в одинаковых условиях, PL-KT проигрывает IBM не в три, а в полтора раза (в 1.51), что тоже немало, но все-таки не «в разы»...

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

Некоторые итоги.
  • Оптимизатор IBM творит чудеса, но на современных процессорах это дает всё меньший эффект. Например, честное вычисление индексов двумерного массива дало лишь 50% замедление. Отчасти это связано с тем, что при сильной оптимизации осталось мало независимых команд, которые могут выполняться в параллель.
  • Транслятор IBM не использовал базово-индексную адресацию, которая также выполняется параллельно. Замена деления на 4 умножением не дает вообще ничего.

    Конкретный пример очень специфический, но, вероятно, имеет смысл, поскольку напоминает моделирование распространения чего-то в чем-то (привет институту Радио!). В этом простом случае нет претензий к оптимизации, но в более громоздких задачах такая оптимизация может затруднять отладку. Например, в PL-KT я могу в отладчике посмотреть текущие I и J, поскольку они честно вычисляются. У IBM попытка вывести эти значения приведет к изменению самого кода, так как тогда придется считать индексы, даже если они и не нужны.
  • Нашлось и место, где оптимизация превратилась в противоположность. Присвоение
    T(I,J)=T1;
    в трансляторе IBM превратилось в
    fld     tbyte ptr [ebp-50h]
    fstp tbyte ptr [edx-13890h]
    а в PL-KT в громоздкие
    MOV    EDI,[0040B428] .P
    IMUL EAX,[0040B440],00004E20 .I
    ADD EDI,EAX
    MOV EAX,[0040B444] .J
    LEA EDI,[EDI+EAX*4]+FFFFB1DC
    MOV ESI,0040B42C
    MOVSD
    которые, тем не менее, работают быстрее, так как не задействуют FPU, а загрузка ESI может выполняться параллельно с EDI.

     2019/05/08 08:58, kt          # 

К сожалению, подтвердилось ожидаемое, но печальное обстоятельство. 64-разрядная кухня работает медленнее 32-разрядной, чтобы там не писали разработчики этой архитектуры. В данном случае на 9%. Я допускаю, что команды работают так же быстро, но поскольку часть команд стала длиннее, код получается менее плотным и кэш менее эффективен. Правда, кроме снятия барьера в 4 Гбайт (ради чего и затевалась эта архитектура), тест продемонстрировал и дополнительный бонус: работа с FLOAT(53) идет так же быстро, как с FLOAT(24), а в 32-разрядной среде — заметно медленнее, хотя бы из-за того, что невозможно одной командой MOVSQ пересылать такие данные.

     2019/05/08 11:18, VIT1972          # 

Потихоньку тестирую. Получил вот это. Что это значит?
PLINK64.exe count_sort.pli
╔═════════════════════════════════════════════╗
║ LINK-KT РЕДАКТОР СВЯЗЕЙ Версия 4.0 ║
║ (C) Караваев 1992-2019 04.05.2019 г. ║
╚═════════════════════════════════════════════╝

В ФОРМАТЕ OMF 8086/87 ОШИБКА 9
ФАЙЛ COUNT_SORT.PLI
ЗАПИСЬ # 0001
АТОМ # 0001

d:\My Downloads>PLINK64.exe count_sort.pli D
╔═════════════════════════════════════════════╗
║ LINK-KT РЕДАКТОР СВЯЗЕЙ Версия 4.0 ║
║ (C) Караваев 1992-2019 04.05.2019 г. ║
╚═════════════════════════════════════════════╝

ОШИБКА ВЫЗОВА
count_sort.pli D?
Отвечаю себе сам. Компилятор не понимает расширение .PLI. И ведет себя при этом неадекватно.

Пока никак не могу понять, как все же вывести в файл листинг всей программы с результатами компиляции. В консоли неудобно. Вот такой вывод неполон, неудобен и непонятен:
РL/1-KT (версия 1.1 от 04.05.19) КОМПИЛЯЦИЯ ФАЙЛА count_sort.pl1D:
ВЫВОД ПРОТОКОЛА В .PRN
I: ВЫВОД ПСЕВДОАССЕМБЛЕРА И ВЫВОД ИСХОДНОГО ТЕКСТА
O: ОТКАЗ ОТ .OBJ
P: ВКЛЮЧЕНИЕ ВСЕХ ИМЕН В OBJ
Q: КОНТРОЛЬ ПЕРЕПОЛНЕНИЙ
R: ОТЛАДКА
S: ВЫВОД РАСПРЕДЕЛЕНИЯ ПАМЯТИ
T: КОНТРОЛЬ ИНДЕКСОВ И СТРОК
X: ВЫВОД НЕИСПОЛЬЗУЕМОГО

3 b declare (min, max) fixed;
ЕСТЬ В ПЛ ? ?
13 c declare t(min:max) fixed;
СИНТАКСИС ?
?FL = 'count_sort.pl1'
?VR = '1.1 от 04.05.19'
?MD = 'COUNT_SORT'
?VER = '1.1'
ДA = '1'B1
HET = '0'B1
?X = 64

     2019/05/08 13:28, Автор сайта          # 

64-разрядная кухня работает медленнее 32-разрядной

В случае «наивной» реализации в позиционных системах счисления двухразрядный сумматор работает медленнее одноразрядного, трёхразрядный — медленнее двухразрядного и т. д. Конечно, реализация процессоров далеко не «наивна», но с возрастанием разрядности их сложность (число логических вентилей) нелинейно растёт. Для борьбы с этим ростом процессоры упрощают, что сказывается на скорости.

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

     2019/05/08 14:25, kt          # 

для VIT1972:
PLINK64.EXE это не компилятор, а контейнер со всеми утилитами (в том числе и компилятором). Что нужно вызвать — распознается по расширению или по спец. значкам перед именем. Если просто запустить контейнер без параметров, выдается подсказка. Файл с расширением PLI можно оттранслировать так:
PLINK64 * TEST.PLI

     2019/05/08 15:59, VIT1972          # 

Спасибо, а документации к нему нет. А то сложно идти на ощупь.

     2019/05/08 18:18, kt          # 

А вот ссылка в Downgrade #5, которую я давал выше. Там в zip-файле и документация в PDF-файлах.

     2019/05/08 22:57, VIT1972          # 

А то, что документация десятилетней давности, это верно? Новее нет? А то сам компилятор новый...

     2019/05/09 09:39, kt          # 

Не компилятор новый, а просто очередная сборка проведена. Поиск ошибок и недочетов идет непрерывно, поскольку мы сами активно эти средства используем и на недостатки сами наталкиваемся. Документация на 95% соответствует текущему состоянию. Вот для примера кусок протокола изменений компилятора за 2017-18 гг.

15.04.17 ОШИБКА ПОВТОРНОЙ ОПТИМИЗАЦИИ IMUL И ПОВТОРНОЙ EINTO
22.04.17 НОВАЯ КОМАНДА POP32 ЭМУЛИРУЕТСЯ ЧЕРЕЗ FLD32/FST32P
23.04.17 ОПЕРАЦИИ COP СКЛЕИВАЮТСЯ ПО 10 БАЙТ
13.05.17 "*" В FIX/BIT/FLOAT/DEC - МАКС.ЗНАЧЕН, ?X-РАЗРЯДНОСТЬ 64
25.08.17 ПЕРВАЯ ВЕРСИЯ ФИЗИЧЕСКИХ ТИПОВ
23.09.17 ПРОВЕРКИ ПАРАМЕТРОВ В ПРИСВАИВАНИИ ENTRY VARIABLE
19.10.17 ОШИБКА ОКРУГЛЕНИЯ ДО БАЙТА В C5D10, НЕВЫЗОВ ?IAB63
25.12.17 ОШИБКА INIT БЕЗ STATIC В СТРУКТУРАХ
04.01.18 ОПЕРАТОР RESIGNAL
05.01.18 ДОПУСТИМ END ON;
18.02.18 ВВЕДЕНЫ КОНСТАНТЫ FIXED BINARY(63)
10.03.18 ВОССТАНОВЛЕНА ОПТИМИЗАЦИЯ LEA С УЧЕТОМ REX-ПРЕФИКСОВ
31.05.18 РАЗРЕШЕНЫ ОПЕРАТОРЫ ВИДА I**=2;
15.06.18 ДОБАВЛЕНО VALUE
18.06.18 ДОБАВЛЕНЫ ПСЕВДОНИМЫ ПРОЦЕДУР EXTERNAL('<ПСЕВДОНИМ>')
18.07.18 VALUE ВСЕГДА INT, А НЕ EXT
17.11.18 ВВЕДЕН КЛАСС ПАМЯТИ CONTROLLED, ALLOCATION(ADDR(X));
08.12.18 ВВЕДЕНA LENGTH ОТ СТРУКТУРЫ
10.12.18 ИСПРАВЛЕНА ОШИБКА В CMP <>,КОНСТАНТА
31.12.18 ОШИБКА ИНИЦИАЦИИ АДРЕСОВ И МЕТОК

     2019/05/10 22:31, VIT1972          # 

Идеальный транслятор с точки зрения пользователя.

Результаты моих тестов оказались противоречивы. Мы прочитали точку зрения на такой транслятор со стороны разработчика. Со стороны пользователя картина такова. Разумеется, она не претендует на истину в последней инстанции и субъективна.

Достоинства.

1. Сделан в России. Может быть и недостатком (см. ниже).

2. Разработчик доступен и реагирует на замечания.

3. Бесплатность. Есть компиляторы IBM, Raincode, Micro Focus их стоимость $10-30k. Компилятор Iron Spring бесплатен, но пока не завершен. Остальные работают в экзотических экосистемах типа OpenVMS или Stratus. Может быть, стоит установить символическую цену, сажем, $5-10?

Факты, оценку которым дать не могу — для размышлений.

1. Написан на ассемблере. Быстрый, но абсолютно непортабелен. Последние лет 20-25 компилятор IBM, например, пишется на ПЛ же.

2. В целом следует стандарту subset G, но есть средства как из полного стандарта, так и дополнительные, не входящие в эти стандарты.

3. Русскоязычные операторы. Были бы очень полезны, но после реализации полного стандарта языка, или хотя бы уровня компилятора IBM.

4. Из более чем 50 протестированных мной программ почти все выдали ошибки. В силу лапидарности диагностики очень трудно понять, в чем дело. Примеры:
     26 a            DCL (I, J, LI, N, NP, L, N2, P, POL) BIN FIXED INIT(0B),
СИНТАКСИС ?
60 b S1: PROC(POL, J, M, TETA) RETURNS(CPLX(16));
СИНТАКСИС ?
Не нравятся стандартные сокращения, или что-то иное?


Недостатки и пути их устранения.

1. Сделан в России, где, главное процесс, а не результат. Большинство нижеупомянутых недостатком вызваны именно этим. Тут ничего не поделаешь.

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

3. Отсутствуют средства разработки. Нет редактора, отладчик в зачаточном состоянии. Нет среды. А сейчас даже у Julia, которому лет 10 от силы, имеется среда разработки. Это может оттолкнуть развращенных такими средствами программистов. Попытаться «влезть» в какую-либо открытую среду, например, Code Blocks, Geany, Eclipse.
4. Не реализованы некоторые важные и необходимые средства языка. Меня больше всего удивило практическое отсутствие CONTROLLED памяти. Мне отец рассказывал, что у них в почтовом ящике, ещё в 80-х, приказом директора было запрещено программирование на Фортране именно по причине отсутствия такой памяти и наличия ее в ПЛ. Использование Фортрана не позволяло находить ошибки типа выхода индекса массива за допустимые пределы и, вообще, вынуждало нерационально использовать память. В тех примерах, что я тестировал, примерно в половине случаев используется CONТROLLED память. Реализовать, хоть и сложно.

5. Диагностика компилятора лапидарна и, потому мало информативна. Я так и не смог вывести полный листинг программы с результатами компиляции в файл. Я понимаю, когда Intel Visual Fortran выводит ошибки вниз экрана и можно щелкнув на них выйти сразу в то место исходника, где они возникают, но тут... Увы, только детализация.

6. Документация отстает от версии транслятора на 10 лет. Т.е. новых средств за это время не добавилось, был лишь поиск ошибок и их устранение? Тут все ясно. Минимально внести описания изменений в документацию.

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

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

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

10. Поддержка только Windows.

11. Запоздалость его выхода, точнее его популяризации. Сейчас есть масса языков и сред программирования. Популяризовать. Есть сайт cyberforum.ru, там много программистов.

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

     2019/05/11 12:48, kt          # 

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

1. Не согласен, что главное был процесс, а не результат. Как раз главное был результат, для этого в силу сложившихся тогда условий пришлось разбираться со средствами. А потом это стихийно превратилось в хобби. Но главная программа для меня и сейчас это не компилятор, а ПО комплекса средств поддержки экипажа. На него все нацелено, этим определяется и выбор ОС. И средства приходится развивать по мере развития аппаратных средств.

2. Никогда не ставил цели реализовать «полный» стандарт и не считаю его идеалом (да и существует ли он вообще?)
Почитайте самого автора компилятора: http://rsdn.org/forum/flame.comp/6550274.1
он делал транслятор потому, что ему понравился новый язык и не нравился как раз «стандартный».

3. Мелких отличий от IBM360 полно и для тех, кто привык к этим мелочам, все это должно раздражать. Например, битовые константы пишутся не 0B, а ’0’B или не CMPLX(16), а FLOAT DECIMAL(16) CMPLX. Кстати, вопросительный знак при ошибке ставится посреди последней считанной лексемы, что может стать дополнительной подсказкой. А расширенные сообщения об ошибках можно почитать, набрав PLINK64 /?
И вывод «полного листинга программы с результатами компиляции в файл» был характерен для пакетной обработки и перфокарт. Гораздо продуктивнее иметь отдельное окно с текстом, пусть даже и редактор FAR, а второе — для запуска на компиляцию. Запустил, получил одно сообщение на экран, переключился на текст, исправил, переключился. Нажал клавишу, получил следующее сообщение и т.д. Обычно после первой же ошибки лучше исправить и все заново запустить, чтобы не возиться с наведенными ошибками. Получается как в IDE, но без всякого IDE.

4. Контроль индексов и Controlled память, по-моему, ортогональные понятия. И мы всегда старались ввести дополнительные проверки: http://rsdn.org/article/pl1/PL1ex10/pl1ex10-2.xml
Управляемую память ввели недавно, с некоторыми упрощениями: http://compiler.su/o-razmeschenii-peremennyh-v-steke.php

5. Сайт, возможно, в ближайшее время оживет. Но там «движущая сила» не я.

В конце концов, все перечисленное не главное. Главное, как я понял, предложение приложить усилия, чтобы «выйти на рынок». К возможности успеха, тем более, коммерческого, я отношусь скептически. Хотя в свете шума об импортозамещении шансы не нулевые. Например, в реестре зарегистрированного российского ПО в разделе «компиляторы» по-прежнему пусто. Но заниматься всем этим должен, конечно, не один человек.

     2019/05/11 14:16, VIT1972          # 

По пунктам:

1. Пусть для Вас главное это ПО комплекса. Но тут и на rsdn.org Вы пишете о компиляторе! Он как-то развивается, но это никак не отражено, например, в документации.

2. Так и не надо реализовывать полный стандарт! Стандартом де факто является компилятор IBM. Все остальные сейчас стремятся ориентироваться на него. Пусть не все его возможности будут реализованы сразу. И, простите, но в конце первой четверти XXI века Килдалл не может быть окончательным авторитетом. Может, как-то помошников поискать-привлечь? Тот же Iron Springs...

3. Вот эти мелкие отличия и портят всю картину. Хорошо бы иметь ключ, который бы включал или стандарт, или Ваш подход. Отсутствие полного листинга я упоминал только в связи с отсутствием средств разработки. Заметьте, это пишу я, который лет 20 назад работал в примерно таком же окружении, которое Вы описали! Что говорить о молодежи? Да, можно обходиться FARом, но тогда совсем непонятно, зачем созданы десятки IDE? Кроме того, мелкие отличия затрудняют переход от того же IBM компилятора, т.е. создают проблему, где ее быть не должно!

4. Я, в силу своей малограмотности, не разделяю понятий контроль индексов (что это такое?) и управляемая память. Но вот, посмотрите, пожалуйста, на простую программу, которая типична (по крайней мере, для моих случаев):
 tctl: proc options(main);
declare (i,j) fixed initial(50),
a(*,*) float controlled;
allocate a(i,j)
free a;
end;
Она у меня компилироваться не хочет. Более того, есть один из вариантов обхода использования управляемой памяти (см. http://rosettacode.org/wiki/Gaussian_elimination#PL.2FI). Но и его компилятор не принимает. Кстати, обратите внимание, что Вы отсылаете не к документации, а к различным рассеянным источникам.

5. Дай, Бог! Будет единое место для всей информации.

6. "Выйти на рынок", наверное, громко сказано. Я бы начал с популяризации. Самыми важными, на мой взгляд, действиями будут "англоизация" компилятора и встраивание его в какую-либо бесплатную IDE (Eclipse, CodeBlocks). Оптимально в Visual Studio, но насколько это реально?
А установить символическую стоимость (с пожизненными обновлениями), возможно и стоит. Это позволит хотя бы как-то окупить расходы на тот же сайт или интеграцию в IDE. Кроме того, не забывайте про стоимость компиляторов и такие деньги платятся! Вот бы привлечь внимание, тех, кто платит!

     2019/05/11 15:09, kt          # 

Контролем индексов я называю автоматическую проверку выхода индексов массивов за заданные границы. В процессоре даже была специальная команда HBOUND, которую потом, правда, выкинули. Попытка запустить вот такую программу с контролем индексов:
TEST:PROC MAIN;
DCL X(10,20) FLOAT,
(I,J) FIXED(31);
I=5;J=20;
X(I+1,J+1)=1E0;
END TEST;
Приведет вот к такому результату:
ОШИБКА (16) A:0040125F 0005 TE, ИНДЕКС ВНЕ ГРАНИЦ
(0040120A) СТЕК: 00402201 00000000 # 00402071 00000000
Конец программы
Обратите внимание, что в данном случае выхода за пределы памяти массива нет, но единица запишется не туда, если контроля индексов нет.

А пример, который Вы привели — это т.н. динамический массив. В стандарте «G» его нет, границы индексов массивов должны быть константами. В свою очередь, динамический массив может иметь или не иметь контроль выхода индексов за границы. От класса выделяемой памяти напрямую это не зависит. Динамический массив должен иметь так называемый «паспорт», т.е. текущие значения границ индексов. Поэтому работа с динамическими массивами идет медленнее, чем со статическими. Из одномерного массива можно сделать некоторый аналог динамического, если задать в описании одну границу, а память выделить, сколько нужно. Например:
DCL X(1_000_000_000) FLOAT BASED(P), P PTR;
ALLOCATE(1000*4) SET(P);
Здесь памяти выделено только на 1000 элементов, а не на миллиард. Управляемая же память CTL — это автоматическое создание отдельного стека для каждой переменной.

     2019/05/11 16:45, VIT1972          # 

Так контроль индексов это же состояние SUBRG! И сделайте, пожалуйста, где-нибудь в облаке что ли ссылку на последнюю версию компилятора с документацией. Ну, и обновлять ее надо.

     2019/05/11 16:53, VIT1972          # 

Специально посмотрел Iron Spring. Он все же стремится к поддержке полного стандарта. CTL реализован с незначительным ограничением: длины и границы должны быть объявлены, т.е. не могут быть константами. И, что просто удивительно, пишут, что среди клиентов уже сейчас есть госучреждения.

     2019/05/11 18:53, kt          # 

Ну да, состояние SUBSCRIPTRANGE, оно же здесь ERROR(16). Но ведь само по себе оно не возьмется, нужно проверки включать в код. А для многомерного массива каждый индекс отдельно проверять приходится, сумма адресов может не показать выход за границы всего массива.

Ссылку на РСДН пока считаю достаточной, это нормально поддерживаемый сайт, кстати российский. Напоминаю, компилятор не основная моя деятельность, а основное средство программирования разнообразного прикладного ПО. Продвигать компилятор по серьёзному нет ни сил, ни времени. Да и отношение к этому языку пренебрежительное. Зачем же сразу становиться в проигрышную позицию: дескать, попробуйте, ну пожалуйста... А вот для тех, кто и без упрашивания заинтересовался, прятать ничего не буду.

Нет ничего удивительного, что в США на этот язык спрос ещё остается. Там ещё много специалистов и пользователей с огромным опытом. Например, его используют внутри IBM (сын одного из коллег, там работающий, подтвердил). Iron ведет практически один энтузиаст. Я сталкивался с этим продуктом:
http://rsdn.org/forum/flame.comp/7002004.1
и после этого добавил в компилятор объекты Value

     2019/05/11 20:19, VIT1972          # 

А, кстати, где можно найти стандарт G? Нигде не могу найти...

     2019/05/11 21:56, kt          # 

ANSI X3.74-1987 (R1998), он же ISO/IEC 6522:1992 можно скачать на сайте ISO, но он там стоит $250. Поэтому ни у кого из любителей этого стандарта (как выяснилось на форуме https://groups.google.com/forum/#!forum/comp.lang.pl1) не оказалось. Но вот реализация фирмы «Wang» любезно включала раздел отличий от IBM. Этот раздел и «выдает» все особенности стандарта «G». Это раздел 24 в имеющейся документации PL-KT.

     2019/05/12 00:22, VIT1972          # 

Жаль, а то полный есть, а G нету...

     2019/05/12 10:15, Виктор          # 

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

Видимо UNDERFLOW не возникает и не тратится время а его обработку.

     2019/05/12 10:18, Виктор          # 

Оптимизатор IBM творит чудеса, но на современных процессорах это дает всё меньший эффект.

Ну тут все относительно. Ещё на ЕС-1045 он на максимальной оптимизации чуть выигрывал у стандартного Фортрана, но проигрывал раза в полтора-два Фортрану VS2.

Сейчас с PG Фортраном ситуация примерно та же, хотя возраст, конечно, продуктов не сравнить.

     2019/05/12 11:17, kt          # 

Интуитивно кажется, что замена внутри FPU исчезновения порядка нулем не должна вызывать таких временных потерь. Но поскольку у меня и такой гипотезы нет — принимаю Вашу. Вы же можете провести разные проверки с IBM транслятором. Интересно, какой код он сгенерирует, если добавить
ON SUBSCRIPTRANGE BEGIN; PUT SKIP LIST('ERROR’,I,J); STOP; END;
Будет ли он тогда «честно» считать индексы? И, к слову, Ваш ЖЖ — это какой?

     2019/05/12 11:26, Виктор          # 

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

В общем-то решение стацинарного уравнения теплопроводности методом Либмана.

Специально посмотрел Iron Spring. Он все же стремится к поддержке полного стандарта.

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

Есть компиляторы IBM, Raincode, Micro Focus их стоимость $10-30k.

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

     2019/05/12 11:29, Виктор          # 

И, к слову, Ваш ЖЖ это какой?

https://theriodont.livejournal.com/14007.html#comments

     2019/05/12 11:45, Виктор          # 

Интересно, какой код он сгенерирует, если добавить
ON SUBSCRIPTRANGE BEGIN; PUT SKIP LIST('ERROR’,I,J); STOP; END;
Будет ли он тогда «честно» считать индексы?

Залил ассемблерный текст:

https://cloud.mail.ru/public/Jv8a/5bKyNaxd4

Включение SUBRG у них всегда сильно замедляет выполнение, в данном случае в 3 раза, они его рекомендуют использовать только для отладки.

     2019/05/12 12:27, Виктор          # 

Поправка: просто включение почти ничего не изменило, а вывод индексов сразу затормозил в три раза.

     2019/05/12 12:50, VIT1972          # 

Демо-версия IBM с фикспаками лежит открыто у них на сервере

Это очень старый продукт. IBM компилятор для Windows не обновлялся, думаю с 1995. Максимум, что для него делали — это добавляли новые средства языка. Ни о каких оптимизациях там речи не идёт. А вот те, что для мейнфреймов, по отзывам просто великолепны. Я просил знакомых прогнать мою задачу (у меня считалась на паре E5-2698) на z14. Даже со скидкой на более быстрые процессоры z14 разницу в 28 раз только процессорами не объяснить. Там просто совсем другой компилятор.

     2019/05/12 13:13, kt          # 

Спасибо. Да, можно заставить считать. И тогда всякие выкрутасы с лишними командами начинаются, вроде вот этого:
	movsx	ebx,word ptr [ebp-0186h];	J
movsx edx,bx
Такие несуразные команды мне знакомы :) Впрочем, мне хвастаться тоже нечем. Хотя в моем варианте индексы и так считались, и код увеличился несильно, проверки сразу нарушают свертку в SIB-адресацию и все замедляется не в три, а раз в пять.

А вот совет использовать только для отладки неоднозначный. Как и вообще концепция двух трансляторов. Получается, что отлаживаемся на одних командах, а «штатная» работа совсем на других. На своем основном ПО мы плюем на замедления и включаем все проверки. Отладка и работа идет строго на одних и тех же командах. Иначе концов ошибки не найдешь.

     2019/05/12 14:29, Виктор          # 

Это очень старый продукт. IBM компилятор для Windows не обновлялся, думаю с 1995.

Да там судя по всему и с 70-х в принципе мало что поменялось, кроме архитектуры.

     2019/05/12 16:32, Автор сайта          # 

Чтобы поддерживать планку «на уровне», надо целиком посвятить себя своему детищу. Надо, чтобы этим занимался хотя бы один человек — и не на полставки, и тем более не на 5%. Чтобы обеспечить кусок хлеба единственному человеку (который и программист, и тестировщик, и маркетолог, и технический писатель, в т.ч. на английском языке!), нужно постоянно продавать компилятор на сумму, превышающую зарплату этого единственного работника.

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

Вот бы привлечь внимание, тех, кто платит!
нет ничего удивительного, что в США на этот язык спрос ещё остается.

Вывод: хочешь добиться успеха — выходи на этот рынок.

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

Дмитрию Юрьевичу нужен «толкач». Как в своё время Наталья Касперская дотолкала антивирус имени себя и мужа до мирового лидерства. Без неё этот продукт остался бы на уровне Dr.Web. Но это если верится в перспективу, что с этим компилятором можно чего-то добиться.

     2019/05/13 16:53, kt          # 

Вот тебе раз! Проверил тест на процессоре AMD A6-9220 RADEON R4 2,50 GHz. И там совсем не такие результаты!
IBM транслятор (файл HEATU.EXE) — 597 миллисекунд
PL-KT 32 разряда — 616
PL-KT 64 разряда — 636
Т.е. разница стала незначительной. Но при этом заполнение 1E-30 для ускорения не требуется! И без этого заполнения даже чуть быстрее — 610 миллисекунд. Т.е. результаты сильно зависят от типа процессора и, вероятно, от типа памяти.

     2019/05/14 12:19, VIT1972          # 

Замечания по последним ремаркам:

1. Вызывает удивление фраза

А вот совет использовать только для отладки неоднозначный. Как и вообще концепция двух трансляторов. Получается, что отлаживаемся на одних командах, а «штатная» работа совсем на других. На своем основном ПО мы плюем на замедления и включаем все проверки. Отладка и работа идет строго на одних и тех же командах. Иначе концов ошибки не найдешь.

Т.е. рабочая программа должна быть ЗАВЕДОМО неэффективной? А почему практически в всех современных компиляторах есть режимы отладки и рабочей программы (Debug/Release)?
SUBRG именно для этого и создан.

2. В этой же связи. В том числе отсутствие CTL памяти и вызывает описанные в п.1 вещи. Ибо, когда границы массива описаны точно и это проверено на этапе отладки, зачем их проверять всегда?

3. Ссылки на Subset G.

3.1. Так он и был создан для реализации языка на PC. В то время — это IBM PC XT в лучшем случае. Уже 486 превосходил по скорости и памяти S360 и EC. А даже там был реализован иной стандарт языка.

3.2. Сама ссылка на какой-либо стандарт при наличии в компиляторе массы уникальных нововведений некорректна.

4. Честно говоря, мне непонятны сравнения скорости работы со старым компилятором IBM. Мало того, что он старый, так в https://groups.google.com/forum/?fromgroups#!forum/comp.lang.pl1 было обсуждение, что в нём ещё и ошибки есть. Обогнать программой, написанной в 2019, написанную (причём без небрежно) в 1995. Где здесь интерес-то?

5. Очень жаль, что Дмитрию Юрьевичу достался для переработки компилятор Килдалла, а не IBM :)

6.

Сейчас с PG Фортраном ситуация примерно та же, хотя возраст, конечно, продуктов не сравнить.

Думаю, что Intel Visual Fortran обыграет PG везде, кроме режимов Cuda (которые он просто не поддерживает).

7. Безо всякой подначки. Дмитрий Юрьевич, а сколько людей используют Ваш компилятор? В скольких организациях?

8. Насчёт "толкача". Не думаю, что Дмитрию Юрьевичу понравится наличие человека, указания которого будут обязательны к исполнению. А менеджер проекта как раз и должен обладать такими правами. Да его ещё и найти надо.

     2019/05/14 16:28, theriodont          # 

Думаю, что Intel Visual Fortran обыграет PG везде, кроме режимов Cuda (которые он просто не поддерживает)

На данной тестовой задаче оно (PG) быстрее IBM само по себе раза в полтора, но использование конструкции forall вместо вложенных циклов дает плюсом выигрыш ещё минимум раза в 2, причём без использования многопоточости или GPU. Интел заполучить всем желающим, увы, не так просто.

Кстати, нормально распараллелить в Фортране программу с чуть более сложной логикой (например с явной схемой предиктор-корректор), используя только OpenMP или OpenACC уже сложнее, чем вручную подключая потоки на IBM PL/I — там всё делаешь как тебе угодно, а не как решит компилятор.

     2019/05/15 17:14, kt          # 

Замечания на замечания.

1. Задачи бывают совершенно разные. Например, наша главная программа — отображение полётной обстановки — характерна тем, что её состояние в любой момент времени уникально. И если в маленьком тесте всё повторяется, то здесь нужно быть готовым к регистрации любых ошибок и к постоянным проверкам, иначе придется анализировать не сами ошибки, а их последствия, что бывает очень трудно.

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

3. Если расширения не противоречат исходному стандарту, ссылка на него корректна. Стандарт G разрабатывался до появления PC, я давал ссылку на книгу Килдэлла. Одна из целей нового стандарта — создание более компактного языка. Сейчас бы стандарт G засчитали бы как новый язык.

4. Приёмы трансляции и оптимизации разрабатывались с конца 50-х, компилятор IBM впитал очень много и получился очень высокого качества. Это качество сохраняется и для IA-32. «Старость» — это очень условно. Пользуетесь же Вы полиномами Чебышева (внутри FPU) или совсем древними синусами — и ничего, не жалуетесь на их древность. Маленький тест, на котором сравнивались трансляторы, написан нормально, а не небрежно. И результат получился поучительный. Например, я не предполагал, что используемый режим FPU такой затратный по времени в процессорах Intel. Теперь буду знать.

5. Транслятор IBM не мог оказаться у меня в 1987 году, поскольку для PC его тогда еще не было, а Килдэлл уже 4 года продавал свой PL/I-86. Который, кстати, имел микроскопические размеры и был вполне познаваем одним человеком, новичком в х86.

7. Понятия не имею, сколько и где используют PL-KT. Они же у меня не регистрируются. Например, число скачиваний с DownGrade неизвестно, да и новое скачивание — это вовсе не новый пользователь. В РКК как средство программирования его используют лишь 5 человек по трём темам. Но не жалуются, а наоборот, хвалят за то, что есть обратная связь и устранение ошибок.

8. Тут надо, прежде всего, определиться с целью. Например, если цель — коммерческий проект, это одно. Если эксперимент по развитию языка — другое. Разумеется, мы и дальше будем его применять и развивать, как считаем нужным, независимо от появления новых участников и пользователей. Но это и не значит, что я буду диктовать всем своё видение как окончательное и непререкаемое.

     2019/05/15 17:54, VIT1972          # 

Отвечаю по порядку.

1. Это я все писал к тому, чтобы ввести два режима: Debug/Release.

2. Имеется в виду, что при описании a(50000, 50005) всегда используется вся заявленная память. При этом для реальной задачи, где требуется только NБ<<50000, все Ваши проверки выхода индекса бесполезны. В случае dcl a (n, n+5); allocate a; они очевидно имеют смысл.

3. Хорошо, стандарт G создавался для миникомпьютеров. Что это меняет, если их мощности выросли на порядки? Все работающие ныне компиляторы поддерживают полный стандарт. Что Вам мешает сделать тоже самое, кроме личных пристрастий?

4. Именно этот IBM компилятор для Windows на протяжении всей своей истории (20+ лет!) содержал ошибки (что-то с комплексными числами). Он генерирует код максимум для Pentium 1, даже не Pro. Что интересно, компилятор для мейнфреймов таких ошибок не имеет минимум лет 15. Сможете дать пример столь долгоживущей ошибки в компиляторе? Это много говорит об отношении к нему разработчика, которому впервые указали на ошибки в 1995.

5. Понимаю, но он может оказаться у Вас сейчас... Почему бы из него не сделать конфетку? Он всё же ближе к современности, чем PL-86.

7. Жаль, очень интересно знать. Но это, скорее для информации.

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

Дополнение.
1. Есть ли надежда, что управляемая память будет введена?
2. Что будут распознаваться сокращения операторов?
3. Что-нибудь для среды делается?
4. Вы не пытались связываться с автором Iron Springs? Есть еще умерший проект на GCC, с ним тоже нет? Может стоит как-то объединить усилия? Пусть даже не сливаясь в один проект.

     2019/05/16 12:47, kt          # 

Ну, что же. Отвечу на ответы. Получается уже как в частушке: «из ракеты по антиракете анти-антиракеты летят...»

1. Режимы отладки в PL-KT задаются ключами Q, R, T и X. Их можно использовать по отдельности, самый дорогой, разумеется, контроль индексов Т.

2.

все Ваши проверки выхода индекса бесполезны.

В результате ошибок в больших программах может портиться память, а это значит, например, что индекс «сам собой» обнулится, или какая-нибудь граница цикла испортится, или ещё что-нибудь весёлое произойдет. Кстати, в этом случае IDE обычно бесполезны, для них такие ошибки всегда из серии «не может быть никогда».

3. Стандарт G создавался не для миникомпьютеров, а просто д-р Фрайбургхаус хотел создать более совершенный язык. Он пригласил на заседания специалиста №1 по микропроцессорам, поскольку ошибочно посчитал, что тот уже реализовал PL/1. На самом деле, придуманный Килдэлом ассемблер был назван похоже: PL/M. И это сбило всех с толку, даже Википедию.

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

Что Вам мешает сделать то же самое, кроме личных пристрастий?

Так ведь и Вам ничего не мешает :) А вообще-то мешает то же самое, что Э. Маску сделать ракету для пилотируемого полета на Марс: чудовищные затраты при сомнительном результате.

4.

Сможете дать пример столь долгоживущей ошибки в компиляторе

Конечно, например, записывая сегодня тест (который ниже) я обнаружил, что не могу написать
RETURN(ADDR(...
Этот ляпсус не заметил Килдэл в 1984 году, я никогда до этого так не писал. Любой сложный компилятор содержит ошибки, на которые программисты, возможно, так никогда и не выйдут.

5.

Почему бы из него не сделать конфетку?

Понятие «конфетка» очень субъективно. По мне язык безо всякой ерунды вроде индексно-последовательных файлов (современные БД лучше и проще), без возможности неописанных переменных (бешеный источник ошибок) и, например, с необязательным ключевым словом «CALL» гораздо вкуснее.

8.

Сейчас это во многом вещь в себе.

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

Есть ли надежда, что управляемая память будет введена?

Чего все так прицепились к этой памяти? Переменные класса CTRL я недавно ввел с некоторыми упрощениями. Это приведено здесь же, в заметке «о размещении переменных в стеке». Но Вам же, насколько я понимаю, нужны массивы с задаваемыми границами? Я вот простейшим образом смоделировал такой массив для исходного теста (текст программы ниже).
Ну и просела скорость раза в три. Пусть даже при таком моделировании часть времени расходуется на вызов подпрограмм и передачу параметров — всё равно динамический массив
объективно раздувает код и снижает скорость доступа по сравнение со статическими границами, как бы хорошо он не был реализован.

Что будут распознаваться сокращения операторов?

Это о чем? Сокращенная форма ключевых слов или множественные присваивания? Или что?

Что-нибудь для среды делается?

Конечно, FAR ставится на все компьютеры :)

Вы не пытались связываться с автором Iron Springs?

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

Далее текст программы, где двумерный массив T, заменен одномерным X с моделированием динамических границ. Компилятору придется генерировать похожие команды.
A1:PROC OPTIONS (MAIN);

//---- ОСОБЕННОСТИ КОНКРЕТНОЙ СИСТЕМЫ ----
DCL

?MEMORY FIXED(31) EXT INIT(-1), // РАЗМЕР РЕЗЕРВИРУЕМОЙ ПАМЯТИ
?MASK_87 BIT(8) EXT, // МАСКА FPU
?M_TIME FIXED(31) EXT, // ТЫСЯЧНЫЕ ВРЕМЕНИ
?TST387 ENTRY; // УСТАНОВКА FPU

?MASK_87='00001101'B; // МАСКА ИСПРАВЛЯЮЩАЯ АНТИПЕРЕПОЛНЕНИЕ НА НОЛЬ
?TST387; // УСТАНОВИЛИ СОСТОЯНИЕ FPU БЕЗ АНТИПЕРЕПОЛНЕНИЯ

//---- СОБСТВЕННО ПРОГРАММА ----
DCL
X(1_000_000_000) FLOAT(24) BASED(P), // ЧТОБЫ МАССИВ БЫЛ НЕ В ФАЙЛЕ
F FLOAT(24) BASED,
P PTR,
MATRIX FILE, // ЧТОБЫ ОТВЕТ ВЫДАВАЛСЯ НЕ НА ЭКРАН
T1 FLOAT(24),
DTM FLOAT(24),
(I1,I2) FIXED(*),
(I,J,L,N) FIXED(*),
TIME1 CHAR(8),
(DD2,DD1) FIXED(31);

N=5000;

ALLOCATE (N*N*4) SET(P);

T:PROC(I,J) RETURNS(FLOAT);
DCL (I,J) FIXED(*);
RETURN(X((I-1)*N+J));
END T;

T2:PROC(I,J) RETURNS(PTR);
DCL (I,J) FIXED(*);
DCL P PTR;
P=ADDR(X((I-1)*N+J));
RETURN(P);
END T2;
DO I=1 TO N;
DO J=1 TO N;
T2(I,J)->F=1E-30;
END J;
END I;

DO I=1 TO N; T2(1,I)->F=1; T2(I,1)->F=1; END I;

DO L=1 TO 10000;
DTM=0;
DO I=2 TO N-1;
I1=I-1; I2=I+1;
DO J=2 TO N-1;
T1=(T(I1,J)+T(I2,J)+T(I,J+1)+T(I,J-1))/4;
DTM=MAX(ABS(T1-T(I,J)),DTM);
T2(I,J)->F=T1;
END J;
END I;

DD2=DD1;
TIME1=TIME;
DD1=SUBSTR(TIME1,1,2)*3600_000+
SUBSTR(TIME1,4,2)* 60_000+
SUBSTR(TIME1,7,2)* 1_000+?M_TIME;
PUT SKIP EDIT(L,DTM,DD1-DD2)(F(5),X(1),E(14),F(5));

END L;

PUT SKIP(2) LIST(TIME,'ЗАПИСЫВАЕТСЯ ОТВЕТ В ФАЙЛ MATRIX.TXT');
OPEN FILE(MATRIX) PRINT TITLE('MATRIX.TXT') LINESIZE(250);

END A1;

     2019/05/16 13:36, kt          # 

Для theriodont

Разница во времени теста между Intel и AMD по моему мнению может быть обусловлена двумя причинами:

1. Дольше обращение к памяти. Тогда разница между 40 и 100 командами цикла теста снижается из-за того, что не они дают главный вклад по времени.

2. Дольше выполнение команд FPU. У транслятора IBM они идут подряд, а у PL-KT между ними расчет индексов. По результату похоже, что в AMD индексы успевают сосчитаться до окончания очередной команды FPU. Но зато у AMD выключение антипереполнения в FPU ничего не стоит :)

     2019/05/16 19:13, VIT1972          # 

Ещё ответы.

1. Это я писал, сидя в Visual Studio. Там так, и я привык. Так значит, контроль индексов всё же можно отключить?

2. Я писал немного про иное. Если брать размер массива заведомо больше реального, то отладка усложнится. Существенно.

3. Т.е. язык без динамической памяти, более совершенен, чем с ней? Тогда Fortran 4 просто убивает всех! Вот только на нём никто уже не пишет.

Да, в смысле поддержки стандарта G? исключение. Кроме PL на умерших VAX и Itanium я никого не вспоминаю. Сегодняшние коммерческие поддерживат все.

Мне мешает полное отсутствие опыта в создании и модификации компиляторов. Тут я всего лишь пользователь. Но если взять и раздраконить IBM компилятор... то тут у нас уже есть специалисты.

4. Т.е. ошибка в арифметике(!) для компилятора, обычное явление?

5. Я не имею в виду моментальную поддержку полного стандарта. Экзотические файлы можно оставить на конец в очереди. К тому же, как подтверждают продажи коммерческих компиляторов, есть клиенты, которым никакая модификация ни программ, ни обслуживаемых ими файлов не нужна. И это клиенты с очень боьшими деньгами.

8. Т.е. Вам совсем не хочется привлекать новых пользователей? Имеете право.

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

Я имел в виду сокращенную форму ключевых слов. У меня куча ошибок высыпалась...

Шутку насчет FAR я оценил. Совершенство минималистично, но не аскетично.

Насчет отношения иностранцев к Вашей работе я думаю, что проблема здесь в языке. Как бы Вы отнеслись к компилятору на китайском? Просто надо им показывать то, что они могут использовать. Жаль, что очень хорошие специалисты не могут пользоваться Вашей замечательной программой. Они могут дельное посоветовать.

Вашу модельную программу посмотрю. Т.е. Вы в принципе знаете, как реализовать управляемую память?

     2019/05/17 03:24, theriodont          # 

Именно этот IBM компилятор для Windows на протяжении всей своей истории (20+ лет!) содержал ошибки (что-то с комплексными числами).

Там неверно считает действительную часть в выражениях типа A=A+B, если A и B - complex float (с complex fixed все ок).

https://cloud.mail.ru/public/zuCo/5CoBZ7Z7F

причём говорят, что это свойственно всем компиляторам IBM, где есть complex, не только PL/I.

Кстати, использование controlled с переменными границами вместо static замедляет программу процентов на 20.

Шутку насчет FAR я оценил.

FAR-овский редактор кстати один из немногих, который умеет парсить PL/I, (почему-то только если расширение *.pli набрано строчными буквами). Тоже пользую FAR + скрипт на rexx-е, поскольку родное IDE там жесть жестяная.

     2019/05/17 05:58, kt          # 

Кроме PL на умерших VAX и Itanium я никого не вспоминаю.

PL/I фирмы Wang на одноименных компьютерах у нас использовали до начала 90-х.

Т.е. ошибка в арифметике(!) для компилятора, обычное явление?

Это не арифметика (функция ADDR, а не ADD). Вот так можно:
P=ADDR(X(I,J)); RETURN(P);
А вот так ошибка:
RETURN(ADDR(X(I,J));
И никто из нас не наталкивался до вчерашнего дня. Невозможно придумать тесты, покрывающие все случаи. Со временем исправлю, раз уж нашёл.

     2019/05/17 10:12, VIT1972          # 

Это не арифметика (функция ADDR, а не ADD).

Все же арифметика. Посмотрите тут
https://groups.google.com/forum/?fromgroups#!topic/comp.lang.pl1/7yhgU-08hQs
В компиляторах для z/OS её нет. Кстати, само её такое долгое наличие говорит о частоте использования языка в научных расчетах.

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

Это Вы про IBM? Вы утверждаете, что не тестировать элементарную арифметику нормально?

Тоже пользую FAR

На безрыбье... Но никто же не будет утверждать, что FAR лучше VS или какой-либо Geany?

     2019/05/17 11:32, kt          # 

Я говорю не об ошибке комплексной арифметики в трансляторе IBM, а об ошибке адресного выражения в PL-KT

     2019/05/17 13:52, theriodont          # 

На безрыбье... Но никто же не будет утверждать, что FAR лучше VS или какой-либо Geany?

К Geany и так при желании можно хоть что прикрутить.

     2019/05/17 14:17, VIT1972          # 

К Geany и так при желании можно хоть что прикрутить.

Как, впрочем, и к VS

     2019/05/17 14:29, kt          # 

Я имел в виду сокращенную форму ключевых слов. У меня куча ошибок высыпалась...

Отсутствующие сокращения можно добавлять и самому в начале текста, например:
%REPLACE 
FIX BY FIXED,
ALLOC BY ALLOCATE,
...
Тогда, по крайней мере, сами тексты трогать не требуется.

     2019/05/17 14:33, theriodont          # 

В компиляторах для z/OS её нет. Кстати, само её такое долгое наличие говорит о частоте использования языка в научных расчетах.

В OS/2 кстати та же фигня. Хотел проверить что там у Iron Sring на этот предмет, но он, оказывается, ещё не умеет в комплексные выражения.

Для научных расчетов всегда был и есть Фортран, на практике PL/I для этого использовали только очень большие любители прекрасного.

     2019/05/17 20:26, VIT1972          # 

theriodont
В OS/2 тоже? Такое ощущение, что все IBM продукты с косой чертой уходяи в маргинальную область...

В какой-то теме в google-группе писали, что в z/OS нет, да и мои результаты это подтверждают. Они даже петицию в IBM составляли, ответ: "Windows-компилятор не поддерживатся". Iron Spring это точно обойдёт, он дискуссию видел. И компилятор у него во многом на исходниках Multics, и сам он вроде в разработке PL/I на Multics участвовал. Вот только когда... Лет ему уже много...

Дмитрий Юрьевич! Спасибо, так можно, просто столько переделок уже тянет на перевод на другой язык. Помимо Фортрана, который по возможностям лет 10 как обогнал PL (последняя нереализованная в Фортране возможность PL, с которой я сталкивался, это вывод по PUT DATA CTL-массива, реализована лет 5 назад), еще и Julia хвалят, но не пробовал.

     2019/05/20 12:48, theriodont          # 

Помимо Фортрана, который по возможностям лет 10 как обогнал PL (последняя нереализованная в Фортране возможность PL, с которой я сталкивался, это вывод по PUT DATA CTL-массива, реализована лет 5 назад)


Вроде ALLOCATABLE было еще в Ф90, а NAMELIST так и вообще при царе-горохе, или я чего-то не понял?

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

     2019/05/20 14:51, VIT1972          # 

Вроде ALLOCATABLE было еще в Ф90, а NAMELIST так и вообще при царе-горохе, или я чего-то не понял?

Это так, но сочетание
A(N)CTL; 
ALLOCATE A;
GET DATA(A);
не имело перевода на Фортран (даже по стандарту) года до 2010.

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

Т.к. я C не знаю, судить не могу, хотя мне всегда казалось, что он как раз становится ближе к PL. Взять тот же ALLOCATABLE или форматный ввод-вывод...
Он стал более эклектичным, но то же самое можно сказать и о PL.

     2019/05/20 17:00, theriodont          # 

Ну вот так скажем:
REAL, ALLOCATABLE:: A(:)
NAMELIST/BAA/A
ALLOCATE (A(N))
READ(*,BAA)
С разницей только что в списке придется ставить заголовок и конец.

Т.к. я C не знаю, судить не могу, хотя мне всегда казалось, что он как раз становится ближе к PL.

Я имею в виду, что на изначально простой и небольшой язык лепили потом кто во что горазд и как попало. ПЛ/1 тоже менялся, но в гораздо меньшей степени. Фортран сначала в общем-то тоже стал ближе к ПЛ/1, но потом ушёл дальше. Но вот даже вот эти двоеточия уже сами по себе выглядят коряво.

     2019/05/20 17:21, VIT1972          # 

Ну вот так скажем:

REAL, ALLOCATABLE:: A(:)
NAMELIST/BAA/A
ALLOCATE (A(N))
READ(*,BAA)

С разницей только что в списке придется ставить заголовок и конец.

Сейчас пройдёт, а на Intel до 2010 — нет. Я даже в стандарте это находил, мне надо было перевести как раз с PL. Двоеточия и меня бесят. Именно этот вариант на PL и сейчас выглядит лучше. Фортран просто часто менялся, разными людьми, даже поколениями разными. Потом они стремятся сохранить поддержку старых версий языка (вот как NAMELIST). Одна история с FORALL чего стоит — сегодня ввели, завтра убрали (кстати, потому, что трудно реализуемо в компиляторе!)

     2019/05/21 20:13, theriodont          # 

Ну пока не убрали, а перевели в разряд нерекомендуемых, поскольку много ограничений — то есть в общем случае (в т.ч. и в моем примере) код нужно переписывать, чтобы заменить циклы на forall и оно работало. Do concurrent теперь по идее делает то же самое, но без ограничений. Еслм так оно и есть, то смысла в нем действительно не осталось.

     2019/05/22 10:22, Автор сайта          # 

австралийско-калифорнийское сообщество любителей PL/1 весьма кисло восприняло весть, что кто-то там из дикой России пытается что-то делать с их любимым и непревзойденным средством.

Гм… Интересно, а как выглядели кислые мины?

Понятия не имею, сколько и где используют PL-KT

Думаю, прямо на эту страницу можно поставить URL для закачки со счётчиком. Тогда бы хоть какая-то статистика собиралась.

RETURN(ADDR(...
Этот ляпсус не заметил Килдэл в 1984 году, я никогда до этого так не писал. Любой сложный компилятор содержит ошибки, на которые программисты, возможно, так никогда и не выйдут.

С одной стороны, слышишь призывы делать компиляторы «по науке», тогда и ошибок будет меньше. Мнение Дейкстры:

В шестидесятые годы она [наука] разработала теорию синтаксического разбора, необходимую для поднятия уровня компиляторов выше уровня поделок, напичканных ошибками, и превратив её в предмет, пригодный для обучения. Это было главное достижение: я, например, помню весьма отчетливо, как в 1962 те из нас, кто действительно написал компилятор, выглядели в глазах остальных как некие полубоги. В связи с этим достижением я бы хотел подчеркнуть, что этого никогда бы не произошло, если бы мы со временем не научились давать формальное определение синтаксиса компилируемого языка: без этого формального определения слишком сложно было бы определить существование проблемы компиляции.


С другой стороны, Зуев Евгений Александрович делал свой компилятор C++ «по науке» (lex/yacc), но и он пишет о трудноуловимых ошибках и большой роли тестов, которые должны покрывать весь синтаксис языка. Вероятно, для PL1-KT нет таких всеобъемлющих специально написанных тестов.

     2019/05/23 09:08, kt          # 

Гм… Интересно, а как выглядели кислые мины?

Это надо искать на форуме группы PL/1 Гугла. Когда Земнов объявил, что в России есть ещё один компилятор, Робин (это он, кажется, из Австралии), ответил, что, да, он слышал, что в России «испортили язык», и в свой обновляемый список ответов и вопросов никаких ссылок добавлять не стал. Ссылка на российские ресурсы там одна древняя и не действующая.
И кстати о компиляторах: поскольку появились ПК с Эльбрусом, а на Эльбрусе PL/1 был неслабо реализован, эти наработки, вероятно, можно будет опять использовать.

Думаю, прямо на эту страницу можно поставить URL для закачки со счётчиком. Тогда бы хоть какая-то статистика собиралась.

Да, конечно, хотя такая статистика хороша только для истерик об «упущенной выгоде», которую так любят считать миллиардами некоторые фирмы :)

Вероятно, для PL1-KT нет таких всеобъемлющих специально написанных тестов.

Проблема, по-моему, ещё и в том, что кроме ПРАВИЛЬНЫХ тестов, которые проверят хотя бы раз каждую ветку транслятора, нужны ещё и НЕПРАВИЛЬНЫЕ тесты, которые подтвердят имеющиеся ошибки. А таких тестов принципиально бесконечное множество.
Тесты PL-KT состоят из группы специально написанных тестов и множества реальных программ, которые накопились за все эти годы. При изменениях компилятора эти программы или не должны меняться или изменения будут заранее понятны и тогда за эталоны берутся новые объектные модули.
Кроме этого, основная программа нашей деятельности сама является хорошим тестом для нас :)

     2019/05/23 09:54, kt          # 

Вот реальные примеры ошибок для «правильных» и «неправильных» тестов:
ошибку
RETURN(ADDR 
я исправил за несколько минут, такое сочетание было просто пропущено во внутренней таблице компилятора. «Правильный» тест нашел бы эту ошибку.

Если я напишу в программе
M1: …
….
M1:…
То компилятор укажет, что такая метка уже была.
А вот если написать метки с индексами:
M1(25): …
….
M1(25):…
То исходный компилятор не выдавал ошибки и лепил неправильные адреса. И «правильный» тест, проверяющий метки с индексами, здесь бы не помог.

     2019/05/23 16:44, VIT1972          # 

Это надо искать на форуме группы PL/1 Гугла. Когда Земнов объявил, что в России есть ещё один компилятор, Робин (это он, кажется, из Австралии), ответил, что, да, он слышал, что в России «испортили язык»,

Нашел:
https://groups.google.com/forum/?fromgroups#!searchin/comp.lang.pl1/Russian%7Csort:date/comp.lang.pl1/LYfbKqBVK28/Ove8fz4cBAAJ

И что же там есть? Вот что:
1. Вам говорят спасибо, стараясь сделать это по-русски. Вы им предлагаете (или нет?) компилятор на русском языке.
2. У Вас спрашивают, доступен ли он? В ответ четырехлетняя (!) тишина.
3. Пытаются найти инженера из России, чтобы заинтересовать его(!)
4. Дословный перевод Вовельса: Русские использовали PL с самого начала. Думаю, этот компилятор не отличается от компиляторов фирмы IBM.
5. Тема пока оканчивается тем, что у Вас уже русскоговорящие спрашивают о доступности в конце 2016 года. В ответ опять тишина.

Скажите, где здесь хоть гран негатива? И если есть, то откуда он идет7 Вы пишете, что Вовельс не поместил Вас в FAQ. А Вы его просили? Или Вы всерьез считаете, что узнав о русскоязычном компиляторе, все немедленно изучат язык и станут домогаться Вас? Нет, это Вы совсем не умеете продвигать свой компилятор! И не говорите, что у Вас нет такой цели, ибо что Вы тогда делаете здесь?

Более конструктивно:
1. Привести компилятор и документацию к виду, пригодному для использования, скажем, индийцем. Вести опцию, переключающую режимы языка. Вообще, сделать файл языковых ресурсов, тогда любой желающий переведет его на свой язык.
2. Ввести опцию, отключающую все неописанные в subset G возможности, разделяя (возможно) Ваши нововведения и вещи из стандарта F.

     2019/05/23 20:00, MihalNik          # 

И не говорите, что у Вас нет такой цели, ибо что Вы тогда делаете здесь?

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

     2019/05/23 20:28, VIT1972          # 

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

Простите, не понял, что логично? Рассказать, что есть и то, и сё? Для чего (кого) делается компилятор? Если для себя, тогда логично (хотя и сюр). Но даже если для себя, зачем о нём рассказывать?

     2019/05/24 09:22, kt          # 

Какие-то странные вопросы пошли.

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

зачем о нём рассказывать?

Я рассказываю не только и не столько о компиляторе, сколько о различных идеях и приёмах (например, о «физических» типах) на примере своего компилятора. Здесь самая подходящая аудитория и у меня нет другой площадки для экспериментов. Другие компиляторы я не имею возможности так исследовать, а, тем более, менять. Многое относится к основной теме этого сайта — развитие языка для нашей страны.

Причём стараюсь писать о том, что сам проверял на деле. Многие умозрительные вещи на практике оказываются не такими уж и полезными.
И уж тем более странным звучит на данном сайте призыв вернуть все «взад» в англоговорящую среду. Посмотрите итоги голосования здесь по поводу русского языка. Даже совместимость большинству не кажется решающей. Поэтому пусть себе индусы создают свои, индийские средства, а мы будем пытаться создавать свои. И брать пример с американцев, плюющих на остальной мир.

Я считаю, что ушел от стандарта G вперед за эти десятилетия, а Вы предлагаете вернуться в 70-е с целью не менять в исходных текстах программ 30-летней давности ни одной буквы. На мой взгляд, изменения исходных текстов вполне допустимы, если они понятны и прозрачны. Например, если дописать описания необъявленных переменных, текст станет только лучше, а не хуже.

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

P.S. Отношение к «русскому» компилятору у Робина: «not dissimilar» — скорее, «не лишенный сходства», чем «не отличающийся», т.е. оттенок отношения другой.

А Вы его просили?

А Вы думаете, все остальные просили о ссылках?

     2019/05/24 13:01, VIT1972          # 

Многое относится к основной теме этого сайта — развитие языка для нашей страны.

Я правильно понял, что тематика этого сайта — создать язык для нашей страны? Т.е. за 50 с лишним лет никто в мире этого не сделал? То, что этот язык создан или создаётся на импортных процессорах, никого не напрягает? Я уже не говорю, что одним из свойств рассматриваемого компилятора является его жёсткая привязка именно к импортным процессорам. И что такое "язык для нашей страны"? С, Fortran, Rust, Go и остальные не то?

и у меня нет цели продать/подарить/впарить свой транслятор кому-либо.

Увы, это-то понятно, а какова Ваша цель?

И уж тем более странным звучит на данном сайте призыв вернуть все «взад» в англоговорящую среду.

Что же здесь удивительного? Кто разработал язык? Где на сегодня больше всего на нём программируют? Где сегодня вообще больше всего программистов? В Индии. Есть понятие мейнстрима. Кто ходит против него, редко становятся гениями, гораздо чаще — маргиналами (это если упорные).

Посмотрите итоги голосования здесь по поводу русского языка

Посмотрел. Предлагаю для большей объективности организовать такой же опрос, скажем, на cyberforum. Потом, опять же, я не против этого. Я — за управление этим с помощью опций. И что плохого в создании файла ресурсов? Пусть желающие хоть на тутси переводят!

Даже совместимость большинству не кажется решающей.

Т.е. стандарты пишут идиоты для таковых же? Очень свежо!

И брать пример с американцев, плюющих на остальной мир.

Брать пример стоит с тех, кто лучший. А вот что он делает это для выбора вообще не важно. Кстати, Вы в данной фразе неявно взяли пример с них. Это я о плевании. Поймите, я тоже за импортозамещение! Но давайте его делать с помощью англоговорящих! Давайте не будем изолироваться, находясь на очевидно слабой позиции! Станем сильными — на здоровье. Если серьёзно, то надо отличать народ и государство. Вот народ в США просто отличный (в массе), государство (по отношению наружу) — дрянь. У нас, пожалуй, наоборот.

Вы предлагаете вернуться в 70-е с целью не менять в исходных текстах программ 30-летней давности ни одной буквы.

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

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

Вот, видите, Вы опять берете с них (американцев) пример. Если серьезно, то это Ваше мнение. Не все люди любят заниматься рутиной, увы. Кроме того, компилятором будут пользоваться многие. И все они буду делать эти переделки!

По поводу динамических массивов есть одна мысль

Что тут скажешь... УРА!

«not dissimilar» — скорее, «не лишенный сходства», чем «не отличающийся», т.е. оттенок отношения другой.

Формально, для живущих в Англии (и только в ней), да. А это Австралия, там уж совсем простые люди. И даже, если Вы правы, никакого негатива нет. Зря Вы про них всех так, право!

А Вы думаете все остальные просили о ссылках?

Не знаю. Но я не вижу ничего дурного в том, чтобы попросить. А Вы? Более того, уверен, что кто-то и просил. В той же группе были случаи, когда его просили что-либо отразить в FAQ. Кстати, на его сайте лет 10 назад я видел какой-то софт, сделанный явно у нас. Там упоминалась фамилия Белкина. Господи! Да если у Вас какие-то проблемы с коммуникацией с ним, так давайте мне конкретно, что просить и материал — я переведу и попрошу. Только мне надо в группе перерегистрироваться, а то пароль куда-то пропал. Но не проблема, для хороших человека и дела сделаю.

Надеюсь, Ваше предубеждение к американцам я хоть как-то уменьшил. Поверьте, общаясь с ними, Вы (все мы) только выиграете.

Теперь опять конструктив.

1. Вы хвалили книгу Штернберга. Я её купил, отсканировал и выложил на libgen.io. Кому интересно — пользуйтесь. На меня она сильного впечатления не произвела. В отместку я положил туда же книгу Горенштейна (ищите по фамилии автора). На русском языке лучшая, на мой взгляд, — это Фролов и Олюнин.

2. Свою старую книгу Hughes J.K. PL/I Structured Programming, 1986 3rd ed. (новее только Штурм) тоже отсканировал и выложил туда же. В ней есть интересный для Вас раздел по сравнению компиляторов. Из него я вытащил, те средства, которые я активно использовал, но которых нет в компиляторе Килдалла. Вот они:
ATANH
BLKSIZE
C(x,[y])
COMPLEX (АТРИБУТ, ВСТР. Ф-Я И ПСЕВДОПЕРЕМЕННАЯ)
CONJG
CONTROLLED
COUNTER
DATA (GET, PUT)
DATAFIELD
DISPLAY
ERF
ERFC
GENERIC
IMAG
LEAVE
ONCHAR
ONCODE
ONSOURCE
OTHERWISE
POINTER
POLY
PROD
REPEAT
REORDER
SELECT
SIZE
SNAP
STRINGRANGE
iSUB
SUM
SYSTEM (ON SYSTEM)
UNTIL
VALUE
WHEN (SELECT+GENERIC)
Что-то у Вас, конечно, уже реализовано. Будь я Вами, я бы просил рассматривать это как руководство к действию. :)

     2019/05/24 14:19, kt          # 

«Если тебе нужен PL/1, ты знаешь, где его взять». © Деннис Ритчи

Есть же транслятор IBM. Чего же Вы хотите от СПЕЦИАЛЬНО уменьшенного подмножества?

Глядя на Ваш список, вспоминается экспериментальное соревнование по многоборью из 60 видов спорта. Победитель сказал в интервью: «программа была неполной — не хватало марафонского бега» :)

Если чуть серьёзнее — как может быть руководством к действию реализация какого-нибудь DISPLAY, который был сделан в 1964 году для вывода на телетайп оператора? По-моему, прекрасное решение SYSIN и SYSPRINT по умолчанию — это клавиатура и экран и не нужны тогда никакие DISPLAY.

В список почему-то затесался REORDER, не имеющий к языку никакого отношения.

За Штернберга пасть порву вступлюсь — вообще мало книг, посвященных разбору ошибок в программах, это одна из таких.

И без подколок вопрос: интересно, в задачах на какую тематику активно используется гиперболический арктангенс?

     2019/05/24 15:00, VIT1972          # 

«Если тебе нужен PL/1, ты знаешь, где его взять». © Деннис Ритчи

Теперь знаю. С помощью theriodont нашёл замечательную страницу. https://theriodont.livejournal.com/14007.html

Надо будет посмотреть, хотя там же ошибки есть... Если бы я знал это лет 10 назад...

Есть же транслятор IBM. Чего же Вы хотите от СПЕЦИАЛЬНО уменьшенного подмножества?

Не понял, о каком подмножестве Вы говорите? Если это G, так Хьюз пишет, что существовало только два транслятора DR и PL-G. Первый для мира умер с автором (а Вы в него вдохнули новую жизнь), второй не поддерживался чуть ли не с 70-х.

Глядя на Ваш список, вспоминается экспериментальное соревнование по многоборью из 60 видов спорта. Победитель сказал в интервью: «программа была неполной — не хватало марафонского бега» :)

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

Считайте что от DISPLAY и REORDER Вы отбились. Видите, я же не зверь какой...

За Штернберга пасть порву вступлюсь

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

И без подколок вопрос, интересно, в задачах на какую тематику активно используется гиперболический арктангенс?

Звучит страшно. АнтиПРО моделирование. Но это было давно...

Вы не ответили на моё предложение пообщаться с Вовельсом. И насчет файлов ресурсов подумайте, уж, пожалуйста.

     2019/05/24 16:15, Автор сайта          # 

Я правильно понял, что тематика этого сайта — создать язык для нашей страны? Т.е. за 50 с лишним лет никто в мире этого не сделал?

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

То, что этот язык создан или создаётся на импортных процессорах, никого не напрягает?

Напрягает. Но хочу быть реалистом. Поэтому выбрал одно дело, к которому чувствую призвание, которое нравится. А вот другие дела, касающиеся отставания на 10 — 30 лет по микропроцессорам, автомобилям или самолётам, хочу оставить тем, кто в этом разбирается.

     2019/05/24 17:40, VIT1972          # 

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

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

     2019/05/24 19:16, Автор сайта          # 

Для нашей страны? Именно это были ключевые слова.

Высказывался по этой теме задолго до Вашего вопроса:

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

Будет, на мой взгляд, большой ошибкой, если такой язык будет ориентирован исключительно на русскоязычную аудиторию. Искусственное ограничение ареала обитания снизит шансы на популярность «языка светлого завтра». Ведь ему будут закрыты многие двери: он не заменит Javascript в браузерах, на нем не будут проводиться международные олимпиады по программированию. На нем не напишут Linux, Windows или MacOS. Его не будут изучать в Гарварде и Кембридже, о нем не напишет книгу Питер Нортон с в соавторстве с Василием Пупкиным. Но, самое главное, он не обрастет той инфраструктурой, которая есть вокруг всех мировых языков типа С или Java. Инфраструктурой, которая включает в себя не только компилятор с IDE и библиотеками, но и миллионы людей, готовых этот язык учить и использовать, популяризировать и развивать.

Я точно на русском форуме?

Это не форум :) Этот сайт организован в формате «статья + отзывы».

     2019/05/24 20:10, VIT1972          # 

Высказывался по этой теме задолго до Вашего вопроса:

Co всем, что Вы написали ниже — согласен.

Это не форум :)

Простите, я точно на русском сайте? :)

     2019/05/24 21:08, VIT1972          # 

Дмитрий Юрьевич, я продолжу Вам надоедать. Читаю Вашу документацию (Руководство). Раздел 24 ОТЛИЧИЯ PL/1-KT ОТ IBM OS PL/I И "ПОЛНОГО" PL/I (ANSI X3.53). Ниже приведу пункты, с которыми на согласен и попробую обосновать.

2. Процедуры не могут иметь несколько точек входа. Лучше бы сделать, т.к. на моей памяти многие пользовались. В новом Фортране отменено

4. Длина символьной строки в описании RETURNS должна быть целой константой. Хорошо бы устранить, вопрос удобства.

8. Префиксы разрешения/запрещения обработки исключительных ситуаций не допускаются. Лучше бы сделать, т.к. на моей памяти многие пользовались.

11. Длины строковых переменных и структур при описании должны быть целыми константами, исключение — длина строки формального параметра (допустим символ "*"). Тут я подозреваю, что многие могут столкнуться.

12. Нижняя и верхняя границы массивов должны быть целыми константами. Совсем плохо. Потеряно одно из лучших свойств языка.

17. Не поддерживаются следующие операторы: DISPLAY, EVENT, EXIT, FLOW, HALT, ENTER, NOFLOW, ORDER, OTHERWISE, PRIORITY, REENTRANT, RELEASE, REORDER, REPLY, RETCODE, SELECT, SYSTEM, RASK, TRKOFL, UNLOCK, WAIT, WHEN. Жирным выделил, что хотелось бы иметь.

18. Не поддерживается класс памяти CONTROLLED. Тут я уже все, что мог, написал.

19. В операторе ALLOCATE не поддерживается опция IN. См. пред. пункт

22. В операторах PUT и GET не поддерживается атрибут COPY, атрибут DATA не выводит индексы массивов, GET DATA не допускает точки с запятой и произвольного порядка данных. GET DATA хотелось бы привести к стандарту — уж очень часто используется.

24. Список форматов не может содержать переменные и выражения. Не критично, но все же хотелось бы иметь.

31. Следующие атрибуты не поддерживаются: AREA, BIT VARYING, CONDITION, CONTROLLED, GENERIC, LOCAL, OFFSET, POSITION (вместо POSITION используется константа со знаком "+"). Жирным выделил, что хотелось бы иметь.

34. Начальная инициация переменных допустима только для класса памяти STATIC. Для всех хочется — частое использование.

35. Коэффициент повторения в операторе INITIAL должен быть целой константой. Если нетрудоёмко, лучше исправить.

39. В шаблонах при выводе не поддерживаются форматы A, E, I, K, R, T, X, Y. Если A — это строки, а E — скажем E(22,15), хотелось бы иметь — частое использование.

41. Встроенные функции не могут вернуть не скалярный результат. С массивами-то работать хочется без циклов...

42. Не поддерживаются следующие встроенные функции и переменные: ADD, AFTER, ALL, ALLOCATION, ANY, ATANH, BEFORE,
COMPILETIME, COMPLETION, COMPLEX, CONJ, COPY, COUNT, COUNTER, CURRENTSTORAGE, DATAFIELD, DECAT, DOT, EMPTY,
ОТЛИЧИЯ ОТ ПОЛНОГО СТАНДАРТА
ERF, ERFC, EVERY, HIGH, IMAG, LOW, MULTIPLY, OFFSET, ONCHAR, ONCOUNT, ONFIELD, ONLOC, ONSOURSE, PARMSET,
PLIRETV, POINTER, POLY, PRECISION, PRIORITY, PROD, REAL, REPEAT, REVERSE, SAMEKEY, SOME, STATUS, STORAGE,
SUBTRACT, SUM, VALID. Писал в предыдущем сообщении.

43. Не поддерживаются следующие псевдопеременные: COMPLETION, IMAG, ONCHAR, PRIORITY, REAL, STATUS. IMAG и REAL часто так пользуют.

44. Операторы должны возвращать скалярный результат. См. ремарку к п.42

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

47. Индексы массивов в выражениях должны быть целыми. Тут непонятно. A(i, j)+C(j+j) недопустимо?

Таким образом, из 50 отличий надо бы исправить 20. Это много, наверное...

     2019/05/25 14:01, theriodont          # 

DISPLAY, который был сделан в 1964 году для вывода на телетайп оператора?

Оно было практически цельнотянуто из Кобола.

По-моему, прекрасное решение SYSIN и SYSPRINT по умолчанию — это клавиатура и экран и не нужны тогда никакие DISPLAY.

Как по мне, так SYSIN и SYSPRINT как раз удобнее использовать именно как стандартные файлы ввода и вывода (например, с расширениями *.dat и *.prt соответственно и именем как у исходной программы, а DISPLAY/REPLY именно для работы с консолью — в компиляторах IBM к тому же ещё и можно имена файлов определять извне через переменные окружения или команды типа FILEDEF/DD. Писали ещё, что DISPLAY работает эффективнее, поскольку не использует файловый механизм, но теперь это вряд ли актуально.

     2019/05/26 09:28, kt          # 

Вы увлеклись. Тема «каким должен быть язык программирования» перешла в тему «каким должен быть PL/1». По Вашему, таким, каким сделан в трансляторе IBM. Да пожалуйста! Благодаря theriodont транслятор у Вас теперь есть. А мне-то зачем этот список желаний. Я не джинн из бутылки. Даже если все бросить и заниматься только переделками PL-KT, на это могут уйти человеко-годы. И все это ради откровенно слабоватой аргументации «на моей памяти этим пользовались»? Я, например, активно пользуюсь оператором continue, гораздо чаще, чем leave. А его в этом списке даже нет.

В данном случае, я на стороне д-ра Фрайбургхауса, который старательно все это сокращал для стандарта G. Конечно, какие-то вещи могут добавляться/изменяться, например, оператор обмена ⇔ через команды XCHG, который, по-моему, был явно пропущен при разработке. Но пытаться полностью повторить все бесчисленные свистелки транслятора IBM? Нет уж, увольте. Лучше уж его самого используйте. А известные ошибки легко обойти в программах.

Для theriodont:
Удобство, во многом, дело привычки. Например, я никогда не работал на EC ЭВМ и не писал DD-операторов. Поэтому для меня естественно, что если не указать файл вывода — значит на экран, а ввода — значит с клавиатуры. А переопределить ввод/вывод удобнее операторами «>» и «<» ещё со времен MS DOS. Обычно я так и делаю, но ничто не мешает открыть в программе SYSIN/SYSPRINT с другими именами и писать в указанные файлы.

     2019/05/26 11:17, VIT1972          # 

Вы увлеклись. Тема «каким должен быть язык программирования» перешла в тему «каким должен быть PL/1».

Не совсем так. Мы просто сузили тему до уровня наших знаний, как, впрочем, и Вы!

И все это ради откровенно слабоватой аргументации «на моей памяти этим пользовались»?

Слабоватой? Тогда я уточню: на моей памяти этим пользовались, как минимум, на порядок больше людей (причём это в 2-3 организациях), чем пользуются Вашим компилятором сейчас (обозначим последнюю величину как N). Это опять к вопросу, что важнее, процесс или результат. Кстати, Вы так и не ответили, какова же Ваша цель?

Пока она видится только в создании компилятора для ограниченной группы людей. причём эти люди жестко привязываются в профессиональном плане к средству. Чем-то похоже на крепостное право. И выглядит это так, что дешевле один раз купить компилятор пусть того же PL (лучше Fortran).

Даже такая неповоротливая фирма, как IBM по компилятору PL выполняет RFE, которые имеют 1-2 голоса поддержки. Т.е. гуру языка прислушиваются даже к паре мнений от незнакомых, как правило людей. Но, да, это же тупые американцы, для России это не подход.

В данном случае, я на стороне д-ра Фрайбургхауса, который старательно все это сокращал для стандарта G.

Я понимаю Вашу любовь к нему, но мы с Вами вместе насчитали только 4 компилятора стандарта G. Общее число их пользователей в мире равно где-то на уровне N+o(N). Т.е., очевидно, что затея Фрайбургхауса в долгосрочной перспективе, является провальной, даже на фоне общих неудач языка. В карткосрочной, думаю, тоже. Я очень хорошо помню, когда мне принесли его творение (в виде компилятора Килдалла) — мой уход на столь нелюбимый в то время Фортран свершился за неделю. Это,, кстати, были времена MS DOS. А вот все более-менее массово работающие на сегодня компиляторы используют неудачный полный стандарт и лучшие свойства G.

все бесчисленные свистелки транслятора IBM

Я правильно понимаю, что транслятор для России XXI века должен быть предельно аскетичным — на уровне MS DOS?

я никогда не работал на EC ЭВМ

Вот это и есть главная причина наших разногласий. Т.е. Вы с самого начала привыкли к "удобствам" М-20 и БЭСМ. Тогда и MS DOS покажется раем.

Выше Вы писали, что

С проблемой переносимости (с архитектуры x86 на другую) так и не сталкивался, скорее виртуальные машины появятся на всех архитектурах для всех архитектур.

До сих пор ВМ (они работают в одной системе команд) для архитектур нет и не предвидится. Это решается эмуляторами со всеми их прелестями. Если промышленные ВМ есть, то вот таковых эмуляторов, кроме BlueStacks (для игрушек в основном) я не припоминаю.

     2019/05/26 11:46, VIT1972          # 

Автору сайта
Не можете ли Вы рассмотреть возможность создать отдельный раздел для обсуждения компилятора Дмитрия Юрьевича? Просто в любом случае полезная вещь (хоть и в себе), а сам он, видимо, стесняется попросить... Скажем, с такими подразделами: Статьи, Скачать (компилятор +документацию), Примеры программ, Предложения. Понимаю, что прошу многого, простите.

     2019/05/26 11:53, VIT1972          # 

И ещё о русском компиляторе. Любой компилятор, сделанный под операционную систему не русского происхождения, русским считаться не может — это самообман. Да и под процессоры иностранного происхождения так же.

     2019/05/27 03:13, theriodont          # 

Поэтому для меня естественно, что если не указать файл вывода — значит на экран, а ввода — значит с клавиатуры. А переопределить ввод/вывод удобнее операторами «>» и «<» ещё со времен MS DOS.

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

     2019/05/27 13:51, Автор сайта          # 

Любой компилятор, сделанный под операционную систему не русского происхождения, русским считаться не может — это самообман. Да и под процессоры иностранного происхождения так же

Удобная позиция для ничегонеделанья. Нельзя сделать «свой» язык, поскольку ОС всё равно не «наша». Невозможно сделать «свою» ОС, поскольку процессоры всё равно не «наши». И немногочисленные «наши» процессоры на самом деле не «наши», поскольку система команд не «наша». А единственный процессор «Эльбрус» с «нашей» системой команд делается на производственных мощностях не «нашей» Тайваньской полупроводниковой производственной компании. А ведь достаточного одного грозного рыка в их адрес со стороны заокеанского «партнёра» и — и всё, наша независимость сдуется ещё раньше, чем позиции Huawei.

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

Не можете ли Вы рассмотреть возможность создать отдельный раздел для обсуждения компилятора Дмитрия Юрьевича? Просто в любом случае полезная вещь (хоть и в себе), а сам он, видимо, стесняется попросить... Скажем, с такими подразделами: Статьи, Скачать (компилятор +документацию), Примеры программ, Предложения. Понимаю, что прошу многого, простите.

Ну так уже есть отдельные разделы, их 25. Они объединены подразделом «Статьи Дмитрия Караваева». Не хватает только раздела «скачать». По-хорошему, надо бы сделать сайт. Я излагал свои мысли Дмитрию Юрьевичу, как это сделать проще, быстрее и совершенно бесплатно. Если у Вас есть знания, навыки в Web-программировании, то мог бы перепоручить всё это Вам. Если нет, мог бы взять какие-то хлопоты на себя, но тогда будущий сайт про PL/1 будет таким же «самописным», как у меня.

Для меня, наверное, есть два вопроса:
  • Нужен ли Дмитрию Юрьевичу это сайт?
  • Кто-то готов администрировать сайт? Иногда, ежедневного вмешательства он не требует.

     2019/05/27 13:39, VIT1972          # 

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

Вы не поняли. Делайте на здоровье! Просто в наших условиях говорить о русскости не стоит.

Если у Вас есть знания, навыки в Web-программировании

Увы, нет.

Кто-то готов администрировать сайт?

Я могу, если там нет ничего сложного.

     2019/05/27 15:21, kt          # 

Куда-то дискуссия поворачивает не туда.

Вы первый, кто задал вопрос «зачем Вы рассказываете о компиляторе?». Я думал это и так ясно. Я рассказываю о приемах и идеях, которые я и несколько моих коллег использовали в своей долгой программисткой деятельности, а также о разных реальных случаях. Я писал об этом статьи, которые (пока не закрылся RSDN magazine) считались за публикации. Потом набрел на этот сайт, он и его аудитория мне понравились, и я предложил Автору сайта разместить материалы здесь. Я никого не хочу привязывать и не хочу выглядеть каким-то наркоторговцем, который даёт новичкам первую дозу бесплатно.

Так получилось, что сопровождаю компилятор, который очень хорошо лёг на мою инженерную деятельность, покрыв почти все потребности. Я понимаю разочарование тех, кто использовал другие области языка (работа с массивами и матрицами, комплексная арифметика) и не увидел этого в микроскопическом компиляторе Килдэлла. Но это не значит, что стандарт G провальный, у нас все большие проекты, где использовался PL-KT, кончились успехом. Этот продукт нас очень выручил в конце 80-х. Т.е., если бы не G, то и компилятора бы так рано не было. Кстати, у меня в 1987 году был экземпляр из института Радио №1450, сколько было реальных пользователей — не знаю, но, значит, по крайней мере, купило не менее полторы тысячи человек.

дешевле один раз купить компилятор пусть того же PL (лучше Fortran)

Вообще не понял. Я что, сбиваю или набиваю цену? Или никому не даю транслятор?

Даже такая неповоротливая фирма, как IBM по компилятору PL выполняет RFE, которые имеют 1-2 голоса поддержки.

Как-то в свете обсуждения ошибки комплексной арифметики этого не видно.

Вы с самого начала привыкли к "удобствам" М-20 и БЭСМ. Тогда и MS DOS покажется раем.

А это зря. «Я с детства привык к роскоши». Начиная с декабря 1979 года, я работал с БЭСМ-6 через удаленный терминал и диалоговую программу «Пульт» с файловой системой «Марс» и безо всяких перфокарт. Это ближе к Norton Commander, чем к MS DOS. Там даже был блок дружественного интерфейса «Джинн» с несколькими играми и разбором директив, заданных в произвольной форме.

Любой компилятор, сделанный под операционную систему не русского происхождения, русским считаться не может — это самообман. Да и под процессоры иностранного происхождения так же.

Процессор «Эльбрус» имеет блок трансляции х86. Так что, дело лишь за воспроизводством функций Win32 :)

Для theriodont:

C/C++ использует для работы с консолью и файлами разные функции

А мне в этом отношении PL/1 нравится, он выглядит стройным и продуманным:
Битовые строки — подмножество строк, булева переменная — подмножество битовых строк, консоль — подмножество файлов. Легко воспринимается.

     2019/05/27 19:20, VIT1972          # 

Вы первый, кто задал вопрос «зачем Вы рассказываете о компиляторе?»

Цитата выдернута из контекста. Главный вопрос — какова Ваша цель? На него нет ответа. Впрочем, не хотите — не отвечайте.

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

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

Но это не значит, что стандарт G провальный

Ну так по факту получилось! Все хорошее про G можно было сказать в 90-е.

Вообще не понял. Я что, сбиваю или набиваю цену? Или никому не даю транслятор?

Смотрите, тратится $20k. Грубо, это Ваша двухгодовая зарплата. За это получается компилятор, компилирующий под ту же Windows.
Среда Visual Studio получается бесплатно (Community Edition). В итоге люди работают с более мощным средством в современном окружении. У них появляется перспектива...

Как-то в свете обсуждения ошибки комплексной арифметики этого не видно.

Это только под Windows. В z/OS и AIX все в порядке. Не хотят её поддерживать. Насчет прислушивания к мнению единиц — смотрите, может, какие идеи и Вам понравятся.

А это зря.

Простите, тем более непонятно, откуда этот аскетизм

Процессор «Эльбрус» имеет блок трансляции х86. Так что, дело лишь за воспроизводством функций Win32 :)

Дай, Бог! Только причём русское и команды x86 и функции Win32? Я писал, что надо верно выбирать названия.

А мне в этом отношении PL/1 нравится

Но именно в нем усть DISPLAY/REPLAY. Чувствую, что рано я от него отказался — Ваша переписка с theriodont по этому поводу — типичный образец общения русского изготовителя с пользователем.

Дмитрий Юрьевич, выше Автор сайта спрашивает Ваше мнение по поводу сайта.

     2019/05/27 20:51, MihalNik          # 

переписка с theriodont по этому поводу — типичный образец общения русского изготовителя с пользователем

Типичного русского пользователя, не читавшего лицензионного соглашения?

нет ответа.

Какова цель размещения статей на данном сайте? Ответ через сообщение выше.
Какова цель данной статьи? Ответ в первых 3-х абзацах.

Просто в наших условиях говорить о русскости не стоит.

В Ваших условиях может и не стоит.

     2019/05/27 23:20, VIT1972          # 

Типичного русского пользователя, не читавшего лицензионного соглашения?

Любезный, Вы хоть поняли, что написали?

Какова цель размещения статей на данном сайте? Ответ через сообщение выше.
Какова цель данной статьи? Ответ в первых 3-х абзацах.

Вы опять мимо тазика. Специально для Вас процитирую ДЮ:

Тут надо, прежде всего, определиться с целью, если...


Вы как-то странно читаете.

В Ваших условиях может и не стоит.

Вам нравится заниматься самообманом. Только сильно не увлекайтесь.

     2019/05/28 03:15, theriodont          # 

Главный вопрос — какова Ваша цель? На него нет ответа.

Насколько можно понять из статьи — для ув. Д.Ю. это нечто вроде хобби, используемого ещё и по работе.

     2019/05/28 09:41, VIT1972          # 

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

theriodont
А, кстати, каким инструментарием пользуетесь Вы? А то мне не очень нравится айбиэмовское IDE. Из редакторов я знаю jedit (бесплатен), Boxer и Slickedit (платные, но можно найти)

     2019/05/28 09:52, MihalNik          # 

Цитируем ДЮ:

не торгую трансляторами, не ищу пользователей

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

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

писал об этом статьи, которые (пока не закрылся RSDN magazine) считались за публикации

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

     2019/05/28 09:53, VIT1972          # 

А вот ещё идея для ДЮ. Есть перспективный процессор отечественной разработки (весь технологический и софтовый инструментарий там, конечно, импортный) . Компания частная, бюджетных денег там нет. Она в самом начале пути, но кое-какие компиляторы уже есть. Процессоры популярны у военных. Если в эту архитектуру влезть с языком PL, то можно получить все прелести отсутствия конкуренции, так и продвинуть/возродить сам язык. К тому же, там сами пользователи требуют нормального языка высокого уровня. Владелец и разработчик очень приятный и контактный человек. www.multiclet.com

     2019/05/28 09:55, VIT1972          # 

MihalNik
Вы не очень обидитесь, если я попрошу Вас не отвечать мне на вопросы, адресованные не Вам?

     2019/05/28 11:35, Comdiv          # 

Видимо, ответы на многие Ваши вопросы очевидны всем, кроме Вас.

     2019/05/28 11:44, theriodont          # 

А, кстати, каким инструментарием пользуетесь Вы? А то мне не очень нравится айбиэмовское IDE. Из редакторов я знаю jedit (бесплатен), Boxer и Slickedit (платные, но можно найти)

Для PL/I — FAR + Rexx, из сторонних редакторов ещё Kate также умеет парсить плишные исходники.

     2019/05/28 12:12, VIT1972          # 

Видимо, ответы на многие Ваши вопросы очевидны всем, кроме Вас.

Вы умеете додумывать, я — нет, считайте меня тупым, если Вам так удобнее. Вот когда ДЮ четко сформулирует цель, тогда я буду удовлетворен. Пытаясь ответить за него, Вы создаете видимость, что он за Вас прячется! И повис не только вопрос о цели, тут ещё и более конструктивные висят: насчет помещения в FAQ, насчет сайта.

     2019/05/28 13:23, Comdiv          # 

считайте меня тупым, если Вам так удобнее

Вы не тупы, Вы навязчивы. И если Вы считаете, что кому может быть удобным считать Вас тупым, то и додумывать Вы тоже умеете отлично. Требуя(или прося) от Дмитрия сформулировать цель, Вы стучитесь в открытую дверь — цель давно была озвучена.

А так — транслятор PL/I не нужно развивать и продвигать, его нужно поддерживать, так как PL/I — это прошлое, а не будущее.

     2019/05/28 14:09, VIT1972          # 

Вы навязчивы.

Но милый мой, и Вы навязчивы! Ибо упорно пытаетесь ответить на вопрос, заданный не Вам. Впрочем, если Вы покажете мне названную и четко сформулированную цель самим ДЮ, я извинюсь. Если Вы имеете отношение к обсуждаемому компилятору, можете сделать это сами. Последний раз, специально для Вас, повторяю, нигде тут цель четко не указана. Все цитирования выше — это растекание мыслью по древу. Кроме того, цитата, приведенная мной выше сильно новее даваемых волонтерами. Теперь-то, компрене?

И, знаете, мне совсем неинтересно обсуждать ни Вас, ни себя. Давайте будем обсуждать язык-компилятор и дадаим высказаться ДЮ.

     2019/05/28 16:41, Автор сайта          # 

Давайте жить дружно

     2019/05/28 23:36, kt          # 

Давайте снизим градус обсуждений. Повод для этого слишком ничтожен.

Ув. VIT1972, кажется, подозревает, что у меня есть тайная цель, типа управлять миром через PL/1 не привлекая внимания санитаров. Разочарую. Нет у меня тайных целей. Лет 10 назад, да, хотели удивить гугл-группу, но всерьез там нас не приняли. Кстати, я обратил внимание, что у Робина нет упоминаний, что PL/1 был в СССР реализован на Эльбрусе. Думаю, он даже не подозревает о существовании такой системы. Поэтому пусть его FAQ остается прежним, черт с ним, больше неинтересно.

Ув. Theriodont предположил, что у меня хобби. Не совсем так. Хобби можно бросить без ущерба работе, а здесь уже так не получается. Несколько раз «в эпоху перемен» был близок к тому, чтобы все бросить и «стать как все». Но каждый раз решения находились, а казавшиеся непреодолимыми ограничения отступали. В начале 1995 года был придуман режим 32-разрядной адресации данных в реальном режиме, в конце этого года и код стал располагаться в 32-х разрядном режиме реального адреса. Так работали почти 10 лет, под MS DOS, но в 32 разряда. В 2005 все-таки перешли на Win32, а к лету 2015 и на х86-64. Каждый раз это требовало огромных усилий. И поэтому хотелось рассказать всем и об этих усилиях и об успехах. А тут и трибуна обнаружилась в виде RSDN magazine как ВАКовского издания. Вот собственно и все.

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

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

Что касается сайта, то если М. Зимнов (прошлый раз я ошибся в написании фамилии, извиняюсь) раскачается, то, возможно PL1.su оживет. Но и здесь уже есть отдельный раздел, все хорошо, по-моему. Добавим ссылки на документацию, примеры и транслятор и станет ещё лучше.

     2019/05/29 00:28, VIT1972          # 

VIT1972, кажется, подозревает, что у меня есть тайная цель

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

Лет 10 назад, да, хотели удивить гугл-группу, но всерьез там нас не приняли.

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

Поэтому пусть его FAQ остается прежним, черт с ним, больше неинтересно.

Право, зря Вы так! Компилятор достоин быть там. Вы, уж простите, но Вы, право, очень мнительный и обидчивый. Так нельзя. Не ради себя самого, ради Вашей 30-летней работы! Я повторяю свое предложение быть посредником между Вами и тем же Робином. Я бы это сделал бы и так, но у меня материалов нет. Даже ссылок на какую есть документацию.

Каждый раз это требовало огромных усилий.

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

Никаких иллюзий по поводу коммерческой выгоды от компилятора не было с самого начала

Опять зря. Был бы сайт, можно было бы и продавать за деньги на поддержку того же сайта (5-10 долларов). Я бы, не думая, и $100 заплатил бы, несмотря на всю мою тут критику. Да и помощников искать было бы легче.

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

Честно говоря, я так и не понял Вашей цели. Попробую сформулировать её сам, уж не обессудьте, поправите если что.

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

Что касается сайта, то если М. Зимнов (прошлый раз я ошибся в написании фамилии, извиняюсь) раскачается

Это Ваш сотрудник? Как его найти? Давайте я с ним пообщаюсь, как-нибудь инициирую. Мы говорим о pl1.su? Я туда зашел, он и впрямь заброшен. Название больно хорошее, оно прямо в цвет, что называется. Если сам он не может, или ему неинтересно, так мы с помощью АВТОРА САЙТА доделаем, может, на другой хостинг перенесем. У новой версии должен быть и английский язык, кстати.

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

P.S.
Не могу удержаться от повторения вопросов:
1. Как с Вашей задумкой насчет управляемой памяти?
2. Как Вы смотрите на файлы ресурсов, т.е. реализацию многоязыковости? Тут чем могу — помогу. Уж документацию переведу всяко. Можете мне слать поправки если они есть — начну в выходные и оценю потребное время.

     2019/05/29 15:02, MikeZ          # 

Какое тут бурное обсуждение! Надо добавить свои 5 копеек. Я не сотрудник Дмитрия Юрьевича, и то, что он сделал, это подвиг! К тому же, в чисто нашем духе. От этого он не перестает быть подвигом. Для первого изучения языка его компилятор очень хорош. Если его возможности устраивают, а начальство не против, можно на нем и работать. Для хобби вообще идеален. Другое дело, что язык давно не распространяется и используется в узкой нише, пусть и активно.

Сайт есть только формально, года 3 я там ничего не делал. Если я правильно понял автор этого сайта готов помочь создать сайт, а vit1972 готов его администрировать. Никаких проблем нет, давайте мне координаты, я вышлю данные админа. Если сайт будет сделан вами, то будет здорово. Только лучше не замыкаться на PL-KT, а посвятить его языку в целом. Мой план реанимации сайта я Дмитрию Юрьевичу посылал и ky в целом согласился. Привожу его тут в конце сообщения. Но вам виднее. Если вы сделаете сайт это будет очень полезно, ещё и потому, что я недавно поузнавал цену за сайт и за встаивание в какой-либо IDE и понял, что смогу сделать сразу только одно. Т.е. создание сайта даст мне возможность сосредоточиться на IDE.

Давно я переводил какие-то статьи Дмитрия Юрьевича для Питера Фласса. Если надо поучаствовать в переводе, я могу. Я тоже считаю, что и компилятор, и документация, и сайт должны иметь и английские версии. Согласен и с тем, что полезно подключать и сидельцев гугл-группы. Надо только отдавать себе отчет, что им в массе по 70+ лет. Советом они могут помочь сильно, но что-либо делать — нет. Часто упоминаемый здесь Робин по моей просьбе году так в 2006 целый раздел посвятил численным программам PL и приятно было даже здесь встретить упоминание о Марианне Григорьевне Белкиной. Она когда-то писала первую прикладную программу в СССР, причём делала это, не поверите, с помощью молотка. Робин не только дал на них ссылку, но и создал целый раздел на своем сайте, причём создавал/переводил для него программы пару лет. Кстати, неверно утверждение, что после 3-го издания книги Хьюз, вышел только Штурм. Между ними вышла Vowels R. Introduction in PL/I. Algorithms and structured programming. 2003.

Тут долго выясняли цель Дмитрия Юрьевича. Цель, понимаете, формируется из возможностей и желаний. Насколько я знаю, он занимается компилятором один, поэтому возможностей (времени) у него мало. Вот как и когда, скажите, он будет переносить компилятор на новую архитектуру — мультиклет? Хотя идея красивая. Насчет желаний, так его все устраивает и он много раз говорил, что строит компилятор исходя из своего видения. Поэтому не стоит ожидать поддержки полного стандарта, он вырос на идеях Килдала и стандарта G, все остальное его почти не интересует. Я пару лет назад выяснил, что если программист не видел, как реализуется пресловутая управляемая память, то ему очень трудно её написать, тем более на ассемблере. Она вообще реализуется непросто, а он и так проделал гигантскую работу. С другой стороны, и в IBM им сейчас занимается группа из 3-5 человек, но они-то пишут компилятор на PL/I, а это легче.

Часто упоминается ошибка с комплексами в IBM компиляторе. У неё смешная история. На днях я нашел человека, работающего на машине ЕС удаленно сегодня(!) и программирующего на PL. Так вот говорит, что такая же ошибка впервые возникла на машинах Ряда 1 (на исходных машинах S360 и S370 её не было). Т.е. русским явно есть чем гордиться :). Я более полугода ищу исполнителя на исправление её в коде компилятора за деньги. И что вы думаете? Я имею 14 предложений. По 5 ответов двух типов: "это элементарно, сделай это сам" и "это невозможно в принципе". 3 человека в чисто русском духе предложили переписать вообще все-все на "современный язык", а один запросил цену, равную стоимости мейнфрейма с z/OS и PL-компилятором. Ответы типа "все понятно, готов начать сегодня, шли предоплату" — это на самую общую постановку задачи, я не считал. Сие плавно переводит нас к обсуждаемому тут вопросу

о "русскости". Даже БЭСМ не чисто наша разработка. Там система команд от CDC вроде взята. Говорите, есть Эльбрус. А зачем в нем блок x86?! Чтобы на компьютере умеренной мощности за несколько тысяч долларов гонять то, что будет летать на простом офисном за 500? Нарушая при этом безопасность! В нём всё, кроме условно наших процессора и чипсета иностранное. Пару лет назад я общался на выставке с его разработчиками и маркетологами. Вспоминаю с ужасом. Типичный распил бюджета. Чисто в российском духе часы за пару тысяч долларов и несмытый флюс на платах. Так что в перспективе ближайших 30 лет ничего Россия тут не добьётся. Не верите — перечитайте статью Дмитрия Юрьевича в этой теме.

Для vit1972. Не надо тут пустых споров! На каждом сайте всегда возникает группа самоназванных модераторов и блюстителей этики! С ними не надо ни бороться, ни спорить. Самое действенное игнорировать.

План сайта:
1. Контент: статьи Дмитрия Юрьевича и всех, кто пожелает, сам компилятор, примеры программ, документация
2. Максимально легкая панель администратора — чтобы было просто обновлять
3. Форум с разделами: новая версия, предложения пользователей возможность создания разделов
4. Новости
5. Онлайн-компиляция с возможностью загрузки exe
6. Английская версия сайта

     2019/05/29 15:31, VIT1972          # 

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

ДЮ, мне начинать перевод той документации, что есть? Дополнений, изменений не будет? В силу своих знаний на начальном этапе я могу участвовать как переводчик материалов сайта.

Наличие сайта сразу снимет массу возникших здесь вопросов.

     2019/05/30 11:06, kt          # 

Идея по простой реализации массивов с динамическими границами следующая.

Какое «самое паллиативное» решение? Изменить границы и перетранслировать вновь. Спокойно! Я это не предлагаю делать. Но чем в таком случае отличались бы два варианта программ? Некоторыми константными частями некоторых команд. А что, если написать служебную подпрограмму с именем, скажем, ?RETRANSLATE и двумя параметрами: указателем на выделенную память для массива (ну, если она уже выделена) и ссылкой на сам массив. А при трансляции запомнить адреса таких команд и сохранить информацию, каким образом получились в командах такие константы. Тогда после задания новых границ индексов, например, в служебных переменных ?INDEX_nn и обращения к ?RETRANSLATE команды изменятся так, как если бы произошла перетрансляция с новыми границами.
Вот бы и получился аналог динамических границ:

DCL XXX(*,*) FLOAT CTL;
DCL (M,N) FIXED(31);

?INDEX_11=1; ?INDEX_12=N;
?INDEX_21=1; ?INDEX_22=M;
?RETRANSLATE(NULL,ADDR(XXX));
ALLOCATE XXX;
В случае передачи параметров (как я понимаю, это и есть главная цель динамических границ):
Вызов подпрограммы
УМНОЖЕНИЕ_МАТРИЦ(ADDR(M1),ADDR(M2),ADDR(M3),M,N);
Описание подпрограммы
УМНОЖЕНИЕ_МАТРИЦ:PROC(P1,P2,P3,N1,N2);
DCL (X1,X2,X3) (*,*) FLOAT CTL;
DCL (P1,P2,P3) PTR;
DCL (N1,N2) FIXED(31);

?INDEX_11=1; ?INDEX_12=N1; // \НОВЫЕ ГРАНИЦЫ
?INDEX_21=1; ?INDEX_22=N2; // /МАССИВОВ
?RETRANSLATE(P1,ADDR(X1));
?RETRANSLATE(P2,ADDR(X2));
?RETRANSLATE(P3,ADDR(X3));
Возникает много всяких тонкостей, например, запретить HBOUND для таких массивов, как быть с параллельностью и т.п. Но и преимущества такого подхода есть, например:
- генерация кода не меняется;
- скорость такая же, как для константных границ

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

     2019/05/30 12:12, VIT1972          # 

Идея по простой реализации массивов с динамическими границами следующая.

Вот за это огромное спасибо! А скажите, вот такие строки в главной программе:
?INDEX_11=1; ?INDEX_12=N;
?INDEX_21=1; ?INDEX_22=M;

и такие в вызываемой:
?INDEX_11=1; ?INDEX_12=N1; // \НОВЫЕ ГРАНИЦЫ
?INDEX_21=1; ?INDEX_22=N2; // /МАССИВОВ
?RETRANSLATE(P1,ADDR(X1));
?RETRANSLATE(P2,ADDR(X2));
?RETRANSLATE(P3,ADDR(X3));

нельзя ли переложить на плечи не программиста, а транслятора? Пусть он вставляет их в создаваемый псевдокод.
Тонкости, если они известны и описаны — ерунда. А как будет с FREE?

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

     2019/05/30 12:45, kt          # 

Во-первых, спасибо говорить пока не за что. Я ещё ничего не сделал и это вопрос, возможно, многих недель. Какие появятся подводные камни при таком подходе ещё неизвестно.

А во-вторых, убрать эти белые нитки нельзя без создания радикально нового транслятора.
Допустить описание
DCL X(*,*,*) FLOAT CTL;
легко: звездочка просто заменяется на какую-нибудь большую константу, чтобы будущие команды умножения не выродились и остались «знакоместа» для новых значений.
Но тогда, нет связи между индексами и конкретными значениями. Транслятор не может узнать, что какое-нибудь N10 — это новое значение третьего индекса. Такую связь должен явно задать программист. Например, через присваивание ?INDEX.
А если передавать указатели в подпрограммы — транслятору невозможно найти связь указателя с конкретным массивом.. Это опять должен явно указать программист через вызов ?TRANSLATE,

С оператором FREE как раз никаких сложностей не вижу — при таком подходе он не меняется.

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

     2019/05/30 13:26, VIT1972          # 

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

     2019/05/30 13:28, VIT1972          # 

Забыл, а что Вы считаете первоочередной задачей вообще?
А что есть таковая, с которой бы я справился?

     2019/05/30 14:01, kt          # 

Гипотетический препроцессор тоже ниоткуда не может узнать, что, например P3 это адрес массива, который внутри подпрограммы назван X3.

Я имел ввиду оживление и оформление сайта. И у Зимнова англоязычный вариант стоит последним в списке.

     2019/05/30 14:30, VIT1972          # 

Тогда мы ждем ответа Автора сайта, готов ли он заняться этим оживлением? А я пока поперевожу. Медленно.

     2019/05/30 17:01, Автор сайта          # 

MikeZ

Какое тут бурное обсуждение!

Оказывается, жизнь пролетала мимо Вас, а Вы и не замечали :)

Насчёт моей готовности сделать сайт про PL/1. Я — тот ещё web-программист. Когда мне припёрло сделать этот сайт, я продвинул свои знания в этой сфере ровно настолько, насколько мне было необходимо. Но не более. Поэтому меня не берут работать по этой специальности — многие вещи я и не собирался изучать :) Для создания своего сайта я не брал какой-то готовый «движок». Всё самописное, всё своё. Я готов создать клон своего сайта, но залить его другим содержимым. Никакой админовской панели у сайта нет, вся работа делается в FAR-е в текстовых таблицах. Для работы сайт использует 2 технологии/языка: html и PHP. Ни Javascript, ни SQL тут не применяются. Для обеспечения двуязычности сайта определённые переделки потребуются.

Если функциональность моего сайта как-то ограничивает задумки (а она, надо честно сказать, невелика), то надо переходить на «классические» CMS типа Wordpress, Yii и т. д. Но я их не знаю и для воплощения задумок надо искать web-программиста.

Сейчас имеется сайт pl1.su. Если сайтом про PL/1 буду заниматься я, то мне, кроме доменного имени, ничего не надо. Да и оно, похоже, тоже мне не нужно. Лучше взять бесплатный домен 2-го уровня типа pl1.tk — не потребуется ежегодно отдавать кесарю кесарево. Хостера тоже предпочту поменять, поскольку сейчас pl1.su работает на ucoz.ru, а он даёт возможность создания только html-страниц. Хостер тоже будет бесплатный. Забрать контент с pl1.su можно и без админовского доступа, Ctrl-C, Ctrl-V. Единственный момент, требующий прав администратора — это отвязка домена pl1.su от старого хостера и привязка к новому. Если же остановиться на бесплатном варианте ( pl1.tk), то и этого не надо.


Теперь осталось выяснить, насколько нужен этот сайт :) Помимо самого Дмитрия Юрьевича и его коллег, пока что засветилось 3 человека. На англоязычную версию сайта подтянутся ещё и 70-летние заокеанские «партнёры» :) Ну и мнение самого Дмитрия Юрьевича важно. Если это ему не надо будет — то зачем оно мне? У Вас какие планы, Дмитрий Юрьевич?

     2019/05/30 21:11, kt          # 

Эхе-хе. Сначала наговорили кучу технических подробностей, в которых я ни уха ни рыла.
А теперь ещё спрашивают нужен ли мне сайт? И где VIT1972, когда он так нужен…

А если серьезно, то сайт мне нужен, но не любой ценой.
Вот название PL1.SU я бы оставил. Деньги там невеликие, Михаил несколько лет платил только за имя. Наверное, надо освободить его от этого или хотя бы разделить на всех.
Что касается заинтересованных, то насколько я понимаю инициативных двое и они как раз и хотели бы, в том числе и с помощью сайта, попробовать разогнать язык по новой, ну, и самим как-то использовать. Контента на начальном этапе хватит.

     2019/05/30 21:22, Геннадий Тышов          # 

PL/1 был первым языком, мною освоенным. Было это в 1980 году, я был тогда инженером по обслуживанию ЭВМ ЕС-1022. ЭВМ ЕС-1022 сооружение на 200 кв.м., масса обслуживающего персонала и служб. Теперь нет тех машин и PL/1 мне не нужен.

Интересно знать, кому PL/1 нужен и для чего? Корме как для ностальгии. Разве нет более простых и достаточный языков? Разве нет более достойных и нужных занятий?

     2019/05/30 22:32, VIT1972          # 

ДЮ, я тут. Раз сайт нужен, будем делать. Имя домена и впрямь удачное. Надо только понять, что и в каком случае, мы получим. Предложение Автора сайта хорошо, и в любом случае спасибо ему. Дайте мне подумать и осмотреться.

     2019/05/30 22:55, VIT1972          # 

Геннадий Тышов

Интересно знать, кому PL/1 нужен и для чего?

Во-первых, не все перенесли революцию, как мы. Во-вторых, это у нас резко изменились железо и софт. Не думаю, что сейчас он широко используется в России, но на Западе он достаточно распространён и в топ-100 языков входит. В качестве PL/SQL он в том же рейтинге обходит Фортран. SAP или SAS, все время путаю, вся написана на нём и её язык — чистый PL. А это система совсем не для бедных. Думаю, что он занимает большую долю во всех несофтверных компаниях из fortune-500. Для него есть и развиваются компиляторы. Есть крупные банки, которые вообще не хотят, чтобы их софт, написанный 50 лет назад, менялся и они платят любые деньги за поддержку языка. Он очень широко распространен в Германии, Бельгии, Франции, это что я знаю.

Он не в тренде, поэтому шума вокруг него нет. У него исчерпывающая документация, а квалификация его программистов такова, что они не задают вопросы "а как...", а просто делают. Посмотрите форум по мейнфреймам (они до сих пор есть и он там до сих пор работает). Там на 90% таких вопросов следует ответ "это есть в документации".

Разве нет более простых и достаточный языков?

Вы немного сможете назвать. Сложность PL — миф (мы же с Вами его изучили). На нем Вы никогда (даже желая) не сделаете тех ошибок, которые легко получаются в C. Но да, есть, и что?

Разве нет более достойных и нужных занятий?

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

     2019/05/31 11:04, MikeZ          # 

Оказывается, жизнь пролетала мимо Вас, а Вы и не замечали :)

Только сейчас научился цитировать... Жизнь, вообще, хороша лишь тем, что она коротка :)

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

     2019/05/31 12:22, VIT1972          # 

Тут писали, что хостинг pl1.su плох. А кто может посоветовать хороший?

     2019/05/31 14:01, MikeZ          # 

Хостинг можно и менять, но я сейчас не могу сказать, на какой. Мне сейчас срочно нужен список всех страниц сайта, хотя бы названия, остальное я допишу. Это нужно тем кто будет делать, т.к. тема нестандартная и они боятся сделать не так. Лавайте поактивнее, пожалуйста!

     2019/05/31 18:38, Comdiv          # 

В качестве PL/SQL он в том же рейтинге обходит Фортран

PL/SQL и PL/I роднит алголоподобность и первые три знака в названии, а так 1-й язык производен от Ada

     2019/06/01 09:38, MikeZ          # 

Вот выданное задание на сайт www.pl1.su. Вероятность, что исполнитель найден 90%. Т.к. все молчат, я взял на себя смелость его написать и жить придется в рамках этой реализации. Поэтому всем заинтересованным предлагаю подумать о контенте и предложить/предоставить его.

Функциональность:
1. Сайт двуязычный (вверху есть кнопка рус/англ)
2. Личный кабинет стандартный (логин, почта с её подтверждением, пароль)
3. Форум (пишут те, кто зарегистрировался). Есть явно видимая пользователем возможность google-перевода в обе стороны)
4. Поиск по сайту
5. Обр. связь (нужна ли?)
Страницы. Слева колонка ссылок на них.
1. Новости (возможность простого их добавления)
2. Статьи (возможность простого их добавления)
3. Компилятор PL/1-KT. (возможность просто добавлять новые версии и доп. Страницы в подразделы 3.3, 3.4)
3.1. Скачать последнюю версию
3.2. Документация. Скачать
3.3. Примеры программ
3.4. Приемы программирования
4. Другие компиляторы PL/I
4.1. IBM
4.1.1. VisualAge. Описание, скачать
4.1.2. Rational Developer for z. Описание и скачать
4.2. Raincode. Описание, ссылки
4.3. Micro Focus. Описание, ссылки
4.4. Iron Spring. Описание, ссылки
4.5. Kednos. Описание, ссылки
4.6. Другие. Описание, ссылки
5. Программы. Тут будут ссылки на просмотр-загрузку исходников
6. Сайты. Ссылки на сайты типа: ссылка, краткое описание. Пополняемо.
7. Форум, с разделами: PL/1-KT; другие компиляторы PL/I; предложения; разное. Возможность администратора удалять посты и банить хулиганов.
Остальные пожелания.
1. Дизайн минималистично-строгий. За основу можно взять. Iron-spring.com, но не тянуть оттуда. Можно даже стилизовать под терминал командной строки.
2. Максимально простая панель администратора. Даже вообще ничего не понимающие люди могут добавить материалы, в частности, загрузить новую версию PL/1-KT.
3. Сейчас хостинг на ucos. Он будет меняться, т.к. ucos много чего не поддерживает. Таким образом, переделанный сайт надо ещё и перенести на новый хостинг. Какой, пока не определено. Предположительно на hostiman.ru

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

     2019/06/01 10:55, VIT1972          # 

Ничего в этом не понимаю, но есть ещё hostinger.ru

     2019/06/01 11:16, kt          # 

По-моему, очень хорошо.

Даже вообще ничего не понимающие люди могут добавить материалы, в частности, загрузить новую версию PL/1-KT

Это точно про меня )

По удачному опыту compiler.su можно ещё предложить
  • раздел новости и прочее,
  • возможность писать на форум без регистрации с простейшей защитой от ботов.
Эту возможность, может быть, надо разрешить через некоторое время, когда боты и спамеры схлынут. Хотелось бы после захода на сайт сразу видеть, есть ли что-то новое или нет, без дополнительных кликов.

     2019/06/01 17:04, Автор сайта          # 

По поводу нового сайта. Хостинг от hostiman.ru бесплатен только первые 30 дней. Выбирая хостера, надо ещё смотреть пакет услуг. Если доверяете мне сделать новую версию сайта про PL/1 с теми же возможностями, что и на этом сайте, то согласен. Если эти возможности не устраивают, то... Некоторые хотелки я могу выполнить. Другие не готов.

Максимально легкая панель администратора — чтобы было просто обновлять

Её просто нет. Но могу написать краткую инструкцию, как и что надо делать в FARе для администрирования.

Форум с разделами: новая версия, предложения пользователей, возможность создания разделов

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

Онлайн-компиляция с возможностью загрузки exe

А как Вы это представляете? Лично я представляю это так.
  • Сайт работает на сервере, на котором есть Windows (ведь у компилятора pl1-kt нет версии под Linux?), запущенная или на реальном железе, или в виртуальной машине. Предложения об аренде таких серверов есть, но они не бесплатны.
  • Кнопка в форме ввода исходного текста на PL/1 должна
    1) сохранить текст на сервере,
    2) запустить компиляцию этого файла,
    3) выдать сообщение о результатах компиляции,
    4) выдать ссылку для скачивания «*.exe».

Сайт двуязычный (вверху есть кнопка рус/англ)

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

Личный кабинет стандартный (логин, почта с её подтверждением, пароль)

Собственно кабинета нет, но есть регистрация, авторизация — всё как положено.

Форум (пишут те, кто зарегистрировался). Есть явно видимая пользователем возможность google-перевода в обе стороны)

У меня нет собственного форума и делать его не собираюсь. Есть масса бесплатных сервисов, предоставляющих форумы. Например, http://mybb.ru/

Поиск по сайту

Это делается и без кнопки поиска на сайте. Заходишь в поисковую систему и пишешь: <искомая строка> site:pl1.su».

Обр. связь (нужна ли?)

С кем? На моём сайте адрес почты внизу каждой страницы. Так не устраивает?

Новости (возможность простого их добавления)

Требует небольшой доработки.

Статьи (возможность простого их добавления)

У меня этого нет, хотя раньше было. Потом в процессе доработок исчезло за ненадобностью, т. к. писал один я.

Сайты. Ссылки на сайты типа: ссылка, краткое описание. Пополняемо.

Есть риск, что поисковые системы будут считать сайт «ссылочной помойкой». Поначалу у меня так и было. Впрочем, я же нашёл способ побороться за репутацию :)

1. Дизайн минималистично-строгий. За основу можно взять. Iron-spring.com, но не тянуть оттуда. Можно даже стилизовать под терминал командной строки.

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

2. Максимально простая панель администратора. Даже вообще ничего не понимающие люди могут добавить материалы, в частности, загрузить новую версию PL/1-KT.

В каком направлении загрузить — на сайт или с сайта? У Дмитрия Юрьевича трудностей с этим не будет (в обоих нпаравлениях), он же привык к FAR-у :)

возможность писать на форум без регистрации с простейшей защитой от ботов.

На моём сайте пишут все желающие, им просто задаётся вопрос для отсева ботов. Авторизовавшиеся же пользователи этого вопроса не видят.

Хотелось бы после вызова стартовой страницы сразу видеть есть что-то новое или нет, без дополнительных кликов.

Значит, стартовой страницей должна стать страница новостей.

MikeZ

Говорите, есть Эльбрус. А зачем в нем блок x86?!

На нём нет этого блока. Но есть двоичная трансляция команд x86 в родные коды. Этот блок, можно сказать, программный. У них на сайте одно время висела вакансия «разработчик двоичного транслятора».

Чтобы на компьютере умеренной мощности за несколько тысяч долларов гонять то, что будет летать на простом офисном за 500?

Нет, чтоб отсечь американских/израильских ребят с холодной головой, горячим сердцем и длинными руками. Слышал, что Иран покупал «Эльбрусы». Сделали выводы после аварии с урановыми центрифугами.

Нарушая при этом безопасность!

Таки всё наоборот, приобретая её.

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

А я общался с Алексеем Марковым, разработчиком компилятора C++ в МЦСТ. Он придерживается прямо таки противоположного мнения и не стыдится за свою работу и за свою компанию. Пишет статьи на Хабре и в своём блоге и опровергает многие стереотипы, с которыми Вы познакомили нас здесь.

Так что в перспективе ближайших 30 лет ничего Россия тут не добьётся.

Будем посмотреть.

Не верите — перечитайте статью Дмитрия Юрьевича в этой теме.

И в каком месте он был пессимистичен — относительно себя, своей РКК «Энергия» или своей страны?

     2019/06/01 17:41, MikeZ          # 

Хостинг от hostiman.ru бесплатен только первые 30 дней.

Спасибо, значит, тут они врут: https://cp.hostiman.ru/cart.php?gid=2& или надо смотреть глубже.

Её просто нет. Но могу написать краткую инструкцию, как и что надо делать в FARе для администрирования.

Тут я не советчик, я в FAR почти не работал... Если Дмитрий Юрьевич согласен, то полдела сделано, но нужен ещё один человек.

Не понимаю, что Вы имеете в виду под «новой версией».


Новую версию компилятора. Насчет форума решаю не я.

А как Вы это представляете? Лично я представляю это так.

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

С кем?

Я тоже не знаю. Выкидывать — не добавлять — дешевле будет.

В каком направлении загрузить — на сайт или с сайта?

В общих. Дмитрий Юрьевич и журналисты грузят на сайт, счастливые пользователи — с сайта.

Этот блок, можно сказать, программный

Т.е. все же что-то есть?

Нет, чтоб отсечь американских/израильских ребят

Чтобы это сделать по-настоящему, нужны общеизвестные меры, и совсем не нужен Эльбрус с его программным блоком.

Таки всё наоборот, приобретая её.

Тогда я ежедневно вижу гения! На моих глазах мой программист (кстати, очень любит FAR и он очень хвалил этот "программный блок") сломал эльбрусовский сервер, стоящий... в совсем другом месте. Он, конечно, очень грамотный, но не до такой же степени.

А я общался с Алексеем Марковым, разработчиком компилятора C++ в МЦСТ. Он придерживается прямо таки противоположного мнения и не стыдится за свою работу и за свою компанию.

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

Будем посмотреть.

Дай Бог! Но уже лет 50 смотрим. Уже даже "израильские ребята" отчаялись.

И в каком месте он был пессимистичен — относительно себя, своей РКК «Энергия» или своей страны?

Об этом тяжело писать. Пессимизм и безысходность разные вещи. В отсутствии второй, первая не решающий фактор. Я говорил не том, что писал Дмитрий Юрьевич, а о впечатлениях после прочтения. Заметьте, я не "человек с хорошим лицом", для них эта статья вообще кладезь. Смотрите, вот очень хороший специалист, работая в неплохом месте, делает очень хорошую вещь. И никому до этого дела нет. А на поделку типа Windows Tweaker слетаются как мухи на мёд. Даже на уровне молвы никуда не идет. Я про этот компилятор рассказал, наверное, паре сотен людей, связанных и с программированием, и с патриотами-программистами, и патриотично настроенными инвесторами. Где они? Запустите сайт, сделав его и на английском, чуточку крутаните и там, и тут, после этого вспомните мои слова. Не надо говорить, что виноват ПЛ, ведь даже сидящие здесь любители если и пишут на ПЛ, то компилятором пользуются не KT. Если Вы думаете, что в других сферах не так, тогда заходите в мой двор на Маросейку. Это далеко не самый дешевый район. Там, на развалинах, сделали очень приятный парк-сквер. Поверьте, котлован был лучше! Я не очень против, чтобы в нём спали бомжи (им же надо спать), но с утра и до 2 a.m. их сменяет молодежь. Она там пьёт, трахается (порой и днем: время — деньги), мусорит. В нём никогда не сидят парочки, никто в нём не работает за планшетом (думаю, таких уже просто нет). Я никогда не был ангелом и курю, и пил, и с девками просто безобразно себя вел. Но я, кроме курения, никогда не делал это в общественных местах, даже в голову не приходило. У меня в подъезде был лифт, отделанный полированными панелями. А в подъезде жили такие деятели, что сидят до сих пор. Так вот, этот лифт десятилетими стоял девственно чистым — ни единой царапины. Совсем недавно я приехал на новоселье к знакомым. Тоже не дешёвый район. Там в лифте СТАЛЬНЫЕ панели были искорежены! Заметьте, мой двор не посещают одни и те же люди, там ежедневно меняющийся контингент. Теперь скажите, пожалуйста, на что Вы собираетесь смотреть-то? Кто будет реализовывать все Ваши благие (без иронии) пожелания? Что-то я оффтоплю, простите, на этой мажорной ноте заканчиваю.

     2019/06/01 18:13, VIT1972          # 

Очень много написано, я с трудом все это прочёл.
Ситуация проста. Мы все согласны, что сайт нужен. Есть достаточно подробное описание будущего сайта. Обратную связь из него и впрямь стоит выкинуть. Online компиляция тоже выброшена уже. ДЮ оно устраивает. Сейчас мы ждем отмашки MikeZ. Либо он реализует это задание, либо Автор сайта будет нашей последней надеждой.

Если рассматривать это описание, как основу, то распределение ролей в первичном наполнении содержимым видится так (простите, что я назначаю ответственных):
ДЮ: полностью п.3, частично п.п.1,2
Я: частично п.п.4,5,6
Это о русской версии.
Английскую делаем мы с MikeZ

Все остальные, разумеется, приглашаются во все пункты. Что-то нас маловато...

И давайте, если уж так необходимо, обсуждать Эльбрус в другом разделе.

     2019/06/01 21:58, Comdiv          # 

Сайт работает на сервере, на котором есть Windows (ведь у компилятора pl1-kt нет версии под Linux?)

Так Linux — это ядро, непосредственно для него мало кто пишет. Для запуска прикладных программ нужно дополнительное API/ABI, и хотя родным для Linux считается слой POSIX от GNU, воплощение WINAPI тоже имеется и для запуска транслятора Дмитрия оно вполне подходит — проверено.

     2019/06/01 22:23, VIT1972          # 

Так Linux — это ядро, непосредственно для него мало кто пишет.

Вот когда разработчики транслятора пишут такое, начинаешь верить ужасам, описанным выше.
Ладно IBM славится выкидыванием денег на ветер. Но Intel, Nvidia, Absoft в этом вроде не замечены. Зачем они делают компиляторы под Linux? Даже MS тут робко отмечается. Кроме того, коль Linux — ядро, так это ядро столь милых нашему сердцу русских ОС.

     2019/06/01 22:45, Comdiv          # 

Когда научитесь отличать GNU/Linux от Linux, и PL/SQL от PL/I тогда можно вернуться к этому разговору, но до тех пор Ваша ирония выглядит как самобичевание.

     2019/06/02 00:50, VIT1972          # 

тогда можно вернуться к этому разговору

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

     2019/06/02 01:34, Comdiv          # 

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

     2019/06/02 20:42, Автор сайта          # 

Что-то нас маловато...

Честно говоря, я пока что заметил только трёх человек, интересующихся PL/1. Тут даже коллег Дмитрия Юрьевича нет. И ради трёх человек — и форум, и личный кабинет, и онлайн-трансляция, и поиск по сайту...

P.S. Эта статья стала самой комментируемой на сайте: и в байтах, и по количеству отзывов :)

     2019/06/03 12:52, MikeZ          # 

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

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

Функционал:
1. Сайт двуязычный (вверху есть кнопка рус/англ)
2. Личный кабинет стандартный (логин, почта с её подтверждением, пароль)
3. Форум (пишут те, кто зарегистрировался). Есть явно видимая пользователем возможность google-перевода в обе стороны)
4. Поиск по сайту
Страницы.
0. Главная страница содержит в колонке слева ссылки на п.п. 1, 2, 3, 4, 5, 6, 7.
1. Новости (возможность простого их добавления)
2. Статьи (возможность простого их добавления)
3. Компилятор PL/1-KT. (возможность просто добавлять новые версии и доп. Страницы в подразделы 3.3, 3.4)
3.1. Скачать последнюю версию
3.2. Документация. Скачать
3.3. Примеры программ
3.4. Приемы программирования
4. Другие компиляторы PL/I
4.1. IBM
4.1.1. VisualAge. Описание, скачать
4.1.2. Rational Developer for z. Описание и скачать
4.2. Raincode. Описание, ссылки
4.3. Micro Focus. Описание, ссылки
4.4. Iron Spring. Описание, ссылки
4.5. Kednos. Описание, ссылки
4.6. Другие. Описание, ссылки
5. Программы. Тут будут ссылки на просмотр-загрузку исходников
6. Сайты. Ссылки на сайты типа: ссылка, краткое описание. Пополняемо.
7. Форум, с разделами: PL/1-KT; другие компиляторы PL/I; предложения; разное. Возможность администратора удалять посты и банить хулиганов.
Остальные пожелания.
1. Дизайн минималистично-строгий. За основу можно взять. Iron-spring.com, но не тянуть оттуда. Можно даже стилизовать под терминал командной строки.
2. Максимально простая панель администратора. Даже вообще ничего не понимающие люди могут добавить материалы, в частности, загрузить новую версию PL/1-KT.
3. Сейчас хостинг на ucos. Он будет меняться, т.к. ucos много чего не поддерживает. Таким образом, переделанный сайт надо ещё и перенести на новый хостинг. Какой, пока не определено.


Стандартные русские вопросы: кто виноват и что делать? Если с первым все ясно — это я, то второй надо обсудить. Мои предложения таковы:
1. Попросим Автора сайта ещё раз по пунктам посмотрит и скажет, что может сделать из них сам. Очень хорошо было бы описать легкость администрирования и обновления — для столь опытных людей как мы это важно. Скажем, в стиле 1 — да, 2 — нет, 3 — частично.
2. Поспрашивайте, может у кого-то есть знакомые веб-специалисты. Меня все так яро уверяют, что это легко сделать на WordPress...
3. Я попробую еще, но мои пробы заканчиваются так, как написано в начале.

Comdiv Не стоит наезжать на VIT1972 не только потому, что он тут самый креативный (а это очень редкое и ценное качество), а ещё и потому, что таких людей надо читать между строк. Если по сути, то работай Вы хоть раз в Rdz, Вы бы заметили, что у SQL и I очень схожие парсеры, при том, что IBM и Oracle, вообще говоря, конкуренты. Хотя, конечно, Вы правы и это разные языки. Кроме того, PL настолько стар, что с полным основанием можно говорить, что он влиял и на Аду. Насчет ядра Linux, Вы же не будете спорить с тем, что отсутствие генерации кода под Linux не есть преимущество.

Т.к. я самовольно беру на себя функции модератора (простите), я прошу и VIT1972 воздерживаться от обсуждения не относящихся к делу деталей. Вообще, мне казалось, что уж здесь-то собираются люди, у которых одинаковые интересы. Напиминаю, что мы обсуждаем PL-KT или PL вообще.

И ради трёх человек — и форум, и личный кабинет, и онлайн-трансляция, и поиск по сайту...

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

     2019/06/03 17:20, kt          # 

Спокойствие, только спокойствие! (с)

У нас всегда остается «самый бюджетный вариант» в виде раздела на данном сайте. 4000 долларов — это действительно что-то очень несуразное. Но при этом, на мой взгляд, одна-две-три недели, не имеют сейчас особого значения. Поэтому есть время обдумать цели и варианты. Если удастся реализовать выше приведенные планы хотя бы на 70% уже было бы отлично.

     2019/06/03 18:47, VIT1972          # 

У нас всегда остается «самый бюджетный вариант» в виде раздела на данном сайте.

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

Почему-то никто не советует хостинг...

     2019/06/04 12:27, MikeZ          # 

но если кто-нибудь мне подтвердил

Я — не могу, т.к. тут профан полный.

     2019/06/04 13:39, Автор сайта          # 

Функциональность
1. Требуется некоторое время на переработку.
2. Регистрация, авторизация есть.
3. Могу сделать простой форум. Для создания форума на уровне современных придётся много работать. Но оправдают ли себя такие трудозатраты? Кстати, если добавить создание новых тем/статей пользователями, то в совокупности с возможностью комментирования (а это уже есть) это можно считать форумом :)
4. Поиска нет, но нужен ли он отдельно? Можно, в принципе, сделать.
Страницы
0. Главной страницей является страница новостей.
1, 2 — можно сделать, потребуется какое-то время.
3. Раздел «Скачать». Желательно, между прочим, для каждого файла иметь индивидуальный счётчик закачек. Требуется доработка, чтобы заливка на сайт делалась через Вэб-интерфейс.
4. Перечень статей — это вопросы к авторам контента, а не к техническим возможностям сайта. Сайту всё равно, о чём он — про PL/1 или кулинарные изыски.
Пожелания
1. Дизайн а-ля командная строка? Ну зачем... Моноширинные шрифты, белые буквы на чёрном фоне? Глаза надо беречь. Думаю, большинство программистов PL/1 уже носит очки :)
2. Даже не сомневайтесь. Будет такой минимум, что тоска охватит :)
3. Советовали мне как-то отличный зарубежный хостинг. Да вот ссылку потерял. «Найдётся всё!» — говорит нам Яндекс.

Цена на сайт за выходные выросла с 50 до 4000 долларов.

4000 долларов — это действительно что-то очень несуразное.

У того, кто запросил такие деньги, совсем другое мнение :) Очень даже суразно зарабатывать хорошие деньги. И я б не отказался :)

Но если кто-то, кроме меня, займётся сайтом pl1.su, его модернизацией и развитием, не сильно огорчусь :) По первому требованию вышлю все статьи Дмитрия Юрьевича и комментарии к ним. Со всеми элементами форматирования и т.д.

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

Это не редакторы, а так называемые фреймворки. Самый распространённый — Wordpress. Но если видите в себе силы что-то изучать, то надо начинать со «стека технологий»: html, CSS, Javascript, PHP, SQL. Это основы.

     2019/06/04 13:02, VIT1972          # 

Предложение Автора сайта — великолепно. Огромное спасибо! Возможность комментировать действительно заменит форум. Если же будет возможно сть добавлять страницы (статьи и любые материалы, которые могут комментироваться), так и не нужно больше ничего. Американский хостинг почти наверняка лучше нашего, но... не знаю. И что насчет администрирования.

Дизайн а-ля командная строка?

Наверное, имелось в виду все же именно стилизация. MikeZ?

У того, кто запросил такие деньги, совсем другое мнение :) Очень даже суразно зарабатывать хорошие деньги. И я б не отказался :)

Но есть же предел желаний! Я только что ради хохмы попросил на a5.ru рассчитать мне одну страницу, безо всяких изысков по шаблону! Цена 10800р. Надо сказать, что мы не тем занимаемся вообще.

Это не редакторы, а так называемые фреймворки. Самый распространённый — Wordpress. Но если видите в себе силы что-то изучать, то надо начинать со «стека технологий»: html, CSS, Javascript, PHP, SQL. Это основы.

Wordpress я вчера попробовал только поставить, он потребовал какой-то сервер, да и установка совсем не привычная для меня. Об остальном и сказать боюсь...
Есть какой-нибудь фреймворк с простой установкой, который бы выполнил весь цикл от идеи до выгрузки? Хотя предложение Автора сайта и поубавило мой энтузиазм, но если народ решит — я готов.

ДЮ и MikeZ, что Вы скажет?

     2019/06/04 13:03, VIT1972          # 

Да, на весь сайт a5 нарисовало 95000.

     2019/06/04 14:27, Автор сайта          # 

Wordpress я вчера попробовал только поставить, он потребовал какой-то сервер, да и установка совсем не привычная для меня. Об остальном и сказать боюсь... Есть какой-нибудь фреймворк с простой установкой, который бы выполнил весь цикл от идеи до выгрузки?

Пришлите мне письмо, я вышлю Вам Denwer, единственная настройка там — сделать 2 ярлыка для запуска/останова сервера и прочего.

Знаете, в PHP нет ничего сложного. Он проще PL/1 :) А html, CSS, ещё проще. Есть смысл овладеть этим, многие устроились фрилансерами на зарубеж.

     2019/06/04 14:23, MikeZ          # 

Почитал это все, и, основываясь на личном опыте, вижу, что это просто стихийный сговор. Россия, что поделать...
Не может простая ШАБЛОННАЯ страница стоит более $150. Вот никак. Я ничего не имею против предложения Автора сайта, оно, действительно, шикарное. Я только прошу дать мне последнюю отсрочку, т.к. я запросил знакомых в США, как они будут делать русскоязычный сайт, я плохо представляю, но за спрос денег не берут. Даже если ничего не получится, за это время (пара дней, не более) VIT1972 выучит PHP, и прочие вещи, и у нас будет, как минимум, два варианта. Получится — три.

     2019/06/04 16:32, Автор сайта          # 

это просто стихийный сговор

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

Не может простая ШАБЛОННАЯ страница стоит более $150.

Это смотря кто будет делать. Например, некоторые специалисты 1С берут $50 за час работы. Специалисты по R3 берут ещё больше. А ещё от страны зависит.

Я только прошу дать мне последнюю отсрочку

Вас никто не торопит :) Я и сам боюсь собственных обещаний :)

     2019/06/04 16:04, MikeZ          # 

А я бы порадовался, что у каких-то ИТ-специалистов хорошо с деньгами.

Так это худший вариант капитализма. Конкуренции-то нет. Ничего нового не появляется. Народ беднеет. Но все хаят государство. А все успешные проекты последних лет (работа госорганов, парковка) сделаны именно им.

$50 за час работы

Это за час, а тут работы на 10 минут! Для специалиста.

Вас никто не торопит :) Я и сам боюсь собственных обещаний :)

Да тут уже торопи, не торопи. Заграница нам не помогла, собственно я это и пришел сказать. Я исчерпался. VIT1972 успел изучить по списку?

     2019/06/05 10:07, VIT1972          # 

Я до конца недели посижу, посмотрю, насколько для меня это реально сделать. А то и html, и CSS, и Javascript, и PHP, и SQL, и Denwer...

     2019/06/05 21:54, MikeZ          # 

Чувствую, что придется просить Автора сайта. Пока пауза, вот программа, которая помогает верно выводить на экран русский текст. Актуальна только для Windows. Кстати, написана при активной помощи людей из гугл-группы. Удобнее было бы реализовать в виде функции, но язык не позволяет. Компилятор IBM.
win1251_to_dos866: proc(source, target);
/* Translation from Win 1251 to DOS 866 codepage. */
dcl
(source inonly, target outonly) char(*) var,
to CHAR(66) VALUE(
'80A081A182A283A384A485A5F0F186A687A788A889A98AAA8BAB8CAC'x!!
'8DAD8EAE8FAF90E091E192E293E394E495E596E697E798E899E99AEA'x!!
'9BEB9CEC9DED9EEE9FEF'x),
from CHAR(66) VALUE(
'C0E0C1E1C2E2C3E3C4E4C5E5A8B8C6E6C7E7C8E8C9E9CAEACBEBCCEC'x!!
'CDEDCEEECFEFD0F0D1F1D2F2D3F3D4F4D5F5D6F6D7F7D8F8D9F9DAFA'x!!
'DBFBDCFCDDFDDEFEDFFF'x);

target = translate(source, to, from);

end win1251_to_dos866;

     2019/06/06 05:48, theriodont          # 

Удобнее было бы реализовать в виде функции, но язык не позволяет. Компилятор IBM.

Почему не позволяет? Вроде всё работает.
test_encoding:proc options (main);
display (win1251_to_dos866('привет'));
end test_encoding;
*process;
win1251_to_dos866: proc(source) returns(char(32767) var);
/* Translation from Win 1251 to DOS 866 codepage. */
dcl
source char(*) var,
to CHAR(66) VALUE(
'80A081A182A283A384A485A5F0F186A687A788A889A98AAA8BAB8CAC'x!!
'8DAD8EAE8FAF90E091E192E293E394E495E596E697E798E899E99AEA'x!!
'9BEB9CEC9DED9EEE9FEF'x),
from CHAR(66) VALUE(
'C0E0C1E1C2E2C3E3C4E4C5E5A8B8C6E6C7E7C8E8C9E9CAEACBEBCCEC'x!!
'CDEDCEEECFEFD0F0D1F1D2F2D3F3D4F4D5F5D6F6D7F7D8F8D9F9DAFA'x!!
'DBFBDCFCDDFDDEFEDFFF'x);
return(translate(source, to, from));
end win1251_to_dos866;
IBM для Windows версия 6.0 не поддерживает inonly и outonly, а для поддержки восклицательных знаков нужно ставить соответствующую опцию. Помню, в ЕС-1045 восклицательный знак был по умолчанию, поскольку на клавиатуре вертикальной черты просто не было, но по ходу это местный движок преобразовывает черточки в восклицательные знаки.
Чем хороши FAR или Кate, что кодировку можно поставить любую.
Ну и команду chcp для консоли Windows никто не отменял.

     2019/06/06 09:12, MikeZ          # 

Да, но Вы поставили константу. Я не люблю так делать, если длина заранее неизвестна. Компилятор 9.0 не позволяет, и честно, говоря, мне непонятно, почему? in- и outonly полезны для глобальной оптимизации, но, думаю, для windows-версии это не актуально, хотя визуально дисциплинирует. Их аналоги в Фортране при большом числе тяжелых подпрограмм (5+) дают реальный эффект в скорости. Программа, кстати, для русских букв и делает то же, что и chcp. С ней просто удобнее. Вывода на консоль мало (display и sysprint если последний не перенаправлен), и про chcp вспоминаешь, лишь когда видишь абракадабру, так, что просто мелкая фишка.
С FARом вожусь, но для меня неудобно, а вот kate понравился. К нему можно как-то прикрутить компилятор, чтобы получить некий аналог IDE? И нет ли хорошей dark-темы, т.к. я художник тот тот еще, у меня получается плохо.
Кстати, пока рано говорить, но есть человек который занимается ошибкой комплексной арифметики. Если получится, будут рабочие костыли. Меняться будут obj и exe патчем, но степень автоматизации пока не ясна. Что очень странно, так это то, что ошибка это по сути умножения типа a=a*b, но её нет в операторах a=a**n (n — целое fixed). Найден и второй вариант ошибки: a=imag(a), так что, скорее всего, ошибка в пересылке, а не в арифметике.

     2019/06/06 10:43, Comdiv          # 

работай Вы хоть раз в Rdz, Вы бы заметили, что у SQL и I очень схожие парсеры

Не знаю, что Вы видели в Rdz, но я вполне явно, а не между строк писал, что оба языка алголоподобны, так что, возможно, Вы увидели корень сходства не там. PL/I-центричная картина мира может вредить пониманию истинного положения вещей.

Насчет ядра Linux, Вы же не будете спорить с тем, что отсутствие генерации кода под Linux не есть преимущество.

Неясно, почему Вы этот вопрос мне задаёте, ведь мой коментарий был к тому, что транслятор Дмитрия работает под ОС GNU/Linux, а значит для выполнения задумки Автора Сайта не было необходимости в потенциально более дорогом хостинге с Windows. И если за возможность запуска транслятора для сборки программ или оживления примеров кода всё-таки возьмутся, то сделать это будет не так сложно, как пример такого воплощения — https://github.com/Vostok-space/vostok/tree/master/demo-server

Но на этот вопрос, обобщая, всё же можно ответить. Если Вы понимаете, чем сайт за 50$ лучше сайта за 4000$, то также должны понимать почему отсутствие воплощения самых разных хотелок в трансляторе Дмитрия — это преимущество.

     2019/06/06 10:54, theriodont          # 

К нему можно как-то прикрутить компилятор, чтобы получить некий аналог IDE?

Оно вроде как встроено в KDevelop, но я не пробовал, можно ли к нему прикрутить PL/I.

     2019/06/06 12:11, kt          # 

А у нас вот так молодой специалист написал на PL-KT :)
//---- ПЕРЕКОДИРОВКА В ДОС ИЗ ВИНД ----

ПЕРЕКОДИРОВКА: ПРОЦЕДУРА(СТР);

ОПИСАНИЕ
Ч1 ТОЧНОЕ(15),
С1 ТЕКСТ(1) НА_МЕСТЕ(Ч1),
I ТОЧНОЕ(31),
СТР ТЕКСТ(*) РД;

ЦИКЛ I=1 ДО ДЛИНА(СТР);

С1=ПОДСТРОКА(СТР,I,1);
ЕСЛИ Ч1=168 ТОГДА Ч1=240; ИНАЧЕ
ЕСЛИ Ч1=184 ТОГДА Ч1=241; ИНАЧЕ
ЕСЛИ Ч1>=192 И Ч1<=255 ТОГДА
{;
ЕСЛИ Ч1>=240 ТОГДА Ч1-=16; ИНАЧЕ
ЕСЛИ Ч1>=192 ТОГДА Ч1-=64;
};
ПОДСТРОКА(СТР,I,1)=C1;
КОНЕЦ I;
КОНЕЦ ПЕРЕКОДИРОВКА;

     2019/06/06 13:19, MikeZ          # 

Comdiv

Не знаю, что Вы видели в Rdz

Просто, чтобы Вы знали — у них один парсер.

PL/I-центричная картина мира может вредить

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

ведь мой коментарий был к тому, что транслятор Дмитрия работает под ОС GNU/Linux,

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

Если Вы понимаете, чем сайт за 50$ лучше сайта за 4000$, то также должны понимать почему отсутствие воплощения самых разных хотелок в трансляторе Дмитрия — это преимущество.

Во-первых, я этого не понимаю. Кроме экономии, вынужденной и тем плохой, во-вторых, Вы сравниваете голубое с дорогим, в-третьих, все хотелки (если я ничего не пропустил) не выходят за пределы общепринятых стандартов, а работа, проведенная Дмитрием Юрьевичем — выходит, что ярко видно из его примера ниже (т.е. тратить ресурсы на выходы из стандарта, по-Вашему, нормально, а вводить дополнения, входящие в стандарт — нет). Мало того, Вы забываете, что PL/I эклектичный язык и тем хорош. Название естественных пожеланий хотелками-свистелками не отменяет крайней аскетичности имеющейся реализации. Это я стараюсь политкорректно выражаться. Повторяю, сама идеология языка такова. Я понимаю, что все мы хотим делать, только то, что можем, и что нам нравится. Но настоящие результаты появляются лишь когда мы насилуем такое наше хотение.

Кроме того, читая Вас, создается впечатление, что Вы пытаетесь прикрыть Дмитрия Юрьевича. Вы уверены, что ему это надо?

theriodont
Это Linux? Я в нем профан. Но kate хорошая штука.

kt

А у нас вот так молодой специалист написал на PL-KT

Дмитрий Юрьевич, простите, но мой текст лучше. Я даже не говорю о стандарте. Один оператор против 6-8! Хотя признаюсь, в первый раз я сделал даже сложнее. А глядя на текст отстраненно, я вижу, что мне русские операторы, претят. Для молодежи хорошо, если она чем-то типа Fortran или С не испорчена.

     2019/06/06 14:53, Comdiv          # 

Просто, чтобы Вы знали — у них один парсер.

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

Во-первых, я этого не понимаю. Кроме экономии, вынужденной и тем плохой

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

тратить ресурсы на выходы из стандарта, по-Вашему, нормально, а вводить дополнения, входящие в стандарт — нет

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

Кроме того, читая Вас, создается впечатление, что Вы пытаетесь прикрыть Дмитрия Юрьевича. Вы уверены, что ему это надо?

В данном случае я ответил на Ваш вопрос, а на Ваши впечатления я не могу повлиять.

     2019/06/06 14:57, Comdiv          # 

Дмитрий, Вы рассматривали возможность открыть исходные коды транслятора, чтобы любой желающий мог его доработать? Были ли такие запросы со стороны недовольных неправильным или недостаточным по их мнению развитием?

     2019/06/06 15:54, MikeZ          # 

Сделать один парсер несложно даже для совсем разных синтаксисов

Войдите в RDz и посмотрите. Это я все к тому, что Ваша критика VIT1972 была избыточна.

Вы же не будете спорить

Буду. А почему же я так легко отказался от своего же предложения? По Вашей же собственной логике навешивание на сайт ненужных вещей эквивалентно следованию стандарту. Вы сравниваете несравнимые вещи. Это сайт может быть пуританским, а не язык PL/I. Или тогда это не PL/I, а что-то иное, с дгугим названием. Вы, на PL/I что-то писали?

Вы приписываете мне мнения, не имеющие ко мне отношения.

Дмитрий сделал то, что было ему нужно, а то, что было не нужно — не сделал. Не ищите здесь чего-то иного.

Т.е. Вы отказываетесь сравнивать сайт и компилятор? Вот, видите, Вы не безнадежны. И почему Вы постоянно отвечаете за Дмитрия Юрьевича? Коль скоро это отношения к Вам не имеет. Скажите просто — вопрос не ко мне.

     2019/06/06 16:19, Comdiv          # 

Войдите в RDz и посмотрите

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

По Вашей же собственной логике навешивание на сайт ненужных вещей эквивалентно следованию стандарту

Это Ваша логика, а не моя. Я веду речь о стоимости, платить за то, что плательщику(в данном случае Дмитрию) не нужно — это недостаток. Ну а IDE в браузере — это нужно.

     2019/06/06 17:03, kt          # 

Comdiv
Недовольных нет. С недовольными я быстро тут :)

Но если говорить серьезно, то пока никто не делал таких предложений.
Хотя я исходники не скрываю и присутствующие здесь могут это подтвердить.
Просто желающих ковыряться в ассемблере немного и желающих ковыряться в компиляторе с такого языка немного. А их пересекающиеся подмножество вообще стремится к нулю.
И потом, это же не отдельный компилятор, а система. Исправления могут задевать редактор связей, системные библиотеки, отладчик и т.п. Т.е. в очень многом придется разбираться. причём ассемблер здесь тоже свой :)

     2019/06/06 17:40, MikeZ          # 

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

Ссылка: https://yadi.sk/d/Q9Smck2JXSCT5g
Так я самого начала и говорил, что это разные языки! Но принять один SQL за PL можно не только по названию. Особенно, если сидел в RDz. Я Вам пытаюсь объяснить, что для человека, не знающего PL/SQL (как я) вполне извинительно принять одно за другое.

Это Ваша логика, а не моя.

Да? А это кто писал?

Если Вы понимаете, чем сайт за 50$ лучше сайта за 4000$, то также должны понимать почему отсутствие воплощения самых разных хотелок в трансляторе Дмитрия — это преимущество.

Что самое интересное, сайтов за $50 долларов нет!!! Были бы хотя бы за $500 — мы бы с Вами тут не общались.

Я веду речь о стоимости, платить за то, что плательщику(в данном случае Дмитрию) не нужно — это недостаток. Ну а IDE в браузере — это нужно.

Опять некорректно! Дмитрий Юрьевич не плательщик, а, скорее, получатель денег в обмен на свое время. Деньги, конечно, тоже время, но не буквально же! У всех у нас своя стоимость времени. И чем же IDE в браузере полезно? Оно полезно только если дает Вам доступ к железной архитектуре, которого Вы не имеете. Скажем, как китайцы, дающие такую возможность для PL/I на z/OS. Или крутить на сайте Hercules. А тут компилятор и пользователь оба в windows. Но за совет и подсказку спасибо, если сообщество решит, то ясно, что в принципе, реализовать можно. Вы бы лучше Ваши знания на сайт бросили! Или Вам PL не настолько интересен? Вы на нем писали?

     2019/06/06 17:51, VIT1972          # 

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

     2019/06/06 18:19, theriodont          # 

MikeZ

Это Linux?

Почему, есть и на винду и на макось у них бинарники.

Автору сайта:
Почему-то на хроме и его производных у меня не переносится текст на всех компах и телефонах, приходится скроллить по горизонтали. На огнелисе все нормально.

     2019/06/06 18:31, Comdiv          # 

А это кто писал?

Это пример исходя из Вашего сообщения о цене сайта, выросшего с 50 до 4000. Вопрос цены(не только в деньгах) универсален, и абстрактное сравнение преимуществ не имеет смысла, а только с учётом платы.

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

Раз получатель, то другое дело. Дмитрий Юрьевич, Вы не против выпустить расширенную версию? Так как у Вас времени скорее всего недостаточно, то нужно будет нанять разработчика. Правда, сразу надо оговориться, что речь будет идти как минимум о 3-х значных числах в у.е для относительно простых изменений, и в 4-х значных для более сложных. MikeZ, Вы готовы платить/привести заказчиков/работать?

Или Вам PL не настолько интересен? Вы на нем писали?

Только пару простейших приложений с помощью компилятора Дмитрия. Как по мне, язык сложней, чем нужно.

     2019/06/06 19:36, MikeZ          # 

Это пример исходя из Вашего сообщения о цене сайта, выросшего с 50 до 4000.

То, что речь шла об одном и том же исполнителе Вас не смущает.

Вопрос цены(не только в деньгах) универсален, и абстрактное сравнение преимуществ не имеет смысла, а только с учётом платы.

Вот теперь, я Вас понял. Только с какой радости за работу на 50 платить 4000?

Раз получатель, то другое дело. Дмитрий Юрьевич, Вы не против выпустить расширенную версию? Так как у Вас времени скорее всего недостаточно, то нужно будет нанять разработчика. Правда, сразу надо оговориться, что речь будет идти как минимум о 3-х значных числах в у.е для относительно простых изменений, и в 4-х значных для более сложных. MikeZ, Вы готовы платить/привести заказчиков/работать?

Ба, да Вы импрессарио к Дмитрию Юрьевичу подались! Он-то в курсе? Если нет, то это просто настолько некрасиво, что посторонний человек плохое подумать может. Дмитрий Юрьевич уполномочил Вас устанавливать цены, или Вы просто по-дружески даете ему совет? Заметьте, все это Вы прилагаете к энтузиасту.

Вам явно лень читать всю тему, Ваша манера поведения здесь — это прицепиться к чему-нибудь, чаще всего третьестепенному, и мусолить его. Что у Дмитрия Юрьевича нет времени на все пожелания, я писал в своем первом выступлении здесь. От этого эти пожелания не теряют своей значимости, а то и необходимости, с этим-то Вы не будете спорить?

Раз уж мы заговорили о цене, если бы этот компилятор был уровня того же Raincode в смысле языка и привязки к VS, я гаратированно нашел бы инвестора для Дмитрия Юрьевича. Это западные инвесторы могут дать деньги за полуфабрикат вне рынка. Наши нет, они так уже надавались. В данном случае западные не помогут (можно и там пообщаться), т.к. первый же их вопрос будет: чем он лучше того же Raincode, а мой ответ "ценой" сразу вызовет негатив — потеря прибыли. Эти люди думают совсем иначе. Наши могут, но платят только за почти готовый и конкурентный сейчас продукт, никакая дружба, даже долг здесь не работают — я для данного случая все это прошёл. Последний раз мне вообще сказали, "мы с тобой как раз на таком случае потеряли деньги, у тебя их так много, что ты хочешь еще?". А я не поленился в Питер слетать (честно говоря, там и другие дела были). Мы сидели вместе и я все показывал. Человек и язык немного помнит... А уж убеждать их что работать можно и в командной строке, или я считаю, что так достаточно — вообще выгонят сразу. Потому что знают, что именно в это ткнет их ихний маркетолог (хотя они и на нем уже порой экономят — натаскались).

     2019/06/06 21:57, Comdiv          # 

То, что речь шла об одном и том же исполнителе Вас не смущает.

Кто конкретно будет исполнителем, я не понял. Мне показалось, что есть потенциальные 3-и разработчика и, возможно, рассматривается возможность заказа со стороны. Что это меняет?

Вот теперь, я Вас понял. Только с какой радости за работу на 50 платить 4000?

Похоже, что не поняли, потому что незачем. Если речь шла не о повышенных запросах на возможности сайта, а о завышенных запросах в деньгах от потенциальных исполнителей, то и я неправильно понял то сообщение. В любом случае мне неясно, что Вы ожидаете от работы за 50уе. Неужели воплощения обсуждаемого списка возможностей потенциального сайта?

Ба, да Вы импрессарио к Дмитрию Юрьевичу подались! Он-то в курсе?

По-моему, Дмитрий открыт для адекватного общения, а мой вопрос вполне нормален.

Дмитрий Юрьевич уполномочил Вас устанавливать цены

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

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

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

     2019/06/06 22:45, kt          # 

Идея в порядке бреда:

А может пока временный вариант? Автор сайта создает новую тему-раздел, куда переносится все, относящееся к PL/1. А pl1.su пока просто пересылка на этот ресурс.

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

     2019/06/07 03:17, theriodont          # 

Как по мне, язык сложней, чем нужно.

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

     2019/06/07 05:51, theriodont          # 

Еще к вопросу об оптимизации:
Вот два варианта схем для уравнения теплопроводности:
(NOUFL):A1:PROCEDURE OPTIONS (MAIN) REORDER;
DECLARE T(5000,5000) STATIC FLOAT;
T=1;T(1,*),T(*,1)=2;
N=5000;
DO L=1 TO 100;
DT=0;
DO I=2 TO N-1;
DO J=2 TO N-1;
T2=(T(I-1,J)+T(I+1,J)+T(I,J+1)+T(I,J-1))/4;
DT=MAX(DT,ABS(T2-T(I,J)));
T(I,J)=T2;
END;
END;
PUT SKIP EDIT('Step=',L,', DT=',DT)(A,F(3),A,F(7,4));
END;
END A1;
(NOUFL):A1:PROCEDURE OPTIONS (MAIN) REORDER;
DECLARE (T(5000,5000),T2(5000,5000)) STATIC FLOAT;
T,T2=1;T(1,*),T2(1,*),T(*,1),T2(*,1)=2;
N=5000;
DO L=1 TO 100;
DT=0;
DO I=2 TO N-1;
DO J=2 TO N-1;
T2(I,J)=(T(I-1,J)+T(I+1,J)+T(I,J+1)+T(I,J-1))/4;
DT=MAX(DT,ABS(T2(I,J)-T(I,J)));
END;
END;
T=T2;
PUT SKIP EDIT('Step=',L,', DT=',DT)(A,F(3),A,F(7,4));
END;
END A1;
Во втором случае скорость вычислений (IBM) у меня примерно в полтора раза выше, хотя количество операций по идее больше.
Файлы тут:
https://cloud.mail.ru/public/3tjQ/2d1ujaf5P
В GNU-фортране аналогичная ситуация.

     2019/06/07 10:06, kt          # 

Значит прогноз обращения к памяти во втором случае удачнее и кэш работает эффективнее.
Кстати, я пробовал применить операцию обмена, думая, что тогда чтение T(I,J) и запись совместятся, т.е.вместо.
T2=(T(I-1,J)+T(I+1,J)+T(I,J+1)+T(I,J-1))/4;
DT=MAX(DT,ABS(T2-T(I,J)));
T(I,J)=T2;
Написал:
T2=(T(I-1,J)+T(I+1,J)+T(I,J+1)+T(I,J-1))/4;
T1=T2;
T(I,J)<=>T1
DT=MAX(DT,ABS(T2-T1));
Увы, стало медленнее, а не быстрее.

     2019/06/07 10:27, MikeZ          # 

VIT1972 и Автору сайта

А мы можем сделать сайт вместе?

Хорошее предложение. Я присоединяюсь. Т.к. Автор сайта более искушен в WEB, чем мы, то ему нами и руководить.

comdiv

Что это меняет?

Все переговоры происходили по одинаковой схеме. Показывалась схема сайта, называлось число страниц и их содержимое. Все было всегда одинаково. Первоначально озвучивалась цена $50-100 и договаривались связаться ещё для уточнения деталей. Связывались, мне говорили, что вот онлайн-компиляция дорого, я это выкидывал. Цена становилась $2500-6000. Даже сам по себе такой разброс говорит о полном бардаке с ценами. Вариантов было просмотрено более десятка. Я уже не говорю о том, что задание упрощалось на втором этапе. Там, где работаю я, считается моветоном втягивать клиента низкой ценой, которую никогда не обеспечишь, а это далеко не пушистый и немаленький рынок ($4B в России, $500B в мире) рынок. Дальше, больше. Пару лет назад я наблюдал, как создается большой интернет-магазин (он и сейчас работает). У него стартовый оборот стабильно был порядка $1M в год, т.е. все знали, что деньги там есть. Так вот, за этот магазин было заплачено не более $100k. Он же не в 40 раз более трудоемок, там одних страниц несколько тысяч, а их типов пара сотен точно, там связь с системой управления бизнесом, связь с более чем десятком складов. Более того, когда менеджер проекта давил на исполнителей, они пожаловались мне, я пошел за них заступаться. При этом я увидел, как они создают страницы (гораздо сложнее, чем у нас). На страницу тратилось не более 5-30 минут. Т.е. в наших расценках, это $800 в час. Стоимость хорошего и недешевого адвоката в США $100.

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

Ведь цифру 50 не я называл, а исполнители. Но если бы было $500, я бы согласился.

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

Дмитрий Юрьевич вам написал, что такого человека не найти вообще.

Не о том мы говорим. Давайте о сайте.

kt

А может пока временный вариант?

Вот, договорились (в смысле дошли)! Нет, нужен сайт. Опять же, к compiler.su у меня никаких претензий нет. К тому же, я теперь знаю, как находить пользователей, РАБОТАЮЩИХ с PL в России.

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

     2019/06/07 11:05, theriodont          # 

MikeZ

А бросьте мне, пожалуйста, Fortran-версии, я их на Интеле прогоню.

https://cloud.mail.ru/public/j3c1/kLeBAbirY — две папки с проектами из CB.
причём в первом случае do concurrent вместо вложенных циклов прилично улучшает ситуацию, но все равно не дотягивает до второго, во втором — ничего не дает.

     2019/06/08 12:58, VIT1972          # 

Кто может сделать качественное фото с высоким разрешением экрана редактора или IDE с текстом PL программы? Фон темный, Фотографировать надо под углом (слева) оставляя место для элементов вверху и слева. ДЮ и theriodont? вроде для Вас это повседневная работа...

     2019/06/08 14:37, kt          # 

Так же в соседней статье
http://compiler.su/k-voprosu-o-sovershenstvovanii-yazyka-programmirovaniya.php
даже скриншот был приведен.
Это реальное рабочее место и реальная программа, правда, через DosBox...

     2019/06/08 15:29, VIT1972          # 

Мне нужен фон на главную страницу. Это пойдет для Вaшей... И хотелось бы все же английский...

     2019/06/08 16:22, MikeZ          # 

theriodont
Странный пример. Вариант с двумя матрицами считается чуть медленнеe. Не было времени поставить таймеры, простите. Но в обоих случаях приосходит штука, которую я никогда не наблюда, тем более, на такой простой программе. Оптимизация дает прирост скорости не менее чем на порядок. Вам бы Intel установить. Если нужна помощь — пишите.

     2019/06/09 08:42, MikeZ          # 

VIT1972
Вот, посмотрите. Не совсем как Вы просили, но что есть. Зато это скан реального листинга...
https://yadi.sk/d/fYOh_TuxDu5xmg

     2019/06/09 11:01, MikeZ          # 

VIT1972
После фотошопа:
https://yadi.sk/i/aRUgt2jdXLsfGg
https://yadi.sk/i/CXLgU9HRVpCx5A

Это уже ближе к Вашим требованиям. Перспективу менять не умею, да и надо ли?

     2019/06/09 16:31, theriodont          # 

VIT1972
https://cloud.mail.ru/public/UfYL/3ofKABknU
https://cloud.mail.ru/public/48r5/5MY4Vt6EQ

MikeZ
Вот что пишет PGI в первом случае по поводу цикла:

13, Loop interchange produces reordered loop nest: 13,13
Loop not vectorized: data dependency


и во втором:

14, Loop interchange produces reordered loop nest: 14,14
Parallel code generated with block distribution
Generated vector simd code for the loop containing reductions

     2019/06/09 16:54, VIT1972          # 

theriodont
Спасибо! А можно, чтобы черного было слева, а то жалко закрывать PL-текст ссылками
MikeZ
А не сделать ли белый зеленым?

     2019/06/10 00:07, MikeZ          # 

VIT1972

https://yadi.sk/d/snCoicOV0QIo_A

     2019/06/10 08:35, theriodont          # 

VIT1972

А можно, чтобы черного было слева, а то жалко закрывать PL-текст ссылками

https://cloud.mail.ru/public/4TTS/pmZToRNxy

     2019/06/10 11:38, VIT1972          # 

Всем спасибо, фонов теперь пока достаточно. Только вот я ничего не могу сделать. Даже создать главную страницу с фоном. Пробовались ToWEB, WYSIWYG WEB Builder и Tilda...

     2019/06/10 14:55, MikeZ          # 

Хорошие (ли?) новости. На том же ucoz нашел делателей сайтов. На мой электронный запрос (с форумом, блогом, новостями сайта, каталогом материалов и управлением ими, двуязычности нет) они насчитали 17000. Смущает только то, что они требуют полную предоплату. Прямо вот карту им давай. Правда, есть 14-дневная гарантия 100% возврата денег. Как она работает, не знаю. Еще за 7000 предоставляют хостинг на uWeb. Начало тут https://www.ucoz.ru/#choice-anchor Мнения?

     2019/06/10 18:40, MihalNik          # 

Делать все самим, в свободное время. Да, долго, но кому и зачем оно так срочно нужно? Зато повод применять что-то современное — потом навыки ещё пригодятся.

     2019/06/10 19:01, MikeZ          # 

Они сами меня нашли. Двуязычность невозможна у них в принципе. 17000 — это за то, что было описано выше, но без двуязычности. Мои вопросы, а можно ли мне будет забрать код сайта и сделать эту двуязычность самому? Вызвали странную реакцию, ответ нет.
Напрягает, что гарантия возврата денег 14 дней, а время на изготовление сайта 15. Спросил, сказали, что пойдут навстречу ;)
В общем, дешево, фукнционал не весь, жесткая привязка к их платформе.

Делать самим вопрос не только времени, хотя и его мало. Я вот нашел, что у меня в NAS есть и wordpress, и web-сервер. Повозился и понял, что получается плохо, а не только медленно. Убедился, что для нас никакие шаблоны не годятся и надо делать сайт с нуля. Как это сделать в WP пока не нашел. VIT1972 советую все же попробовать wordpress. Хотя в общем случае там вроде надо ставить Open server гиг на 8, и, вообще, много непонятного. Вместе с тем, у меня стойкое ощущение, что с помощью того же WP начальную разметку сайта можно сделать за пару часов.

     2019/06/10 22:13, MihalNik          # 

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

Первое — просто умора, второе — какая-то мутная схема.

     2019/06/10 22:25, MikeZ          # 

Прогресс двигают человеческие пороки, в данном случае, лень и малограмотность. Посмотрел я тут на наши муки... 99% исполнитель для сайта найден. Т.к. он очень дотошный, он требует уже каких-либо текстов для заполнения страниц. Предлагаю:
1. Дмитрию Юрьевичу: дать все свои статьи на этот сайт; подготовить хотя бы пару примеров программирования и все, что можно.
2. theriodont: пару программ, статейку о IBM VAPLI и вс, что Вы пожелаете.
3. VIT1972: остановиться с изучением нового и выдать то же, что и в п.2
4. Всем остальным что угодно по мере сил и желания

Срок: среда.
Прошу оставаться в рамках ТЗ и для каждого материала указывать его пункт, в который включать.
Для справки привожу текущую версию ТЗ:
Домен есть pl1.su, но он на ucoz, запрос на перенос DNS сделан, сайт будет на sprinthost. Пока бесплатный хостинг. В случае проблем на первое время могу к себе на NAS, там есть и web-сервер и WP.
Функционал:
1. Сайт двуязычный (вверху есть кнопка рус/англ)
2. Личный кабинет стандартный (логин, почта с её подтверждением, пароль) УДАЛЕНО
3. Форум (пишут те, кто зарегистрировался). Есть явно видимая пользователем возможность google-перевода в обе стороны)
4. Поиск по сайту
Страницы (всего 8).
0. Главная страница содержит в колонке слева ссылки на п.п. 1, 2, 3, 4, 5, 6, 7.
Содержит ещё и кнопку рус/eng. Фон типа (фоны будут предоставлены)
Вверху слева крупно PL/I, в нижнем правом углу — ПЛ/1
1. Новости (возможность простого их добавления)
2. Статьи (возможность простого их добавления)
3. Компилятор PL/1-KT. (возможность просто добавлять новые версии и доп. Страницы в подразделы 3.3, 3.4)
3.1. Скачать последнюю версию
3.2. Документация. Скачать
3.3. Примеры программ
3.4. Приемы программирования
4. Другие компиляторы PL/I
4.1. IBM
4.1.1. VisualAge. Описание, скачать
4.1.2. Rational Developer for z. Описание и скачать
4.2. Raincode. Описание, ссылки
4.3. Micro Focus. Описание, ссылки
4.4. Iron Spring. Описание, ссылки
4.5. Kednos. Описание, ссылки
4.6. Другие. Описание, ссылки
5. Программы. Тут будут ссылки на просмотр-загрузку исходников
6. Сайты. Ссылки на сайты типа: ссылка, краткое описание. Пополняемо.
7. Форум, с разделами: PL/1-KT; другие компиляторы PL/I; предложения; разное. Возможность администратора удалять посты и банить хулиганов.
Остальные пожелания.
1. Дизайн минималистично-строгий. За основу можно взять. Iron-spring.com, но не тянуть оттуда. Можно даже стилизовать под терминал командной строки.
2. Максимально простая панель администратора. Даже вообще ничего не понимающие люди могут добавить материалы, в частности, загрузить новую версию PL/1-KT.

     2019/06/10 22:28, MikeZ          # 

Да и всем вышеупомянытым учиться работать с панелью wordpress... А как без этого обновлять. Или выбрать одного администратора, что не очень удобно. Первые результаты, возможны в чт.

     2019/06/11 03:33, theriodont          # 

Ок, попытаемся.
Форумы теперь не очень в тренде, плюс малонаселенные форумы выглядят довольо печально. Может просто дискас или что-то подобное прикрутить к статьям?

     2019/06/11 09:55, MikeZ          # 

theriodont
Уж постарайтесь!

Может просто дискас или что-то подобное прикрутить к статьям?

А что это такое?

     2019/06/11 10:13, VIT1972          # 

MikeZ
Хорошо, что-то сделаю

     2019/06/11 10:57, MikeZ          # 

Черновик сайта готов. См. http://quadrolaba.ru/pl1/
Давайте замечания. И мне нужны материалы, т.к. в любой момент человек попросит оплату, а после этого мы все останемся наедине с сайтом... Поактивнее!

     2019/06/11 11:59, Павиа          # 

Какие тут могут быть замечание? Могу вас поздравить, вас кинули.

1) Домен оформлен не на вас.
2) Хостинг оформлен не на вас.
3) панели управления-нету.
4) CMS-неустановленна
5) Форума не установлен.
6) Первое не связано со вторым.
7) Ссылка на скачивания не работает.

     2019/06/11 12:03, VIT1972          # 

Здорово, я только подходить стал к такому, а тут за ночь... и, как я вижу изменения вносятся прямо сейчас. В принципе, все устраивает. Может стоит фоны менять при переходе на другую страницу... Но это факультативно. Главное — контент.

     2019/06/11 12:52, MikeZ          # 

Павиа

Могу вас поздравить, вас кинули.

Спасибо, поздравления приняты. Поверьте, меня кинуть очень сложно. Я такие случаи помню только из детства и то мало.
1. Домен мой, что легко увидеть из whois
2. Хостинг на котором висит ссылка не мой, а исполнителя. С моим хостингом пока идет перевод DNS, что тоже видно из whois
3-7. Ссылка — это тестовый вариант — первоначальный макет, он расположен у исполнителя, это все и объясняет. Когда работа будет приниматься все это будет.

Не поддавайтесь панике. И замечания, замечания. У меня сейчас просто очень мало времени.

     2019/06/11 23:51, Comdiv          # 

Рад, что Вам удалось найти исполнителя.
Вам не показалось, что c тёмно-серым фоном, который отображается до загрузки изображения, сайт выглядит лучше, чем с ним?

     2019/06/12 00:19, MikeZ          # 

Вам не показалось, что c тёмно-серым фоном, который отображается до загрузки изображения, сайт выглядит лучше, чем с ним?

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

     2019/06/13 14:05, MikeZ          # 

Домен посажен на хостинг (можете посмотреть: pl1.su), завтра исполнитель выгрузит сайт, а в выходные уже можно будет заполнять почти готовый сайт контентом. Т.к. замечаний не появилось, я все доработки до сдачи работы беру на себя. Что нам теперь надо решить?
1. Всем продумать, что будем там размещать. Конкретно, что Вы будете. Если это разовое, шлите заявку. Если многоразовое, сообщите мне, я или дам Вам вход, или через пока несуществующего админа.
2. Посмотреть, как заполнять сайт в Wordpress. Это надо уметь всем, кто будет это делать чаще одного раза. Принцип размещения статей таков: Сначала аннотация, потом будет ссылка скачать.
3. Выбрать администратора сайта. К нему будут стекаться разовые метериалы. Я не хотел бы им быть в связи с полной нехваткой времени. Предлагайте.

     2019/06/13 16:35, MikeZ          # 

Да, и про материалы не забывайте. Завтра будет их загрузка исполнителем. Что ему дать не успеем — придется вносить самим.
П.п. 1, 4, 5, 6 по ТЗ у нас пусты. Немного сюда дам я, но далеко не все.

     2019/06/13 16:42, theriodont          # 

Внезапно залип вот на это:
https://habr.com/ru/post/191602/
Весь квест пройти здоровья пока не хватило, взял готовые образы по ссылке в начале. Всё работает, но пока не удается запустить компилятор, вернее, он запускается, но файлы читать отказывается.
https://cloud.mail.ru/public/4xES/3Gm6xHvo3
Все очень древнее даже для этой системы, flist-а нет, xedit-а нет, компилер тоже какой-то реликтовый судя по всему.

     2019/06/13 17:19, VIT1972          # 

theriodont
На хабре Ваш материал?
Если да, так давайте разместим в п. 2 или 6.

     2019/06/13 17:20, VIT1972          # 

На 370 должен работать PL/1-O...

     2019/06/13 17:37, theriodont          # 

UPD разобрался с компилером-все дело было в отступе, как обычно
https://cloud.mail.ru/public/5sKu/3Xe44JYER
Но, конечно, вряд ли будет представлять практический интерес, только ради любви к прекрасному.

     2019/06/13 17:46, VIT1972          # 

theriodont
Сделали бы виртуалку с эмулятором и PL-компилером, разместили бы на новом сайте...

     2019/06/13 17:49, theriodont          # 

На хабре Ваш материал?

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

На 370 должен работать PL/1-O...

В поздней СВМ ЕС были PL/I Optimizer (PLIOPT) и PL/I Checkout (PLIC), здесь только PLI с OPT 0 или 1

     2019/06/13 17:51, theriodont          # 

Сделали бы виртуалку с эмулятором и PL-компилером, разместили бы на новом сайте...

Под линукс несложно, под винду смотеть надо.

     2019/06/13 18:32, VIT1972          # 

Хорошо бы под них обеих. С простенькой инструкцией.

     2019/06/13 22:42, MikeZ          # 

theriodont

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

Хотя бы так, займетесь? Какие-гтбудь программы-процедуры свои разместите.

В поздней СВМ ЕС были PL/I Optimizer (PLIOPT) и PL/I Checkout (PLIC), здесь только PLI с OPT 0 или 1

Странно. Тогда здесь PL/I-F? чего быть вообще не должно. Я давно даже диск с Hercules покупал на ebay, там точно был PL/I-O.
Зарустить все не удалось, не хватило терпения. А вот иметь виртуалку с Hercules и PL/I было бы и впрямm здорово!
Образ для VmVare? а какая у него система внутри неважно. Ради этого я даже и с Linux готов поработать.
Было бы тоже полезно поиметь образ Linux, а лучше с OS/2 (мне её на виртуалку и даже специально собранную машину на базе легендарной T2P4 с 512 Mb RAM поставить никак не удалось — все раздал) и Iron Spring тоже интересно. Надо, кстати, аккуратно узнать, чем вызвана полуторалетння задержка у Фласса. Вообще-то ему 72 уже.

Забыл написать. На нашем сайте сейчас бесплатный хостинг. На нем 1Gb диск и на нуле сейчас уже занято 110Mb. Ближайший платный план (5Gb) это 118 р/мес если платить помесячно и 168р/мес, если оплатить год (я не перепутал — сам такое вижу впервые!).
Давайте решать, когда брат платный план? 5Gb тоже маловато. 20Gb и плюшки стоит 6000р/год.

     2019/06/14 00:03, Автор сайта          # 

1Gb диск и на нуле сейчас уже занято 110Mb. Ближайший платный план (5Gb)

Можно поинтересоваться, чем Вы собираетесь заполнять дисковое пространство? Просто любопытно. У меня сейчас по тарифному плану, если не ошибаюсь, 300 Мб. А занято меньше 10%. Если выкинуть картинки, то станет меньше 3%. Текст — он почти невесом, когда его измеряют мегабайтами.

MikeZ, Вы не могли бы написать мне на почту, дать номер телефона? Хотелось бы поговорить, а то, вероятно, скоро будет два сайта про PL/1.

     2019/06/14 00:01, MikeZ          # 

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

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

Телефон послал — звоните!

     2019/06/14 03:41, theriodont          # 

Образ для VmVare?

Пока только для геркулеса, а так вообще пользуюсь ораклом.

Странно. Тогда здесь PL/I-F? чего быть вообще не должно.

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

Было бы тоже полезно поиметь образ Linux, а лучше с OS/2 (мне её на виртуалку и даже специально собранную машину на базе легендарной T2P4 с 512 Mb RAM поставить никак не удалось — все раздал) и Iron Spring тоже интересно.

Warp 4.5 у меня есть на виртуалбоксе с установленным VAPLI, но работать в том интерфейсе в 2019 году это тоже занятие не для слабонервных, могу доставить туда Iron Spring и выложить образ для VB. Iron Spring у меня стоит на линуксе — это ещё очень сырой продукт, хотя с простыми программками более-менее справляется. Что любопытно, возникает та же ошибка при Underflow, что и у IBM.

     2019/06/14 04:37, VIT1972          # 

Пока только для геркулеса, а так вообще пользуюсь ораклом.

Имелось в виду геркулес-win/lin-образ (пусть будет VB)

     2019/06/14 07:27, theriodont          # 

Странно. Тогда здесь PL/I-F?

Он и есть все-таки:
https://cloud.mail.ru/public/231K/4HU7Ey2gd

Имелось в виду геркулес-win/lin-образ (пусть будет VB)

http://www.smrcc.org.uk/members/g4ugm/VM370.htm
По верхней ссылке готовый к употреблению пакет для Windows, есть даже flist и экранный редактор (не xedit, увы), нужно только установить геркулес.

     2019/06/14 11:43, VIT1972          # 

Что любопытно, возникает та же ошибка при Underflow, что и у IBM.

Интересно. А можете прислать максимально упрощенный пример такой ошибки и описать в чем она заключается?

     2019/06/14 16:56, theriodont          # 

Ну, чтобы не повторяться, начало здесь:
https://theriodont.livejournal.com/14007.html?thread=5559#t5559
Вот тут архив с программой и файлами с диагностичекими сообщениями для обоих трансляторов.
https://cloud.mail.ru/public/3Zcp/2GtJTxkCM
Здесь IBM-exeшник запускался в wine, винда будет тормозить, но ошибки пережевывать какое-то время или до победного конца.

     2019/06/15 11:52, VIT1972          # 

theriodont
Посмотрел, работать прямо с Вашим вариантом не стал, там очень много uflo. Первое, что пришло в голову, — это расширить диапазон чисел, что я и сделал. Результат тут https://www.upload.ee/files/10098861/heatut.rar.html Underflow исчезли как класс. Я не знаю, что делает эта программа, но по результатам, в которые выводится в том числе и невязка, вижно, что, по-видимому, сходимость очень низка. Это так? Это нормально?

Вы пользуетесь cod2off? У меня что-то сейчас с ней не получилось. Но по смещениям можно сказать, что uflo происходят в операторе T1=... Причину их появления пока не понял.

     2019/06/15 13:29, theriodont          # 

Диапазон в смысле точность? Да, в простых примерах это помогает, в более сложных далеко не всегда.
Это двумерное уравнение теплопроводности методом Либмана, сходимость и должа быть низкой. В данном случае можно просто заменить нули на что-то чуть побольше и проблема уйдет. В методах исключения (Гаусса, матричная прогонка) такое не помогает в случае больших матриц.

Кому интересно — залил образ для VB OS/2 с установленным VAPLI версии 2.R1.06 (последняя для OS/2) и IronSpring в папке c:\plic, там же link386 (в дистрибутиве полуоси его не было). Последний я побороть не смог — выдает ошибку, хотя все делаю по инструкции. ILINK за объектник тоже берется, но ему чего-то не хватает — остаются неразрешенные ссылки, может кто справится с этим.
https://cloud.mail.ru/public/2gHe/nFc7Ve4tt
На сем опыты пока прекращаю, буду писать опус для сайта.

     2019/06/15 14:02, VIT1972          # 

Не совсем точность. Диапазон увеличен до 10^+-4000, а точность — до 18 знаков. Большие матрицы (до 100000) я с высокими скоростью и точностью делал методом Крылова.

     2019/06/15 14:06, VIT1972          # 

Погодите, метод Либмана — это же метод Зайделя по сути. Метод подпространств Крылова гораздо эффективнее. Оператор задачи диссипативен?

     2019/06/15 14:07, VIT1972          # 

Посмотрите в сторону GMRES

     2019/06/15 15:09, MikeZ          # 

Вы поглядывайте на pl1.su. Сейчас там медленно заполняется содержимое и дополняются возможности. Пока работает исполнитель, занесение делает он. Что потом — пока не знаю, т.к. никто не высказал желания быть администратором.

     2019/06/15 15:41, theriodont          # 

Погодите, метод Либмана — это же метод Зайделя по сути. Метод подпространств Крылова гораздо эффективнее.

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

Вы поглядывайте на pl1.su. Сейчас там медленно заполняется содержимое и дополняются возможности. Пока работает исполнитель, занесение делает он. Что потом — пока не знаю, т.к. никто не высказал желания быть администратором.

Ну как у меня будет что-то готово, я в принципе не против попробовать в своей части.

     2019/06/15 17:12, MikeZ          # 

theriodont: Отлично, спасибо. Значит, админ доступ в панель wordpress получаете Вы, Дмитрий Юрьевич, кто еще? VIT1972? Теперь надо продумать, как нам связаться? Почту здесь выкладывать неохота... Стучитесь в мой skype: mike.zimnov Там разберемся.

     2019/06/15 17:18, kt          # 

Наверное, пока я отвечаю за раздел PL/1-KT, а кто-то за все остальное. Но что-то я не вижу кнопки "Войти", которая была в шаблоне-примере word-press.

     2019/06/15 20:28, VIT1972          # 

MikeZ: Вашу почту я нашел и запрос послал

     2019/06/15 20:30, MikeZ          # 

kt: Да, так. Вам почта с данными входа послана.

theriodont: Вам послана тоже. Прошу подтвердить получение, т.к. в прошлый раз моя почта к Вам не дошла

VIT1972: послано. Это админпанель сайта. На нем могут идти работы исполнителем. В случае любых проблем — обращайтесь, что могу, сделаю.

     2019/06/15 20:47, kt          # 

Да, не сразу понял, как входить. Попробую поковыряться. Все-таки фон в виде распечатки немного мешает чтению текста. И почему-то второй язык — китайский :)

     2019/06/15 21:20, MikeZ          # 

kt: Фон будет убран. Китайский — моя идея. Кто-то мне говорил, что там PL пользуются. А какой ещё язык? Немецкий, бесполезно — они английским пользуются, как и остальная Европа...

Дмитрий Юрьевич, это к Вам. Разработчик сайта пишет: "в разделе Примеры Программ не все ссылки нашел на скачивания исходного кода, подправьте какие вставить".

theriodont: Ваша почта у меня неверна. Надо как-то передавть Вам доступ. Скайп у Вас есть?

Дмитрий Юрьевич, если у Вас есть его почта, скиньте, пожалуйста, мне на почту...

     2019/06/16 01:46, VIT1972          # 

Вот тут можно кое-что узнать по работе с сайтом:
https://help.sprinthost.ru/
Насчет администрирования, предлагаю нам с theriodont забрать все, кроме епархии ДЮ. Предлагайте, как поделить.

     2019/06/16 08:27, theriodont          # 

MikeZ: Я там букву пропустил: therapsid at yandex точка ru
Мне нужно будет время, чтобы освоиться, ибо моя работа не имеет отношения к айти и программированию.

     2019/06/16 13:59, MikeZ          # 

theriodont: Переслал.

В результате наших с исполнителем опытов пароль на admin потерян. Думаем, что делать — связь у нас не прямая...

     2019/06/16 14:19, theriodont          # 

Mikez: Получил.

И все-таки, по просьбам трудящихся, конфигурации с образами LMDE 3 x32 с установленным IronSpring для Oracle VirtualBox. На VB обязательно установить Extension Pack. Удалил либреофис, гимп, тандерберд, файрфокс оставил, при желании можно поставить с нуля свежие версии.
https://cloud.mail.ru/public/4HKT/3kv45ov6R
Предупреждение 1: скачивать 3.6 гига, на диске потребуется ещё 8+.
Предупрежденние 2: линукс может вызвать зависимость у людей со слабым иммунитетом.

Забыл добавить: пароль админа в дебиан — start001, переключение раскладок ctrl+shift.

     2019/06/16 15:03, MikeZ          # 

kt, theriodont и VIT1972

Сейчас на сайте ничего нет в разделе «Другие компиляторы» и его подразделах. Нам надо распределить, кто что берет на себя для начального заполнения. Я заполнил разделы «программы» и «сайты». Только для затравки. Научился править тексты — это очень легко.

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

К вечеру сделайте — сейчас я уезжаю.

     2019/06/18 11:18, VIT1972          # 

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

     2019/06/18 11:28, MikeZ          # 

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

Ф-у-у! Уже несколько раз проклял себя, что связался. Перешли на не самый дешевый платный хостинг, теперь там есть своя почта, места 15Гб, скорость сервера увеличена на порядок, число почтовых ящиков неограничено — создавайте. Но вроде дело идет к концу. Сейчас будет решена проблема с почтой, потом возьмёмся за новости (там бардак) и надо с логином решать, залогиниться можно лишь после нескольких попыток. У Вас тоже так, кстати? И файл sitemap сделать.

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

Бекапы делаеются с 00:00 по 01:00 автоматом... Кто-то писал про цвет, дайте образцы цветов для текста мне на почту, а то я совсем затрахал исполнителя, да и сам тоже... Цвета для текста и фона

     2019/06/19 18:26, theriodont          # 

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

     2019/06/19 20:37, kt          # 

А по-моему, плевать пока на цвета и прочие мелочи. Это мы потом и без исполнителя подберем. Пока он работает, надо все крупные недостатки закрыть.

     2019/06/19 22:20, MikeZ          # 

Так. Проблема с почтой решена полностью, осталось толко проверить, ходит ли она автоматом при регистрации на немассовые ящики. Цвета вроде в админке WP можно подстроить под себя — надо проверить. Проблема с новостями остаётся, раздел программы будет сделан технически как статьи (для удобства добавления). Раз хостинг платный — там поддержка 24/7, но она не касается собственно сайта. Под тестированием я имею в виду походить, посмотреть, как что куда добавлять, как писать, как и куда загружать файлы и т.п.

Всё, что увидел я, сразу вываливается на исполнителя, который уже говорит, что мы вышли за рамки ТЗ, но всё проверить не смогу. До окончательной сдачи 5 дней.

     2019/06/20 10:32, kt          # 

Для Theriodont
Не могли бы Вы посмотреть, допустим ли такой оператор в трансляторе IBM?

DCL X(100) FLOAT BASED(P);
DCL P PTR;
ADDR(X)=NULL;
По идее этот оператор должен быть эквивалентен P=NULL;

     2019/06/20 13:31, VIT1972          # 

Нет, вот листинг:
5724-B67 IBM(R) PL/I for Windows 8.0 (Built:20110825) 
2019.06.20 13:29:56 Page 1


Options Specified

Environment:

Command:
XINFO(XML),TEST,AG(DECIMAL),A(FULL),C,F(I),GN,NIMP,LIST,NEST,OBJ,OF,OP(ALL),S,
STMT,STG,SYSTEM(WINDOWS),TEST,X(FULL),include(ext('inc' 'cpy' 'mac' ' '))


Options Used

ADDEXT
+ AGGREGATE(DECIMAL)
+ ATTRIBUTES(FULL)
BIFPREC(31)
BLANK('09'x)
CHECK( NOCONFORMANCE NOSTORAGE )
CMPAT(LE)
CODEPAGE(00819)
NOCOMPILE(S)
NOCOPYRIGHT
CURRENCY('$')
NODBCS
DEFAULT(IBM ASSIGNABLE NOINITFILL NONCONNECTED LOWERINC
DESCRIPTOR DESCLIST DUMMY(ALIGNED) ORDINAL(MIN)
BYADDR RETURNS(BYVALUE) LINKAGE(OPTLINK) NORETCODE
NOINLINE REORDER NOOVERLAP NONRECURSIVE ALIGNED NULLSYS
BIN1ARG PSEUDODUMMY NULLSTRADDR NULLSTRPTR(NULL) EVENDEC
SHORT(HEXADEC) ASCII IEEE NATIVE NATIVEADDR E(IEEE))
DEPRECATE(
BUILTIN()
ENTRY()
INCLUDE()
VARIABLE()
)
NODLLINIT
NOEXIT
EXTRN(SHORT)
+ FLAG(I)
FLOATINMATH(ASIS)
+ GONUMBER
NOGRAPHIC
NOIGNORE
+ NOIMPRECISE
INCAFTER(PROCESS(""))
NOINCDIR
+ INCLUDE(EXT('inc' 'cpy' 'mac' ' '))
NOINITAUTO
NOINITBASED
NOINITCTL
NOINITSTATIC
NOINSOURCE
LANGLVL(NOEXT)
LIBS( SINGLE DYNAMIC )
LIMITS( EXTNAME(100) FIXEDBIN(31,31) FIXEDDEC(15,15) NAME(100) )
LINECOUNT(60)
NOLINEDIR

5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 2

+ LIST
LISTVIEW(SOURCE)
NOMACRO
MARGINI(' ')
MARGINS(2,72)
MAXGEN(100000)
MAXMSG(W 250)
MAXNEST( BLOCK(17) DO(17) IF(17) )
MAXSTMT(4096)
MAXTEMP(50000)
NOMDECK
MSG(*)
NAMES('@#$' '@#$')
NATLANG(ENU)
+ NEST
NOT('^')
+ NONUMBER
OBJECT
+ OFFSET
NOONSNAP
OPTIMIZE(0)
+ OPTIONS(ALL)
OR('!')
NOPP
NOPPCICS
NOPPINCLUDE
PPLIST(KEEP)
NOPPMACRO
NOPPSQL
NOPPTRACE
PRECTYPE(ANS)
PREFIX(CONVERSION FIXEDOVERFLOW INVALIDOP OVERFLOW
NOSIZE NOSTRINGRANGE NOSTRINGSIZE NOSUBSCRIPTRANGE
UNDERFLOW ZERODIVIDE)
PROBE
NOPROCEED(S)
PROCESS(DELETE)
QUOTE('"')
REDUCE
RESEXP
RESPECT()
RULES(IBM BYNAME NODECSIZE ELSEIF EVENDEC GOTO GLOBALDO NOLAXBIF
NOLAXCTL LAXDCL NOLAXDEF LAXENTRY LAXIF LAXINOUT LAXLINK
LAXMARGINS LAXPUNC LAXQUAL LAXRETURN LAXSCALE LAXSEMI LAXSTG
NOLAXSTRZ MULTICLOSE PADDING PROCENDONLY SELFASSIGN STOP UNREF)
NOSEMANTIC(S)
NOSNAP
NOSOSI
+ SOURCE
STATIC(SHORT)
+ STMT
+ STORAGE
NOSYNTAX(S)
SYSPARM('')
SYSTEM(WINDOWS)
TERMINAL
+ TEST
USAGE( HEX(SIZE) ROUND(IBM) SUBSTR(STRICT) UNSPEC(IBM) )

5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 3

WIDECHAR(LITTLEENDIAN)
WINDOW(1950)
+ XINFO(NODEF XML)
XML( CASE(UPPER) )
+ XREF(FULL)

5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 4

Compiler Source

Line.File Stmt LV NT

1.0 1 testkt1: proc options(main);
2.0 2 1 DCL X(100) FLOAT BASED(P);
3.0 3 1 D CL P PTR;
4.0 4 1 A DDR(X)=NULL;
5.0 5 1 end testkt1;


5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 5


Attribute/Xref Table


Statement Identifier Attributes

******* CL AUTOMATIC FLOAT DEC(6) IEEE
Sets: 3
+++++++ DDR CONSTANT EXTERNAL
ENTRY
RETURNS( BYVALUE FLOAT DEC(6) IEEE )
OPTIONS( LINKAGE ( OPTLINK ) )
Sets: 4
******* NULL AUTOMATIC FIXED BIN(15,0)
Refs: 4
+++++++ P AUTOMATIC POINTER
Refs: 2 4
1 TESTKT1 CONSTANT EXTERNAL
ENTRY()
OPTIONS( LINKAGE ( OPTLINK ) )
2 X BASED (P) DIM(1:100) FLOAT DEC(6) IEEE
Refs: 4


5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 6


Aggregate Length Table

Statement Dims Offset Total Size Base Size Identifier


2 1 0 400 4 X

5724-B67 IBM(R) PL/I for Windows testkt1: proc options(main);
2019.06.20 13:29:56 Page 7


Compiler Messages

Message Statement Message Description

IBM1668I S 4 Target in assignment is a function reference.
IBM1352I E 3 The statement element P is invalid. The statement will
be ignored.
IBM1237I E 4 EXTERNAL ENTRY attribute is assumed for DDR.
IBM2637I W 4 An ENTRY invoked as a function should have the RETURNS
attribute.
IBM1043I I 2 P is contextually declared as POINTER.
IBM1039I I 3 Variable CL is implicitly declared.
IBM1039I I 4 Variable NULL is implicitly declared.


File Reference Table

File Included From Name

0 D:\My Documents\PLI\testkt1\testkt1.pli


Component Return Code Messages (Total/Suppressed) Time

Compiler 12 7 / 0 0 secs

End of compilation of TESTKT1

     2019/06/20 15:24, theriodont          # 

У меня пишет:
IBM1599I S       4.0    The BUILTIN function ADDR may not be used as a pseudovariable.

     2019/06/20 15:54, kt          # 

Theriodont
Спасибо. Но вообще-то именно в данном случае может быть разработчики и не правы.

VIT1972
Вы озверели. Как вообще Вы ориентируетесь в этом море информации? И, кажется, в тексте программы в DCL попал пробел и получилась переменная CL. Но транслятор не смутили такие мелочи :)

     2019/06/20 16:41, VI1972          # 

kt
Это дело привычки. Для Вашего примера многовато, а если строк тысяч 5, и 500 переменных — нормально.
IBM1599I S          4  The BUILTIN function ADDR may not be used as a
pseudovariable.
IBM1039I I 4 Variable NULL is implicitly declared.
Это меня не смутили, а компилятор отработал нормально. В таблице перекрестных ссылок всё было бы видно. А чего это мы тут? Есть же pl1.su.
Засунул туда старый пакет ПНП ПЛ...

     2019/06/21 10:12, theriodont          # 

И, кажется, в тексте программы в DCL попал пробел и получилась переменная CL. Но транслятор не смутили такие мелочи :)

Там не пробел, там начало двух строк в первую колонку попало.

     2019/06/21 11:22, MikeZ          # 

Прошу всех протестировать на pl1.su разделы Форум и Новости. Написать по одной новости, по одной теме. по одному комментарию (можно тестовые), посмотреть весь ход процесса и результат и написать мне на admin@pl1.su. А то мне что-то не нравится, как получилось.

     2019/06/21 15:21, kt          # 

MikeZ
Да, обязательно. В выходные.

theriodont
«Ужасы нашего городка». Теперь я понимаю, почему д-р Фрайбургхаус первым делом в стандарте G запретил использование неописанных переменных.

     2019/06/21 17:14, VIT1972          # 

По поводу этого доктора я уже тут писал:

Я понимаю Вашу любовь к нему, но мы с Вами вместе насчитали только 4 компилятора стандарта G. Общее число их пользователей в мире равно где-то на уровне N+o(N). Т.е., очевидно, что затея Фрайбургхауса в долгосрочной перспективе, является провальной, даже на фоне общих неудач языка. В краткосрочной, думаю, тоже. Я очень хорошо помню, когда мне принесли его творение (в виде компилятора Килдалла) — мой уход на столь нелюбимый в то время Фортран свершился за неделю. Это, кстати, были времена MS DOS. А вот все более-менее массово работающие на сегодня компиляторы используют неудачный полный стандарт и лучшие свойства G.

Что тут ещё скажешь... И про походы против мейнстрима тоже писал:

Кто ходит против него, редко становятся гениями (обычно посмертно), гораздо чаще — маргиналами (это если упорные).

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

     2019/06/22 15:30, theriodont          # 

kt
Тут дело не в неописанных переменных, а в системе сообщения данного компилятора — в случае синтаксической ошибки он выдает пространное словоблудие ни о чём, причём одна ошибка тянет за собой кучу других — это было ещё в PLIOPT на EC-1045 / VM/SP и с тех пор мало что изменилость в этом плане. В то же время все известные мне компиляторы Фортрана с ровно той же системой умолчаний таких проблем никогда не имели.

     2019/06/22 17:14, VIT1972          # 

В PL с момента создания действует идеология: все ошибки пытаться исправить, продолжать компиляцию любой ценой и обо всех проблемах сообщать. IBM её выдерживает довольно чётко. Не удивлюсь, если Эльдерон делал и их первый компилятор. Сейчас, вроде, подключились китайцы и обещают кучу нововведений. Это очень помогает новичкам и очень мешает опытным людям. Меня вот очень раздражало сообщение о том, что в одном комментарии более одной строки. Но когда я однажды сделал ошибку, связанную именно с этим, отключаемым, кстати, сообщением — перестало напрягать. Фортран тоже можно заставить сходно себя вести: не ставить IMPLICIT NONE и снять контроль неописанных переменных.

Кстати, в MVS и СВМ у нас был замечательный редактор Jessy. Куда он делся? Если его прикрутить к Геркулесу, так это же можно комфортно работать на S370 за столом!

     2019/06/22 18:02, theriodont          # 

В СВМ был XEDIT, но СВМ это VM/SP, в VM/370 его нет. В Robert O'Hara's Six Pack VM/370 есть некий Xedit-подобный редактор с префиксной областью, но прикручен он там через такую задницу, что всерьёз работать с ним тоже невозможно.

Это очень помогает новичкам и очень мешает опытным людям.

Новичков это как раз вгоняет в прострацию. Помню, как набрав первую пограму на PL/I, неделю хлопал глазами над простыней с диагностикой, а всего и дел было, что отступ на одну позицию не сделал.

     2019/06/22 18:54, VIT1972          # 

Вот она: https://ru.wikipedia.org/wiki/Jessy

Согласен, если смотреть распечатку, найти сложно, но на экране — нет проблем.

     2019/06/23 13:35, MikeZ          # 

У нас остается пара дней на финальные доработки исполнителем. Всё, что найдёте — сообщайте.

     2019/06/23 14:39, kt          # 

MikeZсчетчики на скачивания и, может быть, на статьи.

VIT1972
работа над динамическими границами продолжается. Решил всё-таки разрешить конструкцию типа
addr(x)=p;
где X — базированный объект. По сути такая конструкция — разыменование указателя (точнее, разыменование базированного на указатель объекта). Это потребовалось для манипуляции со служебными указателями для CTL-объектов.

     2019/06/23 15:02, VIT1972          # 

kt

работа над динамическими границами продолжается.

Отлично. А как это будет выглядеть на PL?

     2019/06/23 15:11, VIT1972          # 

Сразу не догадался... Создал тему «Предложения по работе и доработке сайта&qraquo; на форуме pl1.su в «разном».

     2019/06/23 15:48, kt          # 

Почти так же, как и предлагал раньше:
УМНОЖЕНИЕ_МАТРИЦ(P1,P2,P3,M,N,Q);
// ВХОД A(M,N) B(N,Q) ОТВЕТ C(M,Q)

DCL (P1,P2,P3) PTR;
DCL (M,N,Q) FIXED(31);
DCL (I,J,K) FIXED(31);
DCL (A,B,C)(*,*)FLOAT CTL;

//---- НОВЫЕ ОПЕРАТОРЫ ----
ADDR(A)=P1; // АДРЕС ДЛЯ МАССИВА A
ADDR(B)=P2; // АДРЕС ДЛЯ МАССИВА B
ADDR(C)=P3; // АДРЕС ДЛЯ МАССИВА C
?INDEX(1,2)=M; ?INDEX(2,2)=N;
?RET(ADDR(A)); // ИЗМЕНЯЕМ КОМАНДЫ ДЛЯ A
?INDEX(1,2)=N; ?INDEX(2,2)=Q;
?RET(ADDR(B)); // ИЗМЕНЯЕМ КОМАНДЫ ДЛЯ B
?INDEX(1,2)=M; ?INDEX(2,2)=Q;
?RET(ADDR(C)); // ИЗМЕНЯЕМ КОМАНДЫ ДЛЯ C

//---- САМО УМНОЖЕНИЕ ----
DO I=1 TO M;
DO J=1 TO Q;
C(I,J)=0;
DO K=1 TO N;
C(I,J)=A(I,K)*B(K,J);
END K;
END J;
END I
END УМНОЖЕНИЕ_МАТРИЦ;
контроль индексов вне границ сохранится

     2019/06/23 16:49, kt          # 

Забыл добавить, что границы циклов можно везде писать как LBOUND и HBOUND. Тогда M, N, Q в данной процедуре будут только в начальных присваиваниях границ.

     2019/06/23 18:18, VIT1972          # 

Почти так же, как и предлагал раньше:

Надо какую-нибудь преодбработку мне придумать, чтобы автоматом заменять из стандарта к Вам. Я правильно понял, что новые операторы заменяют ALLOCATE A, B, C; ? и ещё звёздочки... Операции с сечениями будут работать? А, кстати, препроцессор у Вас есть?

     2019/06/23 18:22, VIT1972          # 

kt
Разботчик отказал в счётчиках — не было в ТЗ, а переделать надо все ссылки, где нужны счётчики. Но я в любом случае планирую доработки вторым этапом после месяца работы, так что это остается в планах. Найму кого-то ещё. Раз в форуме теперь есть спецтема, давайте в неё все пожелания сложим.

     2019/06/23 18:25, VIT1972          # 

Это прямо в приёмы программирования просится...

     2019/06/23 18:30, MikeZ          # 

Введение СTL переменных приветствую! Надеюсь, это только первый шаг...

     2019/06/23 20:03, kt          # 

MikeZ
Новое корыто тоже было первым шагом. А кончилось все плохо. CTL-переменные были введены зимой.

VIT1972
О препроцессоре как в анекдоте: туалетной бумаги нет, но есть наждачная и серпантин... Есть %INCLUDE и %REPLACE. Оператор ALLOCATE A,B,C; так и остается, но перед ним надо присвоить индексы и обратиться к ?RET отдельно для каждого массива. В примере же нужно передать уже готовые указатели в подпрограмму, а ALLOCATE был где-то снаружи. И поэтому пришлось вводить способ записать указатель в служебный указатель. А вообще-то препроцессор — это совершенно отдельная программа, вот и напишите его так, чтобы появились сечения (причём, не непрерывные в памяти) и исходный вид текста был такой, какой Вашей душе угодно.

     2019/06/25 02:40, MikeZ          # 

VIT1972
Я смотрю, Вы уже совсем освоились! Здорово! Давайте, Вы уж тогда и анонсы делайте.

Новости:
1. Вот теперь мы одни, деньги за сайт ушли. Правда, разработчик обещал всё же за отдельные деньги сделать счетчики, но пока не вернулся.
2. В связи со вчерашней регистрацией 30 явно подозрительных личностей, регистрация, вход, запрос на восстановление пароля усложнена — VIT1972 добавил капчу.

     2019/06/25 11:22, VIT1972          # 

Да, ну, как освоился. Это случайно получилось. НО левых регистраций вроде нет. Предлагаю всю переписку по сайту перенести туда — здесь мы просто засоряем тему и этот сайт. Огромное спасибо Автору сайта за гостеприимство!

Добавить свой отзыв

Написать автору можно на электронную почту
mail(аt)compiler.su

Авторизация

Регистрация

Выслать пароль

Карта сайта


Содержание

Каким должен быть язык программирования?

Анализ и критика

Описание языка

Компилятор

Отечественные разработки

Cтатьи на компьютерные темы

●  О превращении кибернетики в шаманство

●  Про лебедей, раков и щук

●  О русском ассемблере

●  Арифметика синтаксиса-3

●  Концепция владения в Rust на примерах

●●  Концепция владения в Rust на примерах, часть 2

●●  Концепция владения в Rust на примерах, часть 3

●  Суть побочных эффектов в чисто функциональных языках

●  О неулучшаемой архитектуре процессоров

●  Двадцать тысяч строк кода, которые потрясут мир?

●  Почему владение/заимствование в Rust такое сложное?

●  Масштабируемые архитектуры программ

●  О создании языков

●●  Джоэл Спольски о функциональном программировании

●  Почему Хаскелл так мало используется в отрасли?

●  Программирование исчезнет. Будет дрессировка нейронных сетей

●  О глупости «программирования на естественном языке»

●  Десятка худших фич C#

●  Бесплатный софт в мышеловке

●  Исповедь правового нигилиста

●  ЕС ЭВМ — это измена, трусость и обман?

●  Русской операционной системой должна стать ReactOS

●  Почему обречён язык Форт

●  Программирование без программистов — это медицина без врачей

●  Электроника без электронщиков

●  Программисты-профессионалы и программирующие инженеры

●  Статьи Дмитрия Караваева

●●  Идеальный транслятор

●●  В защиту PL/1

●●  К вопросу о совершенствовании языка программирования

●●  Опыт самостоятельного развития средства программирования в РКК «Энергия»

●●  О реализации метода оптимизации при компиляции

●●  О реализации метода распределения регистров при компиляции

●●  О распределении памяти при выполнении теста Кнута

●●  Опыты со стеком или «чемпионат по выполнению теста Кнута»

●●  О размещении переменных в стеке

●●  Сколько проходов должно быть у транслятора?

●●  Чтение лексем

●●  Экстракоды при синтезе программ

●●  Об исключенных командах или за что «списали» инструкцию INTO?

●●  Типы в инженерных задачах

●●  Непрерывное компилирование

●●  Об одной реализации специализированных операторов ввода-вывода

●●  Особенности реализации структурной обработки исключений в Win64

●●  О русском языке в программировании

●●  Формула расчета точности для умножения

●●  Права доступа к переменным

●●  Заметки о выходе из функции без значения и зеркальности get и put

●●  Модификация исполняемого кода как способ реализации массивов с изменяемыми границами

●●  Ошибка при отсутствии выполняемых действий

●●  О PL/1 и почему в нём не зарезервированы ключевые слова

●●  Не поминайте всуе PL/1

●●  Скорость в попугаях

●●  Крах операции «Инкогнито»

●●  Предопределённый результат

●●  Поддержка профилирования кода программы на низком уровне

●●  К вопросу о парадигмах

●  Следующие 7000 языков программирования

●●  Что нового с 1966 года?

●●  Наблюдаемая эволюция языка программирования

●●  Ряд важных языков в 2017 году

●●  Слоны в комнате

●●  Следующие 7000 языков программирования: заключение

Компьютерный юмор

Новости и прочее




Последние отзывы

2024/04/19 22:13 ••• Автор сайта
Признаки устаревшего языка

2024/04/18 11:14 ••• Ivan
Энтузиасты-разработчики компиляторов и их проекты

2024/04/11 00:08 ••• Автор сайта
Постфиксные инкремент и декремент

2024/04/09 23:50 ••• Автор сайта
Русский язык и программирование

2024/04/07 15:33 ••• MihalNik
Все языки эквивалентны. Но некоторые из них эквивалентнее других

2024/04/01 23:39 ••• Бурановский дедушка
Новости и прочее

2024/04/01 23:32 ••• Бурановский дедушка
Русской операционной системой должна стать ReactOS

2024/03/22 20:41 ••• void
Раскрутка компилятора

2024/03/20 19:54 ••• kt
О многократном резервировании функций

2024/03/20 13:13 ••• Неслучайный читатель
Надёжные программы из ненадёжных компонентов

2024/03/07 14:16 ••• Неслучайный читатель
«Двухмерный» синтаксис Python

2024/03/03 16:49 ••• Автор сайта
О неправомерном доступе к памяти через указатели

2024/02/28 18:59 ••• Вежливый Лис
Про лебедей, раков и щук