Схожі на голосовий помічник та україномовні — айтівці фантазують про власні мови програмування

Якби ви створювали власну мову програмування з будь-якими характеристиками в межах нашої реальності, то якою б вона була? Ми поставили це питання читачам та отримали кілька десятків відповідей. Нам запропонували український синтаксис, суб’єктноорієнтовану парадигму та мову, схожу на голосовий помічник.

Тож якби айтівці могли створити будь-яку мову програмування...

«Це була б мультипарадигмальна мова (обʼєктноорієнтована і функційна); мала б garbage collector та можливість для ручного memory management і low-level операцій. Також вона мала б повноцінну багатопотоковість із green/lightweight threads, continuations/coroutines тощо. Мова і платформа — набір специфікацій, які дозволяють сторонні імплементації» (Java Team Lead).

«Це була б мова із вбудованим ML у компілятор на основі есперанто. Ти передаєш текст, він компілює його в базову версію коду. Якщо треба підкоригувати, то розробник коригує і передає це компілятору» (Data Engineer).

«Головними фішками моєї інтерпретованої мови програмування були б синтаксис українською та стандартна бібліотека. Так, кодити нею було б трохи незручно, але весело :)

Структурні елементи залишив би такими ж, як у більшості мов. Інтерпретатор мав би функціонал зберігання стека викликів, як у Python, щоб у разі помилки, яку ніде не обробили, дізнатись, де саме вона виникла, і розуміти порядок викликів функцій.

Також тут були б два режими виконання: запуск файла-пакета та інтерактивний режим.

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

1. Пакети — файли, які можна підключати, очевидно, в інші пакети. Виконуваний код можна писати в будь-якому місці пакета.

2. Галуженні алгоритми — оператор «„якщо“».

Приклад:

 
якщо (істина)

 // код

 інакше якщо (1 == ""текст"")

 // код

 інакше

 // код

 кінець;

3. Функції — можна визначати в скоупі пакета, класу, а також в інших функціях.

Приклад:

  функція факторіал(число: ціле): ціле

 якщо (число == 0)

 повернути 1;

 кінець;

 повернути число * факторіал(число - 1);

 кінець;

6. Лямбда-функції — змінні, що містять функцію та мають свій спосіб визначення.

Приклад:

 ф = лямбда ()

 друкр(""це лямбда"");

 кінець;

4. Класи — обʼєкти, які можуть наслідувати інші обʼєкти, де базовим є клас «об_єкт»; клас може містити статичні члени та члени обʼєкта класу. До статичних належать змінні та лямбда-функції, визначені прямо в скоупі класу, а до членів обʼєкта — змінні, але визначені в конструкторі, та функції й оператори, визначені в скоупі класу. Наслідуючи клас, можна перевизначати оператори, змінні, а також функції, включно зі статичними членами.

Приклад:

 клас Кіт : Тварина

оператор __констуктор__(я: Кіт, ім_я: рядок)

я._ім_я = ім_я;

кінець;

 функція ім_я(я: Кіт): рядок

 повернути я.ім_я;

 кінець;

 кінець;

5. Псевдоніми та розширення. Псевдоніми — переназивання типів, як у Go чи С++ (typedef). Розширення потрібні для переназваних типів, щоб додати до них нові методи, оператори, змінні та статичні члени.

Приклад:

 псевдонім Стан для ціле;

 розширення Стан

 оператор __рядок__(я: Стан): рядок

 якщо (я == 1)

 повернути ""Стан 1"";

 інкаше якщо (я == 2)

 повернути ""Стан 2"";

 кінець;

 повернути ""Стан 3"";

 кінець;

 оператор &(я: Стан, інший: Стан)

 повернути я & інший;

 кінець;

 кінець;

5. Обробка помилок. Базовим був би клас «„Помилка“», від якого наслідувати інші види помилок.

