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

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

31 комментарий

avatar
keyboard_arrow_up
keyboard_arrow_down
Вперед! Пора!
Кто хоть на комментарий усомнится в цене идеи — того сразу баним.
avatar
keyboard_arrow_up
keyboard_arrow_down
  • J-sama
  • Домашняя лоль с мятным хвостом
ну и какая же дискуссия без оппозиции?
avatar
keyboard_arrow_up
keyboard_arrow_down
Оппозиция должна появляться в проектировании, а не в отрицании всего проекта.
avatar
keyboard_arrow_up
keyboard_arrow_down
  • J-sama
  • Домашняя лоль с мятным хвостом
ладно. но где же конкретика?
avatar
keyboard_arrow_up
keyboard_arrow_down
Вы же древние. Вот и представьте, что Белл Лабс были, на самом деле, лабораторией в МГУ, а Ритчи и Керниган — это какие-нибудь Иванов Егоргий и Молотов Андрей.
avatar
keyboard_arrow_up
keyboard_arrow_down
  • J-sama
  • Домашняя лоль с мятным хвостом
неть. конкретика реализации где
avatar
keyboard_arrow_up
keyboard_arrow_down
Что именно ты хочешь?
avatar
keyboard_arrow_up
keyboard_arrow_down
  • J-sama
  • Домашняя лоль с мятным хвостом
ты предлагаешщь обсуждать ВОТ, но не предлагаешь никаких деталей про него
avatar
keyboard_arrow_up
keyboard_arrow_down
Потому что его еще нет.
avatar
keyboard_arrow_up
keyboard_arrow_down
  • J-sama
  • Домашняя лоль с мятным хвостом
а что обсуждать тогда D:
avatar
keyboard_arrow_up
keyboard_arrow_down
Мда…
avatar
keyboard_arrow_up
keyboard_arrow_down
tl;dr
avatar
keyboard_arrow_up
keyboard_arrow_down
Я абсолютно полностью против всего проекта.
Есть хороший фундамент — C++, нужно строить на нём, а не что-то новое пилить. Тем более на русском.
avatar
keyboard_arrow_up
keyboard_arrow_down
Поэтому мы будем пилить на C++ компилятор.
avatar
keyboard_arrow_up
keyboard_arrow_down
Господи, спаси наши души…
avatar
keyboard_arrow_up
keyboard_arrow_down
Ну что такое? Интересно же.
avatar
keyboard_arrow_up
keyboard_arrow_down
Не-а, я ещё не настолько сошёл с ума!
avatar
keyboard_arrow_up
keyboard_arrow_down
Ну, я не тороплю.
avatar
keyboard_arrow_up
keyboard_arrow_down
~безопасный
тут что-то на луа <_<
avatar
keyboard_arrow_up
keyboard_arrow_down
Да.
avatar
keyboard_arrow_up
keyboard_arrow_down
Используй хидер с православными дефайнами. Препроцессор должен делать всё сложнее.
avatar
keyboard_arrow_up
keyboard_arrow_down
Нет никаких дефайнов и хидеров. Да и давайте более современно мыслить…
avatar
keyboard_arrow_up
keyboard_arrow_down
Нуу… Ори бы быстро что-нибудь придумал.
avatar
keyboard_arrow_up
keyboard_arrow_down
  • Ori
  • Бабушка-айтишник
Не быстро.
==
(= комментарии

   скобка-равно потому, что пытаюсь использовать те символы,
   которые на русской раскладке всегда работают.
   Вообще, недостаток скобок это огромная проблема. Либо этим русским
   программистам следует использовать специальную раскладку, где под альтом
   будут всякие скобки, либо пусть комбинации обычной скобки и еще чего-то 
   трактуются (и даже автозаменяются) как другие скобки.
   Ну типа [] == (..), {} == (**), <> == (::).
   Давайте пусть пока так будет...
=)

задача: квадратные_уравнения,   (= имя процедуры/программы =)
    Решает квадратное уравнение с действительными коэффициентами
    на множестве комплексных чисел.
    
    (= после имени необязательная запятая, после которой можно написать хелп
    по процедуре/программе и он будет где-то там отображаться. Как особый
    комментарий в питоне. Текст завершается с началом следующей секции, например
    "дано" =)
использует:
    стКомплексные               (= обращение к стандартному модулю =)
дано:                           (= определяет входные данные процедуры =)
    вещ а, б, ц                 (= "вещественные числа а, б и ц", это нормальный
                                   порядок слов, в принципе.  =)
ответ:                          (= не "найти", потому что это ответ программы на
                                   входные данные =)
    список корни                (= корней может быть не только разное
                                   количество, но и они могут быть разных типов
                                   (комплексные), так что возврат разнородных
                                   результатов можно сделать как в питоне,
                                   отдавая такой список ссылок на что угодно =)
