LINUX.ORG.RU

Программирование на Эсперанто

 , ,


1

1

Друзья, не секрет что LOR богат талантами и интересными личностями.

Вот уже почти месяц тема о программировании на Русском языке лидирует в топе форуме.

(ЯОС - 2020-02)

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

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

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

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

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

Что думает уважаемый ЛОР?



Последнее исправление: gret_och_ka (всего исправлений: 2)
Ответ на: комментарий от X512

Поправил ответ:

если интерфейсы не менять, то да, будет совместимость, потому что контрольная сумма зависит от интерфейса. Но не менять интерфейсы = остановить развитие. Тут уж нужно выбрать что-то одно. В Блекбоксе выбрали совместимость, но там масса готовых приложений. В ЯОС приложений нет. В A2 они есть, но это частные приложения, от которых сообществу никакой пользы нет. Хранить совместимость с чужими частными приложеними нет никакого смысла.

При переводе интерфейс меняется, поэтому да, бинарной совместимости не будет. Если бы была задача сохранить её, то можно было бы сделать двухъязычность с сохранением бинарной совместимости. Но я не вижу, зачем она нужна в данной ситуации. Сделать это было бы более трудоёмко. Равно как и наследоваться от чего-то там, тоже было бы трудоёмко.

Совместимость потеряна не из-за перевода, а из-за того, что ЯОС - это не A2, а отдельно развивающаяся в своих направлениях система. При её ответвлении от A2 не было наложено условие сохранения бинарной совместимости. Есть совместимость на уровне исходных текстов и это уже достаточно хорошо. Приведите примеры использования из жизни, когда её не хватит, и скажите, сколько мне заплатят за то, чтобы я сохранил бинарную совместимость с A2. Тогда я посчитаю - что мне выгоднее - сохранить совместимость за счёт усложнения механизма переводов или отказаться от сделки.

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

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

Мальчик, которого на пасеке укусила коза, перестал верить в логику.

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

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

Так с любой конкретной библиотекой ещё более мелочи.

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

Чем кому помешает дополнительный экспортный символ на тот же адрес?

Могут быть коллизии с другими языками, использующими тот-же алфавит. Манглированные имена методов C++ замучаетесь переводить.

С, С++, Pascal, Python, BASIC переведены на многие языки включая русский.

На уровне достаточном до продакшена не переведены. Текущие переводы на игрушечном уровне. Серьёзный ЯП с русским языком — только 1С.

ЯОС/А2.

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

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

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

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

локализации API нативных компилируемых библиотек так чтобы не ломалась совместимость

Так совместимость при компиляции или бинарная? Для бинарной делаются отдельные библиотеки-прокладки. Например, вокруг libc.so будет libc_rus.so, libc_zh.so и т.д.

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

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

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

косишь

Я только мимо проходил. Сам больше про махаяну. Диогена уважаю.

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

Например, вокруг libc.so будет libc_rus.so, libc_zh.so и т.д.

В принципе возможный вариант, только в отличии от PE (исполняемых файлов Windows) в ELF нету symbol forwarding. Может быть можно сделать релокацию адресов в таблице символов, но для этого нужны специальные инструменты которых я не видел.

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

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

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

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

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

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

Насчёт прочих функций и типов - тут X512 прав, нужно конвертировать. Тем не менее, такая конвертация - это дело техники, которое в теории делается за одну команду. Цель, чтобы можно было к одному и тому же модулю обращаться на любом языке, не ставилась.

Т.к. целью ЯОС является русскоязычная система, а не двухъязычная. Можно сделать из русскоязычной ЯОС англоязычную и обратно - это будут несовместимые системы (ещё раз повторяю - такой цели не было, но её можно достичь, если её поставить).

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

Начал с прочтения истории о Диогене. Жду дальнейших инструкций на городском собрании (где пердят)

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

Эту задачу решить можно, но мне это не нужно. ЯОС - это вещь в себе, у ней нет сторонних приложений. Ничто не мешает просто писать программы для неё на русском языке. Если, допустим, в рамках данной темы захочется использовать «меджуславянский» как доп.язык, то тогда придётся кое-что переделать. В любом случае, основная трудоёмкость создание такой системы - это перевод собственно самого кода, который раз в 100 более трудоёмок, чем создание движка локализации на уровне компилятора и/или рантайма, с заданными свойствами. Если система переводится на N языков, то в 100*N раз.

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

Эту задачу решить можно, но мне это не нужно. ЯОС - это вещь в себе, у ней нет сторонних приложений.

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

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

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

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

Иностранные программы под A2 никем не распространяются, поэтому это чисто теоретический вопрос в данном случае. Будут программы - будет и предмет для разговора.

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

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

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

Иностранные программы под A2 никем не распространяются

Для BlackBox есть http://www.zinnamturm.eu/, наверное и для A2 есть что-то похожее. Для ETH Oberon тоже есть архивы стороннего софта.

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