У прикладі генерується помилка ділення на нуль та перехоплюється за допомогою відповідної конструкції:

 блок

 1 / 0.0;

 піймати (п: ДіленняНаНуль)

 друкр(п);

 піймати (п: Помилка)

 друкр(п);

 кінець;
«Python Developer.

«Ця мова була б компільованою, максимально швидкою. А ще містила б надійний код прямо з коробки — компілятор не давав би вам написати поганий або небезпечний код» (JavaScript, TypeScript та React Developer).

«Це була б компільована, багатопотокова, суворо типізована та імперативна мова програмування» (Senior PHP Developer).

«NormalJS — та сама JavaScript, але суворо типізована й об’єктноорієнтована» (Junior Front-end Developer).

«Суб’єктноорієнтована парадигма, коли патерни людської психіки стають частиною структури та алгоритмів програми. Технічні характеристики: Alpha-Omega, Aequilibrium, Engine V8, просторово-фононна форма логіки інтерфейсу, преонний генератор випадкових властивостей» (Senior Socionics Developer).

«Я б поєднав Java із простотою та оригінальністю Go, тільки без каналів, або ж Rust. Крім того, додав би деякі конструкції Python, але боюся отримати нову Scala :)» (CTO).

«Як на мене, зараз не вистачає простої та легкої мови загального призначення, яка б підходила для навчання і входження в програмування. Нинішні мови переобтяжені деталями, важкими для розуміння початківцями.

Якщо людина починає свій шлях у програмуванні з JavaScript, їй доведеться розібратись з HTML, порядком завантаження сторінки та іншими „проблемами“ вебу ще до написання першого коду. А потім вивчати неочевидне: приведення типів, захоплення контексту та інші важкі для розуміння речі.

З іншими мовами схожа ситуація. Наприклад, Java вимагає писати класи й методи для того, щоб зробити найпростішу програму; далі доведеться вивчати наслідування та інші речі, без яких можна писати більшість алгоритмів, але знання мови без них буде неповним.

Для дітей є Scratch, але для старших класів школи та непрофільних вишів він не підходить, оскільки важливо вивчити алгоритми та деякі початкові концепції.

Хороша мова для початківців повинна інтерпретуватись у браузері, щоб її можна було запускати звідусіль. Бажано, щоб для написання першої програми не потрібно було вивчати додаткових концепцій, а запускатися вона могла однією командою.

У цій мові має бути змога створювати функції та об’єкти, мати певні вбудовані колекції. Але без важких для розуміння концепцій, бінарних операторів, класів, рефлексій, захоплення контексту, необов’язкових операторів на кшталт "switch" чи "try".

Важливою частиною концепції такої мови є повідомлення про помилки. Частина сучасних мов мають незрозумілі сповіщення, які не вказують, що саме пішло не так. Натомість деякі розробники змогли скласти повідомлення, що описують абсолютно всі аспекти тієї чи іншої проблеми. Також важливими є вбудовані засоби форматування і лінтери, щоб писати погано форматований код було неможливо» (Senior Software Developer).

«Моя мова програмування була б дуже простою і „голою“, але з можливістю розширення та ускладнення через плагіни. В результаті ми мали б в одному флаконі PHP, Golang і Rust» (Priest of Voodoo Tribe).

«Моя мова базувалася б на принципах структурно-подійного програмування. Мала б слабку типізацію, була б модульною та універсальною для FE та BE, fail safe та fault tolerant» (Senior ФОП).

«Це була б мова, схожа на голосовий помічник, щоби голосом або текстом давати команди машині, яка б їх виконувала. Для програмування озвучувався або писався б певний алгоритм, який би потім виконувався. Також у цієї мови був би набір необхідних інструментів для кожної сфери її застосування, наприклад, вебфреймворк, взаємодія з базами даних, обчислення, навчання тощо. Тобто програміст будує архітектуру і систему алгоритмів, передає це машині, і вона вже реалізовує. Звісно, до алгоритмів будуть застосовуватися певні вимоги та стандарти» (Junior Python Developer).