начало:                         (= не подкачало =)
    вещ д                       (= локальные переменные можно объявлять по ходу
                                   дела, типа приватно, наружу их не видно =)
    д = б**2 - 4*а*ц            (= не карет, потому что его нет... =)
    случаи:                     (= case =)
        д сб 0:                 (= сб - "строго больше" или ":)", которая
                                   превратится в ">"... =)
            вещ корни(.0.) = (-б + ккор(д)) / (2*а)
            вещ корни(.1.) = (-б - ккор(д)) / (2*а)
            (= ну вот так, задаём типы элементам списка при их создании.. =)
        д == 0:
            вещ корни(.0.) = -б / (2*а)
        д (: 0:
            комплекс корни(.0.) = (-б + _и * ккор(абс(д))) / (2*а)
            комплекс корни(.1.) = (-б - _и * ккор(абс(д))) / (2*а)
            (= _и - константа мнимой единицы, объявленная в модуле комплексных
            чисел. Какой-то магией этот модуль превращает все остальные операции
            в операции над комплексными числами когда нужно, "комплекс" - тип
            из модуля =)
    всё
конец.                          (= делу венец =)

(= и если это программа, то она даже автоматически запросит с клавиатуры то,
что "дано", и выведет как-нибудь стандартно то, что "ответ". =)

avatar
keyboard_arrow_up
keyboard_arrow_down
  • Ori
  • Бабушка-айтишник
А вообще вот Рапира, можно из нее чего-то почерпнуть…
avatar
keyboard_arrow_up
keyboard_arrow_down
Ну и вот. Ори гений.
Действительно, латинская раскладка узурпировала многие нужные символы… Это проблема.
Древние языки использовали всякие триграфы… Но современные версии давно отказались от них. Они довольно уродливые и их сложно читать. C++ уничтожил триграфы в C++17.
задача: квадратные_уравнения,   (= имя процедуры/программы =)

Никогда не понимала смысл этого в древних языках. В Паскале было «program ...;», во всяких Коболах как-то по-своему, но зачем эта конструкция нужна?
Двоеточия — это очень мило, я считаю. Даже в Пайтоне это, наверное, лучшее, что там есть.
Операции без разделителей на конце — это, конечно, хорошо, но я беспокоюсь за однозначность. Я бы использовала "," и "." в конце строк, если ";" недоступны. А еще это интересный способ делать блоки кода…
«сб» — это такой себе способ… Будто из баша.
И, если это вся программа или модуль, то ладно. Но если функции так будут выглядеть, это довольно длинно…
avatar
keyboard_arrow_up
keyboard_arrow_down
  • Ori
  • Бабушка-айтишник
Во всяких паскалях-коболах она скорее всего задавала имя файла или что у них там было вместо файлов. Какое-то имя. Которое потом из какой-то среды вызывалось. У нас тут это одновременно синтаксис процедуры/функции, поэтому имя должно быть, как и входные-выходные данные.

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

Разделитель энтер типа. А если хочется два оператора в одну строчку, то да, можно какой-нибудь разделитель.; на shift+4 есть. В общем, как в бейсике. Но в бейсике двоеточие было, это как-то непривычно.

из баша
Угу, у меня тут в cmd и powershell подобные штуки есть ) Ну это такое, «необходимое зло». Типа если мы не придумаем ничего с символами. Нужна все-таки раскладка, из которой будут доступны все скобочки, амперсанды, собаки и прочее такое. Еще я подумал, вот мнимая единица, допустим. И остальные физические и математические… буквы. Мы привыкли, что они латинские, они должны быть латинскими в коде. Но каждый раз тыкать раскладку туда-сюда это беда. Поэтому я подумал, что можно приравнять латинские буквы к русским. Типа «и» и «i» одно и то же. Может быть приравнять через какой-то префикс, я тут поставил "_и" и среда могла бы превратить это в i. Но тогда к чему приравнивать w или q? ) А писать _дв и _ку это даже дольше, чем раскладку дергать. М, а может через тот альт вводить латинские буквы как-то…

довольно длинно
Да, такое… Я хотел чтобы она выглядела как четкий официальный документ. Самодокументирование такое ) Можно сделать какой-то сокращенный стиль для функций.
вещ f(вещ x) = cos(альфа);
цел сумма(список сп) =
    пока (и = 0, и < длина(сп), и = и + 1):
        сумма = сумма + сп(и);

Раз "=" у нас присвоение, то получается что мы функции присваиваем какие-то действия. И похоже на математику. И привычнее с точки зрения остальных языков. Может что-то из функциональных языков взять, там у них как-то красиво…
fac :: Integer -> Integer
 fac 0 = 1
 fac n | n > 0 = n * fac (n - 1)
Ну да, хаскель совсем по-математически пишет. И работу с типами он вынес в отдельную строку как раз чтобы можно было писать f(x) = чему-то, не отвлекаясь на тип f и тип x.
avatar
keyboard_arrow_up
keyboard_arrow_down
Разделитель энтер типа. А если хочется два оператора в одну строчку, то да, можно какой-нибудь разделитель.; на shift+4 есть.
А если хочется одну строку разделить на две?
avatar
keyboard_arrow_up
keyboard_arrow_down
  • Ori
  • Бабушка-айтишник
Обычно в таких языках чем-то экранируют энтер. В питоне \, в powershell ` перед концом строки.
avatar
keyboard_arrow_up
keyboard_arrow_down
Чот странное…
avatar
keyboard_arrow_up
keyboard_arrow_down
  • Ori
  • Бабушка-айтишник
Get-ChildItem -Recurse `
  -Filter *.jpg `
  | Select LastWriteTime

А, в питоне менее однозначно. Можно продолжать строку внутри скобок, скобок и скобок (parentheses, brackets and braces).
a = some_function(
    '1' + '2' + '3' - '4')

А еще можно явно заэкранить энтер:
a = '1'   \
    + '2' \
    + '3' \
    - '4'
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.