только в отличии от PE (исполняемых файлов Windows) в ELF нету symbol forwarding

Увы. В libc_rus будет куча функций вида

ФАЙЛ *открыть_файл(конст симв *имя, конст симв *режим) {return fopen(имя, режим); }
monk ★★★★★
()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

Увы. В libc_rus будет куча функций вид

Что будете делать с глобальными переменными (да, глобальные переменные динамической библиотеки можно использовать в программе и такие библиотеки есть) и абстрактными классами (Qt и т.п.)?

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

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

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

ответив подзатыльник

Что правда в силе, у кого сила, то и прав?

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

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

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

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

сила ночи, силя, одинакова хуйня.

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

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

Диоген под прикрытием

Прикрытие бессильна против немальчишки, так как прикрытие - это всего лишь легенда, а немальчишка - это форс да еще мажор.

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

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

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

Что будете делать с глобальными переменными

alias

int &код_ошибки = errno;

и абстрактными классами (Qt и т.п.)

По-хорошему, надо переводить в свои наследованием.

class ЭлементИнтерфейса : Widget, ...
...
class Кнопка : Button, ЭлементИнтерфейса
...

В целом, более перспективен вариант перевода на стадии компиляции. То есть libfoo.so имеет какие-то внутренние идентификаторы, а уже foo_en.h, foo_ru.h, … проставляют перевод. На C/C++ можно через макросы, на питоне через что-то типа https://github.com/belonesox/python-udaff-encoding. Если ЯП не позволяет такое штатно, можно добавить трансляцию внешней программой в Makefile (+ обратная трансляция сообщений об ошибках).

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

ну во-первых, смысл этой истории совсем в другом.

мы говорим лишь о том, какими их изображали

Я потребитель (художественного произведения) - я так вижу. Или у продукта потребления есть EULA - как воспринимать продукт и никак иначе? Преследование за мыслепреступление?

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

Прошу ссылку в студию.

Про A2 не знаю. Для ETH Oberon есть ftp://ftp.ethoberon.ethz.ch/, правда он сейчас не работает, у меня есть архив. ETH Oberon одно время применяли как основную ОС и писали много софта под неё. Делали специальные Оберон-компьютеры.

Нашёл рабочее зеркало: ftp://ftp.gwdg.de/pub/languages/oberon/ftp.inf.ethz.ch/.

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

Мажоры кукисы и айпишники не меняют, а мальчишка-Диоген пердит не переставая (преследование за мыслезатупление)

anonymous
()

Что думает уважаемый ЛОР?

Благодарю за троллинг.

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

🤦‍♂️🤦🤦‍♂️🤦🤦‍♂️ Долбаный стыд 🐒

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

Спасибо, хотя разбираться лень. Во всяком случае, это система более старая, чем A2, в ней ещё не было активных объектов. Да и в A2 дофига всего есть, нет только ресурсов всё это освоить (если я только ничего не путаю).

den73 ★★★★★
()
Последнее исправление: den73 (всего исправлений: 1)
Ответ на: комментарий от monk
ФАЙЛ *открыть_файл(конст симв *имя, конст симв *режим) {return fopen(имя, режим); }

А теперь попробуй так написать несколько тысяч строк кода, удобно переключать раскладку почти на каждой строке и не по разу?! Это клиника, конечно.

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

А теперь попробуй так написать несколько тысяч строк кода

Такое надо кодогенератором делать.

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

А теперь попробуй так написать несколько тысяч строк кода, удобно переключать раскладку почти на каждой строке и не по разу?! Это клиника, конечно.

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

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

Наколхозить обёрток чтобы искусственно ограничить область применения кода, для получения профита в виде феерического ниуя. Кому я тут про логику говорил выше, а главное зачем и науя?! Проще аборигену из народа Хадза объяснить, который ни малейшего представления ни о науке ни о античной Греции не имеет. Удачи, короче вам в мире ваших влажных фантазий, где логика это то что вы себе навоображали вместо более чем двух тысячелетней науки! 👍

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

Это как словарик или перевод интерфейса программы пишется один раз в жизни.

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

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

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

API меняется достаточно редко. К тому же разработчики всяких растов и хаскелей выполняют не меньший объём работ.

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

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

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

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

API меняется достаточно редко.

Расскажите это авторам GTK и прочих библиотек. Обероны всё ещё на GTK 2 сидят.

К тому же разработчики всяких растов и хаскелей выполняют не меньший объём работ.

И успеха в этом плане как-то не видно. Всё равно на этих языках мало софта и многие библиотеки пока не доступны.

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

И успеха в этом плане как-то не видно. Всё равно на этих языках мало софта и многие библиотеки пока не доступны.

Но они же не сдаются. Путь в тысячу вёрст начинается с одного шага.

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

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

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