"Кілька років тому я захопився іграми студії Zachtronics та захотів зробити свою в такому ж стилі. Zachtronics знаменита головоломками, часто на тему програмування. Тому мова, яку я тоді вигадав, не має стосунку до нормального програмування, її ціль — бути складною та цікавою у використанні, а геймплей гри полягав би у розв’язанні різних задач цією мовою. Іншими словами, це — есоланг.

При створенні цієї мови мене понад усе цікавила ідея самомодифікації. Тому синтаксис має бути надзвичайно простий, тоді як поведінка — комплексна.

Найпростіша складова мови — це команда, така як FIND чи REPLACE. Команди мають один аргумент у форматі тексту та відділені від інших команд та аргументів символом |.

Тож найпростіший рядок програми може мати такий вигляд:

""|FIND|XXX|REPLACE|YYY|""

Але програми не відокремлені від тексту, який вони модифікують — натомість написані усередині. Аргументи можуть бути будь-яким текстом, тому команди можуть вставляти, редагувати та видаляти інші команди.

Всередині кожного рівня гравцю дають текст, задачу, що потрібно зробити з цим текстом, та окреме місце для написання коду. Коли гравець написав код та хоче дебажити чи виконати його, він натискає кнопку play. І написаний ним текст — команди та аргументи — прикріплюються до початку тексту, який треба редагувати. Для цих команд не важливо, чи це звичайний текст, чи в ньому записані інші команди — весь відредагований документ є потенційним кодом.

То як же це все працює? При натисканні play гра ітерує від початку до кінця документа багато разів. Коли гра знаходить команду, вона її виконує. Це модифікує текст, розташований після команди, і так далі — до кінця документа. Потім починає з початку документа, доки на одній з ітерацій жодна з команд не спрацює. Наприклад, візьмемо таку програму:

|FIND|XXX|REPLACE|YYY|

|FIND|ZZZ|REPLACE|XXX| 

Документ містить субстрінг ZZZ. На початку текст програми вставляється перед документом, і починаються ітерації. Перша команда не знаходить XXX, тому не виконується. Далі друга команда знаходить ZZZ та замінює на XXX.

Більше команд у документі не залишилось, тому ця ітерація закінчується та починається наступна. Тут уже перша команда знаходить XXX та замінює на YYY. Друга команда не знаходить нічого, і ітерація закінчилась. На наступній ітерації жодна команда не знайшла нічого, нічого не змінила, тому програма вважається виконаною.

При створенні цієї мови в мене була надія, що я зможу придумати багато задач, які було б цікаво розвʼязати. На жаль, або фантазії забракло, або сама мова недостатньо експресивна.

До того ж кожний рівень мав би мати вигляд: перетвори текст X на текст Y. І на мою думку, в таку гру мало хто б грав — у тій самій Zachtronics усі ігри мали красиві пояснення — мовляв, ось ти ремонтуєш таємничий комп’ютер, і що більше рівнів пройдеш, то більше сюжету дізнаєшся.

Для кожного рівня мені треба було б згенерувати багато тексту, щоб ці задачки не були тривіальними. Втім, певно, всі ці труднощі можливо розвʼязати.

Текст можна згенерувати за допомогою GPT, щодо літературної теми гри в мене з’явилися ідеї, а для експресивності саму мову можна допрацювати — наприклад, в мене є ідея для conditional команди.

Але до цього всього в мене не доходять руки. Я сподіваюсь, що когось тут ці ідеї надихнуть на свою самомодифіковану мову для редагування тексту" (Hobbyist GameDev).

«Мова програмування = людська мова. В ідеалі, це була б найвідоміша у світі мова програмування, і синтаксис там був би українською. Бо англійська вже всім набридла :)

Щоб компілятор був зі штучним інтелектом, але з відмінним захистом і безпекою від самопрограмування, та можливістю переписати програму під себе. Щоб компілятор розумів звичайні слова, без тупих алгоритмів на кшталт ""if-else-for"" і складних рекурсивних функцій й наслідувань з параметрами тощо.

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

