LINUX.ORG.RU

Язык программирования Картарика.

 картарика, ,


2

1

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

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

Создается на основе русской раскладки клавиатуры. С открытым исходным кодом. Разрабатывается на языке C.



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

Ответ на: комментарий от zx_90
Если Сумма больше 100 или Сумма меньше 500:
    Сумма += 20

Это - корявая херня.
Вот - русский код здорового человека:

Если сумма от 100 до 500 добавить к ней 20
Если не можете так, то лучше вообще не начинать.

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

Ну а что? Бухам бы зашло, но у них 1с шляпа, в которой такая же корявая херня. Ну, конечно, там надо чтобы сообщения об ошибках были нормальные и чтобы всё это дело исключало неоднозначность формулировок. (- приборы! - Что приборы?)
В общем это всё вообще нихера не просто и на выходе будет какой-то полудекларативный язык, с кучей контекста и диким ast.

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

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

Поставь раскладку, чтобы верхний цифровой ряд эти символы выводил без переключения. А вообще, какая разница, держать shift для надписи «Кар» или держать win для записи «$»?

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

Бухам бы зашло, но у них 1с шляпа, в которой такая же корявая херня.

Не зашло бы.

ОСВ по счёту 10.11 по работник Иванов Сергей Петрович в разрезе Партия

легче написать и разобрать, чем синтаксически корректное

ОСВ по 10.11 по Иванову Сергею Петровичу в разрезе партий.
monk ★★★★★
()
Ответ на: комментарий от monk

Не зашло бы.

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

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

Пользователи не хотят. Также как англоязычные хотят писать

out.Println(var)

а не

print the var to the out with a newline
monk ★★★★★
()
Ответ на: комментарий от den73

По раскладке Чистова. Я попробовал, может быть неплохая идея. Надо смотреть. Но если она плохо работает в Windows и Linux, то вряд ли взлетит. Ну не будут же переходить на новую ось только из-за раскладки. Я бы лучше допилил нормально версию для Windows/Linux, если возможно, а дальше в зависимости от отзыва пользователей.

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

т.е. ваш язык будет менее «плотным» по передаче информации, чем Питон

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

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

Хотя бы потому что в среднем слова на русском длиннее

И что? Есть автодополнение. А когда первый раз придумываешь идентификатор время придумывания намного больше времени печати.

значительная часть терминов использующихся в программировании вообще отсутствует

Например? Аббревиатуры протоколов разве что (XML, JSON, HTTP, …)

monk ★★★★★
()

Отсупы? Не, нафик.

И проблема всех этих русских, китайских, арабских (даже) языков в том, что интернет он англоязычный. HTTP, XML, JSON, REST. Можно, конечно, как @den73 выдумывать аналоги, но накой это нужно, если они будут известны только в рамках очередного Кар и сбивать с толку?

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

разве что (XML, JSON, HTTP, …)

Это не «разве что» ;) это то, на чем сейчас все стоит. Очередной языГ, который может хеловорд вывести никому не интересен. Нужно чтоб AWS, Azure, Google Cloud и все такое.

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

Я для этого в линуксе назначал временное переключение языков на правый винкей, то есть првин-шифт-х пишет {, например. Ну и в редакторе всегда можно переназначить одну последовательность на другую, если он хоть чуть вменяемый. Ты < > как собираешься писать? В 1с редакторе например я всегда назначал бб превращать в <, юю в >, бю в <> и так далее. Ты какой-то фигней занимаешься, подстраивая важную часть синтаксиса под хреновый инпут метод.

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

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

Например, вот ссылка переводчик от Яндекса на глагол to be: https://translate.yandex.ru/?lang=en-ru&text=to%20be

Там и синонимы/антонимы в английском и словарь со всеми смыслами и примеры перевода в текстах (иногда очень помогает смысл некоторых слов и словосочетаний именно по примерам понимать).

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

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

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

Так («от» и «до») тоже неплохо, но «добавить к ней» многословно, достаточно просто «добавить».

hobbit ★★★★★
()

Интересный pet project, но зачем? У языка не будет большого community. Латиница популярна, т.к. есть по дефолту всегда и всюду.

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

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

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

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

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

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

Этот же проект, как я понимаю, пытается решить задачу стратегическую: создать словарь, которым будут пользоваться люди, развивающие программирование по-русски. Понятное дело, что если люди такую задачу не ставят, то и решить её не получится, колхоз — дело добровольное.

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

\н - а это уже клиники

Да, должен быть какой-нибудь \пс (перевод строки)!

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

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

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

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

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

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

А с другой стороны выглядит более однозначно для читающего код.

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

В Win и Lin она работает плохо, т.к. возникают всякие конфликты.

А можно узнать, чем плохо? Уж в линуксе раскладки народ ваял всякие…

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

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

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

Поэтому потуги «программирования на русском» это дичайший регресс, как если бы вместо «ax**2+bx+c=0» пытались бы писать «а икс квадрат плюс бэ икс плюс це равно нулю». В языках программирования «английские слова» - это никакие не слова, а такие же x и y.

PS: иногда можно слышать, что де англофоны воспринимают текст программы иначе, т.к. там «родные» слова. Даже если это и так, то это скорее минус для них.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 2)
Ответ на: комментарий от zx_90

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

FIXME, abort, assert, backend.

Смотри как будет: ты начнёшь портировать на свой язык какой-то код. Придумаешь, как перевести backend. Завтра ты же или другой разработчик тоже начнут портировать на свой язык какой-то код. Опять придумают, как перевести backend. И т.д.

Потом будет ещё хуже: ты переведёшь operator (+, -, =) как «оператор», а через три дня обнаружишь, что есть ещё оператор «if». И у тебя получится как в справке из Excel, когда в оглавлении присутствуют два идентичных заголовка.

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

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

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

