LINUX.ORG.RU

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

 , , ,


2

1

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

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

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


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

А вот скажи мне, мой умный математическо огороженный от врагов по периметру друг, уже пояснялось ранее или может я упустил - ты так до сих пор и уверен, что рус. яз. действительно нужен в контексте?
Ведь есть же такая теория, что руссо-туристо-программисто потому такие умненькие, что им не мешает знание чужого языка.
Т.е., допустим, есть присваивание посредством слова сунь. И если это на вражеском, то, допустим, это put.
Программер выучил это слово не вникая и использует.
А если это сунь, то он сидит и тупИт, вспоминая между [сунь|всунь|ткни|засунь|положи|вложи|дай] ну и далее.
Не?

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

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

Скролл лок же загорается при переходе на вторую раскладку. Если не загорается, то ССЗБ.

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

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

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

Чтобы автоматически придумать синонимы к английскому put надо быть таким-же высокообразованным и всесторонне культурно развитым человеком, как, например, Mr. Ху ар юр ту факинг лэкчер ми, и тогда синонимы из головы будут мешать при разработке Эльбрусов.
А если не иметь определённого уровня, и быть как, например, просто парень из деревни по фамилии Громыко, то зазубрил однажды put и используешь всегда чётко там где надо.

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

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

Vier_E ★★★ ()

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

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

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

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

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

А кое-где идёт обратная тенденция. Вот авторы сишечки когда-то решили, что слово function (procedure, subroutine) не нужно, мы и так по скобкам поймём, что это функция, а не переменная. В сишечке прижилось и даже перешло в c++ и Java. Но вот в современные языки, которые для человеков, а не роботов — Go, Rust, JS — возвращается либо само function, либо сокращения от него. Элементы ЕЯ, выходит, помогают, а не мешают.

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

Как? А разве вы не знаете, что доллар - это заговор иллюминатов, Билл Гейтс хочет уничтожить весь мир через прививки, и вообще Америка скоро рухнет? ;)

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

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

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

Мне на английском будет легче потому что привык уже давно как и всем задействованным в сфере программирования более менее профессиональным образом. Если изучать на кириллице изначально программирование, возможно. И то не уверен - математики вон множество алфавитов используют не случайно. Но смысла так делать нет т.к. open source программы разрабатываются интернациональными коллективами. Мир уже давно движется к тесному взаимодействию между говорящими на разных языках, географические расстояния более не проблема для человечества. А тут предлагают пилить что то непонятное, предназначенное для того что бы каждый сидел в своём болоте и лягушки из соседнего болота ничего не поняли. В то время как ПО становится всё сложнее, framework-и и lib-ы занимают под гигабайт. Удачи автору переписать их все на свою родную кириллицу.

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

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

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

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

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

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

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

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

А порог входа ещё есть куда понижать. Ещё не каждая кухарка занимается программированием ;)

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

Если заменить слово «function» словом «fgf», то на привыкание уйдёт 10 минут, а дальше на продуктивности это никак не скажется.

Я хочу сказать, что дело не в лексическом смысле ключевых слов, а в концепциях языка. Пусть даже ключевое слово будет нечитаемым, какими-нибудь «%&*», «fn», «fun». Концепции языка программирования останиться одной.

Я сталкиваюсь с другой проблемой — качеством и количеством документации на русском. Это я считаю действительной проблемой.

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

Я про географическое положение. Почему тогда «Картарика», если это не заимствование с java и скотлина?

Почему такое название для Вашего ЯП?

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

Вы не поверите. Это набор букв под который можно было свободный сайт найти :) Хотя похоже на какое-то географическое название. Есть ещё слово Гардарики - так Викинги раньше Русь называли. Но совпадение случайно.

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

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

Welcome to Node.js v14.16.0.
Type ".help" for more information.
> function русскийГоворит(x) {
... for (let счётчик = 0; счётчик < x; счётчик++) {
..... console.log('Здраствуй, кириллица!');
..... }
... }
undefined
> русскийГоворит(5);
Здраствуй, кириллица!
Здраствуй, кириллица!
Здраствуй, кириллица!
Здраствуй, кириллица!
Здраствуй, кириллица!
undefined
>
wtj12 ()
Ответ на: комментарий от wtj12

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

То есть все варианты, где можно сразу или в течении недели писать кириллицей оказываются очень неудобными и костыльными. Ничего из этого не взлетело. Если делать с нуля, можно сделать всё очень удобно и гармонично… или не сделать :) Как-то так, в-общем. Хочу попробовать написать полноценный ЯП и посмотреть что из этого выйдет.

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

Запили плагин для babel который транспилирует эти (отвратительно выглядящие на мой взгляд, честно говоря) «вернуть, Кар.печать, ...» в return и console.log соответственно. Вот и решение проблемы.

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

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

Что-то мне кажется на основе этого максимум очередной костыль можно построить…

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

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

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

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

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

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

wtj12 ()

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

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

Новые языки пишутся постоянно. Ну будет ещё один. Почему вас так это задевает?

и свалить из раши.