Винайти ПЗ, розпланувати до деталей систему, створити концепцію та ідею програми і так складно. Так ще й потрібно враховувати мову програмування, її можливості, бо як же з user story або use case перевести в ""(function=print&name>coutPublic};"" (це гіперболічне перебільшення). Хто взагалі додумався до такого?

Замість того, щоб придумати одразу „людську“ мову, яку б розумів комп’ютер, ми повинні вчити та розуміти мову комп’ютера. То хто ж кого створив і хто кому служить?

Досить вже мучити програмістів цими складними незрозумілими мовами! Треба спрощувати собі життя, а не навпаки» (Middle Business Analyst).

«Ідеальна мова, яку ніколи не створять, — така, що покриє не лише бізнес-логіку, а й усе, що стосується результивної системи, декларативного опису модулів чи сервісів з інтеграціями, логіки всередині них, їхнього деплою і стану роботи, і все це — однією мовою на деві/стейджі/продах. Також вона повинна мати можливість транскрипції на будь-яку іншу мову під капотом. І ще IDE одразу під цю мову, щоб під час розробки можна було не виходити за межі цієї IDE взагалі» (Lead Back-end Engineer).

«Ця мова має повністю замінити та витіснити «1С» з української землі. Назвемо її, наприклад, «9Ж» (Senior Software .NET Engineer).

«Ідеальна мова програмування — максимально автоматизована. Команди даються живою, розмовною мовою, а AI інтерпретує його у цілісний код потрібного рівня та пропонує варіанти написання тих чи інших шматочків коду залежно від задач програміста. При цьому для Front-end можна розробити автоматизовану систему інтерпретації макета дизайнера у код, що сильно скоротить час на розробку вебзастосунків та сайтів» (Junior Front-end Developer).

Все про українське ІТ в телеграмі — підписуйтеся на канал DOU

👍ПодобаєтьсяСподобалось4
До обраногоВ обраному0
LinkedIn



31 коментар

Підписатись на коментаріВідписатись від коментарів Коментарі можуть залишати тільки користувачі з підтвердженими акаунтами.

Не бачу жодних проблем для початківців обрати першою мовою Java. На старті вона не складна, відразу привчає до ооп, розвиватися далі можна роками, поступово ускладнюючи. І на старті нічого, крім джава, для вивчення не потрібно

«Привчає до ООП» — наче це щось дуже хороше :)

Рівень входу в АйТі має бути високий.
Як мінімум, аби програми не працювали за логікою, як у русні. Щоб такі як «вєдмєдєв» туди не могли попасти ... )