Там и синонимы/антонимы в английском и словарь со всеми смыслами и примеры перевода в текстах (иногда очень помогает смысл некоторых слов и словосочетаний именно по примерам понимать).

Там с контекстом плохо: https://translate.yandex.ru/?lang=en-ru&text=statement

В 1С или Excel это всегда «оператор». В язык-1 (основанном на Scheme) – «команда». Но никак не «заявление».

Если будешь писать документацию к своему языку, то нужны единообразные термины в пределах документации. У тебя, судя по https://github.com/zx-90/kartarika/blob/master/doc/standard/start.md statement = «строковое выражение».

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

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

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

zx_90
() автор топика
Ответ на: комментарий от no-such-file

В языках программирования «английские слова» - это никакие не слова, а такие же x и y

Ага-ага. Вот только ЯП, в которых пытались обойтись вообще без ключевых слов так и остались маргинальщиной. Сравните элитный для своего времени APL и современную Julia, например. Элементы ЕЯ в ЯП, как ни крути, играют важную роль.

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

Точнее марка кофе, которую назвали по имени острова, который назвали… (дальше не знаю).

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

3

Я реализовал модификатор пробел, но на самом деле переставлены местами пробел и правый Alt. Проблема, например, в VSCode - нажимаешь пробел - выскакивает меню. Модификатор Alt неудобен при 10-пальцевой печати, а нужны на самом деле не просто {}[], а возможность вводить двухъязычный текст. Набить какое-нибудь слово Xml в массиве русскоязычного кода без переключения раскладки, удерживая правый Alt и нажимая/отпуская Shift - мне кажется нереальной акробатикой, мои пальцы так не складываются. Если не печатать 10 пальцами, то вроде это норм, т.е. правый альт вообще штатно используется для ввода доп. латиницы в европейских раскладках (насколько я в курсе). Вообще, есть исходники и инструкция. Я сейчас этой раскладкой при новых установках Linux не пользуюсь. В офтопике реализация через autohotkey более жизнеспособна.

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

Естественный язык - очень сложная штука

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

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

Чтобы не заниматься из раза в раз той хернёй с енумами, if-elseif/switch-case портянками a > b && a < c вместо b < a < c и прочим дерьмом, которым занимаются на копируемых яп. Делаешь что-то новое, так привноси что-то новое, чтобы программирование хоть куда-то двигалось, а не очередную копипасту с плюсов, чтобы топтаться на месте.

crutch_master ★★★★★
()
Ответ на: комментарий от no-such-file

Поэтому потуги «программирования на русском» это дичайший регресс, как если бы вместо «ax**2+bx+c=0» пытались бы писать «а икс квадрат плюс бэ икс плюс це равно нулю». В языках программирования «английские слова» - это никакие не слова, а такие же x и y.

Ты до сих пор пишешь на Фортране и используешь только однобуквенные переменные?

Ты не поверишь, но идея программирования на естественном языке провалилась ещё в 60-е

Про SQL и ABAP тоже ничего не слышал?

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

Ты не поверишь, но идея программирования на естественном языке провалилась ещё в 60-е и уже в 70-е стало понятно что программа это математический объект, а не свободное изложение.

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

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

У красной панды на логотипе лиса. Дальше что?

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

Вот кстати есть ещё одна тема для сотрудничества: накопление хороших ответов на вот эти возражения. Для примера про английские слова я даже проводил спец. исследование:

http://вече.программирование-по-русски.рф/viewtopic.php?f=4&t=446

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

http://rsdn.org/forum/flame.comp/8014897?tree=tree

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

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

Ты не поверишь, у меня нет цели писать на естественном языке. Имена в стиле МояТвояПонимай меня вполне устроят. Закорючками тоже не надо сильно увлекаться Perl и регулярные выражения не дадут соврать )

Согласен, что англофоны скорее всего воспринимают текст сильно по-другому, но почему это минус?

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

ЯП, в которых пытались обойтись вообще без ключевых слов так и остались маргинальщиной

APL был специализированным языком, это скорее предтеча современных математических пакетов типа Mathematica или Mathcad. Там пытались сделать всё «как в математике», но на том уровне развития техники. Я имею в виду именно визуальное представление.

современную Julia

Это другая ветвь развития, числодробилки. Для них визуальная выразительность не нужна. А то что, кое-кто до сих пор не понял, что не надо пихать везде слова, то это их проблемы. Например если бы они вместо слова function использовали бы fn, то все сказали бы им спасибо. Так что нишевая Julia уж точно не является мерилом адекватности дизайна.

no-such-file ★★★★★
()
Ответ на: комментарий от zx_90

почему это минус

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

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

no-such-file ★★★★★
()
Ответ на: комментарий от zx_90

нет цели писать на естественном языке

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

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

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

zx_90
() автор топика
Ответ на: комментарий от no-such-file

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

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

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

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

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

Потому что внутри программы надо как-то именовать функции и переменные

Называй, тебе кто-то мешает? Сейчас это везде возможно. Какое это имеет отношение к тому, что for это некая алгоритмическая структура, а не слово «для»?

no-such-file ★★★★★
()
Ответ на: комментарий от crutch_master

Видимо ими и занимаются из раза в раз, потому что лучше ничего не придумали. На что бы вы заменили конструкцию if..elseif ?

zx_90
() автор топика
Ответ на: комментарий от no-such-file

Называй, тебе кто-то мешает?

В основном, другие программисты :-)

Какое это имеет отношение к тому, что for это некая алгоритмическая структура, а не слово «для»?

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

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

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

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