Разработчик создал язык Ć для написания кода на С, Python и JavaScript одновременно

19.10.2021      44209

Разработчик из Польши Петр Фусик представил язык программирования Ć. Главная особенность технологии – возможность транслировать написанный код на С, С++, Java, Python и другие языки.

Зачем нужен новый инструмент

Детали своего проекта по созданию Фусик опубликовал на GitHub. Программист использует в своей технологии транслятор cito, благодаря которому написанный на Ć код можно читать на C, C++, C#, Java, JavaScript, Python, Swift и OpenCL. По словам разработчика, его проект решает актуальную проблему – позволяет писать исходники, которые можно комфортно использовать на разных языках одновременно.

В качестве варианта использования Ć Фусик приводит пример с изобретением нового формата сжатия. Если реализовать его на новой технологии от польского разработчика, то через транслятор cito можно сгенерировать код, который смогут использовать программисты на C #, Java, Python и других языках.

Петр Фусик работает над созданием Ć как минимум с 2013 года, когда он впервые опубликовал на YouTube раннюю презентацию технологии. Почему для языка выбрано такое название и как оно читается, неизвестно. Апостроф над буквой С называется «акут», поэтому теоретически новый инструмент разработки может получить название «Си акут». Также буква Ć есть в польском алфавите и читается она примерно как русская «Ч».

Особенности нового языка

Автор проекта утверждает, что синтаксис Ć похож на C#. Для него вполне подходит стандартная подсветка синтаксиса C#, однако Фусик уверен, что технологию нельзя назвать ни клоном языка от Microsoft, ни его подмножеством. Ключевые различия, по словам разработчика, продиктованы необходимостью полностью автоматической трансляции кода на Ć в эффективный код C и JavaScript. Новый язык является объектно-ориентированным – большинство целевых технологий, с которыми он взаимодействует, тоже относятся к методологии ООП.

 

Пример кода на Ć

 

Еще одна особенность Ć – сведение к минимуму зависимостей от библиотек среды выполнения. К примеру, если программист выводит код для использования в приложениях на С, то он получит автономную пару файлов .c/.h с удобочитаемым кодом С99. Аналогичным образом трансляция работает и для остальных поддерживаемых языков, однако есть несколько исключений. Например, если программист при написании кода на Ć, использует коллекции List, Dictionary или SortedDictionary, то для вывода кода на C ему придется использовать библиотеку Glib.


Автор:
Аналитик


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Hatson 494 19.10.21 13:30 Сейчас в теме
Ждем православный язык "Ъ" и транслятор языка 1С в "Ч", а затем и в перечисленные языки ))
2. Darklight 27 20.10.21 10:40 Сейчас в теме
Прочитал и подумал - зачем?
Ведь в программировании исходники играют далеко не самую важную роль. Куда важнее библиотеки платформы, и конечный код, непосредственно исполняемый платформой (правда у Python или JavaScript его - увы нет - там да - нужна трансляция - это проблема данных языков, хотя для JavaScript можно транслировать "asm.js " или в "WASM", а ещё есть байткод V8; на самом деле и Python тоже есть байткод)
Для решения кросс-платформенных задач есть LLVM и промежуточный язык IR - тут нужно отдельно писать бакэнд/фронтэнд компиляторы.
Увы LLVM не очень хорошо подходит для платформ с управляемой памятью, и для стековых виртуальных машин.
Куда правильнее было - развивать идею LLVM - сделать усовершенствованный IR - более высокоуровневый (как MS IL) - который далле уже можно было бы эффективно декомпилировать в байткод целевых платформ (а не в исходники).

Самое интересное - это как решается вопрос управление памятью. Ведь все названные ЯП (кроме С++) являются языками с менеджером памяти, а JavaScript и Python - ещё и ЯП с динамической типизацией.
Это всё, конечно можно обобщить - но встаёт тогда третий важный вопрос - что будет в итоге с производительностью.
С++ используют - когда нужна высокая производительность - наврядли результирующий код будет ей удовлетворять.
Боюсь - проблем будут и в других результирующих исходниках. А JavaScript и Python и так не обладают высокой производительностью

И последнее. Что-то я в исходном синтаксисе (приведённого примера) ничего особенного не замети - типичный C# - да, возможно где-то есть отличия: что-то просто недореализовано (синтаксис C# очень насыщенный фишками), возможно где-то что-то добавлено (для поддержки совместимости с разными ЯП) - но я не стал бы говорить, что Ć - это новый ЯП, скорее просто диалект C#.
Не буду говорить, что это плохо. C# - мощный язык. Хотя мне он не совсем нравится - как раз из-за наследия С++ - которое полностью перешло и в Ć.

Уж лучше бы Kotlin развивали. У него уже есть и компиляция в Java и в Native машинный-код, и трансляция в JavaScript. Не так уж сложно туда же добавить трансляцию в Python и в .NET IL.