1. Принципово розділити домени і не намагатись створити єдину мову для всіх. Наприклад, домен системного програмування нижнього рівня (як C), верхнього (C++, Rust), обидва з MMM. Прикладне з АММ, але ще процедурне (як Java, C#). Функціональне на зразок LISP. Для кожного своя специфіка і загального підходу не буде. Можливо, більш спеціальні DSLʼі.
2. До кожного — макропроцессор серйозного типу (зразки в Common LISP або Rust), з можливістю обробки і трансформації AST і врахування контексту. Те що в C/C++ це сміх і не підходить ні для чого зараз. (Частина того, що зараз робиться через ліве заднє вухо в C++ з темплетами, повинна іти у такі макри.)
3. Грамотна розробка граматики, щоб не було усяких most vexing parse і проблем з тим, що таке < в C++, C#, Rust, etc. Не економити на ключових словах. (Підходи з мінімізацією кількости символів в програмах це зараз безглузде дитинство, якого б віку не був автор.) Розробка з врахуванням потреб IDE.
4. Принципове розділення просторів ідентифікаторів, ключових слів і грейдерів (attributes в C#, C++, annotations в Java...) з можливістю форсованого розуміння як конкретного класу. Максимальне використання просторів ключових слів для білтінів.
5. Інші принципи гарного дизайну синтаксису: наприклад, явне закриття кожного блоку — а буде це if(cond){body} з обовʼязковими {} або if cond then body end з обовʼязковим end, менш важливіше.
6. Контекстно-керовані оптимізації і допущення компіляторів (наприклад, як аліасінг). Оскільки для типової програми 95% коду не потребують помітної оптимізації крім явного виключення зайвих копіювань, дати цим можливість концентруватись на областях, де дійсно потрібна увага програміста. Усякі debug/release повинні максимум коректувати ці контекстні правила, а не бути всеподавляючими.
7. Виправлення найбільш неприємних і неочікуваних місць, як арифметика чи (вже згаданий) аліасінг. Навіть якщо зберігати типовий зараз підхід як int32*int32->int32, то помилка (виняток чи що там буде) по переповненню повинна бути за замовчуванням (а не давати мовчазні допущення як в C/C++/Carbon чи усічення як в Java/Go). Разом з пунктом 6 контекстне керування за допомогою грейдерів.
8. Максимальна допомога компіляції чи JIT, бо прогрес потужностей фактично зупинився. Чим більше явного чи неявного розвʼязку пошуку типів і оптимізація з цього, тим краще.
9. Збереження доступности повного обʼєктного підходу, бо без нього таки неможливо в загальному випадку.
10. Можливість async чи CSP. Бо такий сучасний світ.

Це як основа, далі можна вже смаковщину розводити і R&D робити.

Щодо того що не вистачає легкої мови програмування, так є ж python. Я думаю що він доволі легкий, щоб було по силам освоїти кожному

Плюсую, мені завжди ніяково, коли комусь спадає на думку вибирати JS для цієї ролі...

У тих хто тільки починає програмувати, зазвичай зовсім інші проблеми, починаючи від банального знання клавіатури, навіть. Трейні та джуніори прибігають за речами як-то: «допоможи за коміттити та запушити», «як розгорнути проект в IDE», «як додати сторонню бібліотеку до проекту» тощо. За алгоритмами порадитись приходять з рівня мідл+, вже з багажем мов програмування і технологій за плечами. І тут JS в рази краще підходить, не треба з бубном танцювати з зрізними pip, налаштунками ide тощо. А також + вчаться UI і є миттєвий фідбек від браузера, мультики з літаючими папуги вони заволікають увагу і людині стає цікаво програмувати. А консольні апки на молодь навіюють смуту, усі ці алгоритми жодним чином не цікаві доки вони не стали потрібні щоб щось зробити. Тому JS не такий вже і поганий вибір.

Є conda, з нею ніяких танці ніколи не треба було. А UI робити однаково важко в будьякому середовищі.

та python може і гарна мова програмування, але у неї є значні недоліки як для того що описано в статті. Головна це мабуть вкладеність відступами(вибачте, не знаю як правильно називається). Я впевнений що у людини яка перший раз кодить половину помилок буде через відступів. Чому __init__ починається і закінчується двома підкреслюваннями, і як зробити що б людина про це не забула? Та і взагалі от рандомний код з вікіпедії:
sum(i for i in xrange (1, 100) if i % 2 != 0)
я впевнений що для тих хто не кодить на пітоні це важко розпарсити, а для тих хто не кодив взагалі то це взагалі проблема. Короче якби прибрати всі «модні» фішечки то було б легше вчити.

Тут уместно будет «п***еть не мешки ворочать» ;-)

Щось народ понесло, та якось самих мов програмування нема. Бо це набагато складніше завдання ніж здається, одне з найскладніших в програмній інженерії. Навіть зробити транслятор із існуючої мови програмування, і щоб він працював прийнятно далеко не так просто, це зовсім не формошлепство. А зробити мову щоб вона однаково добре підходила і для людей і для програм трансляторів — мистецтво. Цікаво, що це може знадобитись і у аутсурсінговій роботі, щоб не переробляти руками велику кількість XML-ів де в коментарях була формальна граматика — я якось робив. Такі транслятор називають Domain Specific Language — DSL. Тому теорію трансляції, книгу дракона, усім не погано було би знати — іноді може зекономити багато часу.

Так я не бачів — що ви конкретно робили окрім пари статей з поверхневого обзору автогенерації LL граматики. А то усе статті по темі роботи в ІТ, які власне аудиторії сайту зокрема і з пошуку роботи (по суті головна тема сайту) і подобається. Як я розумію з цього і пішов стеб над аудиторією, яка хоче більше грошей і так щоб чікі-чікі і в продакшн та головою особливо не думати. Думаю тому і нема тем з порівнянням LL та LALR чи рекурсивним спуском, форматами AST, проміжними кодами, ассемблерами, генераторами коду, оптимізаціями тощо.

Ну так порівняйте самі, профіль на фрілансерскому сайті по ціні мідла у MAANG чи : en.wikipedia.org/wiki/Anders_Hejlsberg en.wikipedia.org/wiki/James_Gosling
en.wikipedia.org/wiki/Bjarne_Stroustrup (Щось там в Данії з водою напевно, та і риби багато їдять кажуть для мізків дуже корисно).
Керніган, хоча він і скоріше техрайтер, теж нещодавно світився. Те що вони зробили бачило дуже багато людей (так, тому що воно зроблено для Америки). А тут хочеш 50 тисячь переглядів — пиши «як знайти роботу де краще платять», а не «як зробити роботу, яка буде затребувана в світі через ноу-хау». Ментальність така, народ голодний їсти хоче, не до вищої математики, бабла би де зрубати по більше і втекти подалі.

Ну так слушай, тут вопрос такой: чем заниматься? Я для себя выбрал бизнес

А чим розробка самих мов, чи трансляторів до них — C, C++, C#, Java, TypeScript, Go Lang, Rust чи навіть Kotlin не бізнес ? Там заробляють дай бог кожному. Давно мав справу з JetBrains, наши контори дружили домами, хоча дружба була така — що вони в нас людей з контори по витягували, зокрема колишній мій менеджер проекту за поганялом — Топка став їх головним сейлсом, а тестувальниця Марина — була продукт-менеджером TeamCity, і вже я їй баги присилав :) В нас та сама проблема, точити ніколи — пилити треба. P.S. статті з роботи чудові, вони як твори Дональда Кнутта чи Дожоела Спольскі будуть актуальні завжди, навідміну від скажімо COBOL. «Як не треба наймати программістів» взагалі треба перекласти англійською, тільки замінити «чудова англійська» на «speak foreign language» — з цього може статись світовий хіт.

чим розробка самих мов, чи трансляторів до них — C, C++, C#, Java, TypeScript, Go Lang, Rust чи навіть Kotlin не бізнес ? Там заробляють дай бог кожному

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

«Як не треба наймати программістів» взагалі треба перекласти англійською

Спасибо, сделаю

А чим розробка самих мов, чи трансляторів до них — C, C++, C#, Java, TypeScript, Go Lang, Rust чи навіть Kotlin не бізнес ? Там заробляють дай бог кожному. Давно мав справу з JetBrains

JetBrains заробляє на мовах програмування? Чув що Kotlin існує лише тому, що головний розробник піде з JetBrains якщо компанія не фінансуватиме його улюблений проектик-дитя. Але зовсім не факт що JetBrains щось заробляє на Котліні.

Kotlin-ом вже займається Google по повній. Це мана небесна, після постійних судьбових тяжб і патентного тролінгу з Oracle. Всі туторіали по Android вже перекинули на нього. Як я пам’ятаю з початку то був взагалі мало не PET проект. Писали, що вони були здивовані як з’ясували, що будь яка мова програмування виводиться на ринок як і будь який програмний продукт. Тобто маркетинг має місце, щоб його помітили ті хто роблять інноваційні продукти або шукають альтернативу. Промоут продукта штука насправді доволі проста, тільки вимагає багато роботи — реклама, реклама та ще раз реклама. Тематичні конференції, статті у виданнях, кук буки, пред продажні консультації тощо. Як продукт поганий, не актуальний — буде лише тимчасовий інтерес, та всеодно можна щось заробити та покращити продукт. А бізнес JetBrains — засоби для розробки будь які, вони покривають мало не усе своїм IDE.

До Котліна цілком собі існував Groovy, який також можна було використовувати замість Java — але чомусь Google не зацікавився.

Так чи інакше, заробляють вони не на Kotlin а на Android. І кейс із Ораклом — просто один кейс, який не робить розробку мов програмування профітабл як таку.

Мова програмування це по суті відкрита частина продукту. Програмісти роблять програми за допомогою інструментів, трансляторів — компіляторів, інтерпретаторів чи їх комбінацій віртуальних машин, текстових редакторів, дебагерів, статичних аналізаторів коду, засобів колективної розробки та підтримки проектів як то підтримки репозіторієв і систем контролю версій, CI/CD інструментів, Wiki, Bug Tracking, Agile інструментів що замінюють пробкову дошку тощо. Мова — складова частина присутності на ринку, по суті більше маркетингова, мову не можливо зробити закритою, навідміну від компілятору з неї. Для чого створювати нові мови чи розвивати існуючі з бізнес точки зору ? Усе те саме, що із будь якими інноваційними технологіями — це привід для створення конференцій, публікацій та іньших PR акцій з ціллю реклами, та розкрутки бренду. Тому і помер скажімо COBOL — не витримав конкуренції з новітніми технологіями та ноухау. Apple то Objective C задумає, то Swift — скоро ще щось придумає. Те саме Microsoft, IBM/Red Hat, тощо. JetBrains це теж такий сучасний Borland. Це широкий ринок з високою конкуренцією.

Apple не заробляє на Swift — Apple заробляє на додатках, але щоб їх більше розробляли під macOS/iOS потрібен був апдейт засобів (бо Objective-C це ті ще борошна, терпіти яких вже не було сечі ;-) ).