С Украины что ли? Просто свалить из России достаточно глупая цель. Если бы ты написал ради чего уехать, то это можно было обсуждать. Я примерно прикидывал, самое выгодное, как это ни банально звучит, зарабатывать как можно больше и тратить как можно меньше. В нашем случае - это работать удаленно на западную компанию и жить где-нибудь в регионе (не Москва и Санкт-Петербург). Ну или прикинь в какой-нибудь условной Жмеринке жить с зп в несколько тысяч баксов. Многие выбирают для жизни какие-нибудь дешевые страны типа Таиланда или Индии. Но сейчас в связи с ковидлой не знаю как обстоят дела на этом фронте.

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

У меня просто был опыт работы в Москве пару лет. Я посмотрел, посчитал, получилось что мне в регионе жить лучше, уехал обратно. Сейчас с улыбкой читаю различные комменты на разных сайтах о том, как круто жить в Москве. Хотя тут, конечно, зависит от образа жизни, к которому стремишься. Кому-то Москва или Нью-Йорк больше подойдёт, но это дело вкуса не более.

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

Сейчас компилятор ещё в самом начале написания, поэтому компилятор самого себя пока не получится. Но как только, так сразу…

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

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

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

wtj12 ()

Что нужно добавить:

  • Нормальные числа, с точкой, но без проблем с точностью.
  • Строки не из символов юникода, а из графем, изменяемые, с COW, slice оптимизациями.
  • СУВТ из метапрога, ну или хотя бы enum из Rust https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html.
  • ПМ, 2к21 на дворе
  • IDE, 2к21 на дворе
MOPKOBKA ()
Ответ на: комментарий от MOPKOBKA

Нормальные числа, с точкой, но без проблем с точностью.

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

Строки не из символов юникода, а из графем, изменяемые, с COW, slice оптимизациями.

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

Это базовая спецификация на 1000+ страниц: https://www.unicode.org/versions/Unicode13.0.0/UnicodeStandard-13.0.pdf

А вот здесь на 2500+ страниц просто перечисление всех символов юникода с кратким описанием: https://www.unicode.org/Public/13.0.0/charts/CodeCharts.pdf

СУВТ из метапрога, ну или хотя бы enum из Rust https://doc.rust-lang.org/book/ch06-01-defining-an-enum.html.

СУВТ не нашел, что это такое? А enum есть. В документации называется Перечисление. Не знаю, сильно ли он отличается от того, что есть в Rust, просто не знаком с особенностями этого языка. Но если что-то какую-то конкретную фичу в enum имеете в виду, то готов обсуждать.

ПМ, 2к21 на дворе

Что такое ПМ? Яндекс на первой странице выдаёт Пистолет Макарова.

IDE, 2к21 на дворе

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

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

Эмм…

Ждешь пока тебе банковское приложение с потерей точности посчитает? %)

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

Мне показалось что под символом ты имеешь виду char32_t, это так? Один смайлик может состоять из нескольких «символов», но проблема в том что под символом люди могут понимать разное...

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

Я за Unicode. Вот строки в питоне не работают с нормальными символами, которые мы видим в браузере например.

Но если что-то какую-то конкретную фичу в enum имеете в виду, то готов обсуждать.

Да.

enum Message {
    Quit,
    Move { x: i32, y: i32 },
    Write(String),
    ChangeColor(i32, i32, i32),
};

Что такое ПМ?

Пакетный менеджер.

А плагины и сама IDE будут сильно позже.

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

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

Ждешь пока тебе банковское приложение с потерей точности посчитает? %)

Ты просто написал вначале «Нормальные числа с точкой.», я подумал, что ты имеешь в виду числа с плавающей запятой, а банковские приложения работают с числами с фиксированной запятой. И там таки тоже есть потеря точности. Например, надо уплатить 13% налог с дохода, а доход - 1 копейка. То есть надо уплатить 0,13 копейки. В какую сторону округлять будем? В большую или в меньшую? В любом случае потеря точности.

Мне показалось что под символом ты имеешь виду char32_t, это так?

В документации указана кодировка UTF-8. То есть это будет char8_t, и один символ юникод в такой кодировке может быть в зависимости от его номера занимать место от 1 до 4 байт.

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

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

enum

Можно подумать над таким вариантом.

Пакетный менеджер.

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

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

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

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

В любом случае потеря точности.

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

В документации указана кодировка UTF-8

Я не про кодировку.

То есть это будет char8_t, и один символ юникод в такой кодировке может быть в зависимости от его номера занимать место от 1 до 4 байт.

А может и больше байт.

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

Он юникодный, char в его char[] строках это char32_t, а так как один «видимый символ» может занимать больше char32_t, то питон «неправильно» работает со строками, например стандартный переворот массива ломает строку из сложных символов.

Да, возможно, правда ни разу не видел автокомплит вместе с компилятором.

Тебе просто не надо будет делать двойную работу, а без IDE жизнь плоха.

MOPKOBKA ()
Последнее исправление: MOPKOBKA (всего исправлений: 1)
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)