Но это всё-равно не сделает код кросс-платформенным (по среде исполнения) - всё-равно всё упрётся в разные библиотеки - а раз так - какой в этом смысл?

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

Вот как я пропагандирую делать ЯП императивно-декларативным - чтобы на нём описывать лишь обобщённые алгоритмы (не вникая в детали реализации инструкций и функций той или иной платформы и её библиотек) - а уже умный AI -компилятор должен понять что реально нужно сделать - и сгенерировать соответствующий код под целевую платформу обладая знаниями о доступных библиотеках на этой целевой платформе! В том числе проведя его глубокую оптимизацию и , если надо, распараллеливание, и клиент-серверную адаптацию.
Это не простая задача - совмещающая в себе и машинное обучение и алгоритмы оптимизации и параллельного исполнения. Это достойная задача для развития ЯП второй половины XXI века
3. ksnik 565 21.10.21 12:03 Сейчас в теме
Есть еще Haxe — высокоуровневый кросс-платформенный язык программирования с открытым исходным кодом, а также компилятор, с помощью которого можно создавать приложения и генерировать исходный код на разных языках программирования для разных платформ.
Оставьте свое сообщение

См. также

Visa разработала способ превратить почти любое устройство в POS-терминал

Новость ИТ-новость Новости компаний Онлайн-торговля

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

21.01.2022    9517    VKuser24342747    0       

Microsoft разрешит сторонние платежные системы в своем магазине

Новость Windows ИТ-новость Новости компаний Онлайн-торговля

Microsoft готовит перезапуск собственного магазина приложений Microsoft Store. Релиз будет представлен вместе со следующим крупным обновлением Windows и сделает требования для программ в маркетплейсе мягче.

26.04.2021    20012    VKuser24342747    0       

Платежная система Visa разрешит платежи в криптовалюте

Новость Безопасность Блокчейн ИТ-новость Онлайн-торговля

Крупнейшие поставщики платежных услуг для банковских карт выходят на криптовалютный рынок. Visa вслед за Mastercard сообщила, что начнет поддерживать транзакции в цифровых токенах.

02.04.2021    18849    VKuser24342747    1       

Facebook купила сервис для создания чат-ботов Kustomer

Новость ИТ-новость Мессенджеры Новости компаний Онлайн-торговля

30 ноября Facebook заявил о покупке стартапа Kustomer, который специализируется на платформах обслуживания клиентов и чат-ботах. Таким образом, зарегистрированные на Facebook компании, получат новые инструменты для ведения бизнеса с помощью платформы

09.12.2020    24236    SKravchenko    0       

В следующем году Google откажется от платных расширений для браузера Chrome

Новость Google Интернет ИТ-новость Новости компаний Онлайн-торговля

Полгода назад Google приостановил добавление новых платных расширений в интернет-магазин Chrome после выявленных фактов мошенничества. А на днях представители компании заявили, что платежная система Chrome Web Store устарела и будет закрыта.

29.09.2020    17091    SKravchenko    0       

В России стали тестировать платежи через СПБ на смартфонах без NFC

Новость Банки ИТ-новость Онлайн-торговля

Российские банки стали внедрять пилотные проекты, которые расширят возможности использования Системы быстрых платежей (СБП). Технология превращает в платежный терминал любой смартфон, в том числе старые модели без NFC.

27.08.2020    13323    user1015646    0       

Не выходя из приложения: Instagram тестирует новый формат покупок

Новость Онлайн-торговля Соцсети

Разработчики Instagram тестируют новую функцию Checkout. Она позволит совершать покупки непосредственно в приложении – без перехода на сайт магазина.

27.03.2019    15098    user1015646    3       

В сетях крупных ритейлеров нашли подделки новейших процессоров

Новость Онлайн-торговля

В Германии разгорелся скандал из-за поддельных процессоров Intel. Дорогие и бесполезные устройства покупатели приобретали у крупных ритейлеров. В последнем случае продавцом выступил Amazon.

20.03.2019    30825    user971588    4       

РЖД запустит агрегатор для продажи билетов – и на поезда, и на автобусы

Новость Онлайн-торговля

ОАО РЖД создаст универсальный сервис – билетный агрегатор. На платформе будут представлены не только билеты на поезд, но и на автобус.

14.03.2019    26576    user1015646    0       

В Alibaba научили речевой алгоритм изолировать голоса в шумной толпе

Новость Искусственный интеллект Онлайн-торговля Робототехника

Китайский конгломерат Alibaba все чаще обращает свое внимание на искусственный интеллект. На конференции NeurIPS 2018 в Монреале они представили презентацию о своих достижениях в прикладном использовании ИИ.

07.12.2018    26792    SKravchenko    0       

Резидент фонда «Сколково» запустит российский аналог Google Pay

Новость Банки Мобильные приложения Онлайн-торговля

Разработчики обещают пользователям, что сервис бесконтактной оплаты «Кошелек Pay» получит более расширенный функционал по сравнению с зарубежными приложениями.

25.10.2018    29201    Sherlock2850    9