Це необхідність, але не джерело профіта саме по собі.

Таксисту потрібно заправляти авто, щоб заробляти — але він не заробляє на бензині.

Колись в 90-х ще у нас була невідомо ким написана «Алгоритмічна мова» (точніше її інтерпретатор і типу IDE), з обмеженим набором команд, які можна було навіть не тайпати а обирати з меню.

Дуже прикольна була штука (шкода зараз не можу інтерпретатор знайти), бо дозволяла досить малим дітям вчитись створювати алгоритми, не додаючи зайвих бар’єрів — таких як мовний бар’єр.

Чи ви знаєте хто цією темою цікавиться або роблять щось у ціьому напрямку? Я також вважаю що мовні бар’ери існуюсь і заважають, навіть тим хто знає англійську. Але навчання виглядає тією областю где спроби бачити код українською можуть бути у пригоді.

Не можу ніяк знайти той інтепретатор ще DOS-івський, а щоб хтось робив якісь аналоги я не бачив.

Подумував вже сам зробити щось на JS щоб в браузері бігало, але так руки і не дійшли.

Якщо вирішитесь зробити на JS було би цікаво подивитися, та й внесок можна свій вкласти також.

Я на питання мови програмування українською дивлюся трішки інакше. Я вважаю що спочатку потрібно мати базову бібліотеку на сучасній мові програмування, а потім, якщо це буде цікаво локалізувати саму мову та інструменти. C#,F#,Java,JavaScript наприклад дуже гарні кандидати до адаптаціі накшталт Алгол-68

Але усе це марно, якщо немає зацікавлених викладачів які зможуть дати відгук, чи це допомагає чи ні, розповідати про концепції у програмуванні

P.S. В Україні ще досі ніяк не можуть повиколупувати скрізь ту 1С-ку щоб вже не було — це супер успішний кейс, а ви питаєте «для чого».

Підписатись на коментарі