Coffee++ (Рождение легенды)
Репозиторий транслятора https://github.com/Maxmaxmaximus/coffeepp
Да, такое будет название у нового языка). Ршил я тут написать сахар для С++ а ля кофескрипт, и назвать его coffee++, вот сижу синтаксис придмываю, зацените ка, что думаете? и что думаете на счет идеи в целом? Так же предлагаю тут обсуждать развитие языка и начать с синтаксиса. п.с. coffee++ можно будет транслировать в С++ а С++ в asm.js через транслятор emscripten, а по скольку виртуальная машина emscripten позволяет работать и с файлаими и с тактами и с сокетами прям в браузере, то все это будет уметь и coffee++, да собственно он будет уметь все то что умеет С++. Вот зацените синтаксис классов и обратите внимание как красиво и просто записываются типы переменных и функций. и да, если функция ничего не возвращает писать void не обязательно. так же не обязательно писать модификатор public и все в него засовывать, по умолчанию все публичное. ![]() |
мне кажется у тебя слишком много свободно времени:lol:
|
cyber, совсем нет, завтра дедлайн но я лучше буду голодать чем не заниматься любимым делом. я не раб.
Теперь по поводу идентации: единственный минус, в конце блока иденации не понятно что блок кончился: либо там внизу где то еще что-то есть относящееся к этому блоку, просто пустых строк дофига, либо же это конец блока. я думаю как решить эту проблему. То ест например вот здесь, блок уже кончился, или там внизу еще что-то есть? ![]() То есть приходится либо прокручивать либо думать либо смотреть, а хочется чтобы для глаза зацепка была обычно эта зацепка о конце блока это собсна } в принципе при иденации такой зацепкой может являтья внизу открытие нового блока либо же собсна конец файла, но это не так заметно и очевидно как } ![]() я думаю что подбное все е должно решаться на уровне подсветки синтаксиса, то есть должны рисоваться вот эти линии редактором, чтобы визуально было что код влево сместился и мы вышли из блока, так же мне кажется если линии тянутся высоко вверх то они должны быть как-то подписаны штоле я хуй знат. чтобы ты такой печатаешь а у тебя вверху показывается что ты в блоке [class Cat] [private] ты курсор влево переместил, вышел из блока приват а он тебе [class Cat] ты еще раз влево переместил а он тебе [global] ну или типа того Так же конец блока может тупо подсвечивться полосочкой вбок типа (тут хреного видно) ![]() |
бесит что в С++ вначале идет тип а потом имя, человек интутитвно проговаривает вначале имя, а поом уже думает че функция вернет.
он вначале думает имя переменной а потом уже думает какого она будет типа!! К тому же посмотрите как у меня выглядит функция main ![]() Всем функциям если тип не задан автоматически подставляется void а этой функции int Так же эта функция если ничего не возвращаетсчя автоматически возвращает 0 К тому же посмотрите как мы создаем кота. Вначале придумываем имя куда мы засунем кота, а потом говорим что это будет кот. cat1 Cat(11, 'Ашот') так же у меня можно писать cat1 = Cat(11, 'Ашот') это идентичные записи а в С++ это выглядит как бредовый нелогичный ад: Cat cat1(11, 'Ашот') Да да мы создаем обьект а потом его типа вызываем как функцию и передаем туда параметры. большей ахинее нигде не видел) |
Цитата:
|
Цитата:
То есть создание синтаксического сахара на С++ ни кому не полезно и является фигней???))) ты в своем уме? |
Цитата:
![]() |
Цитата:
|
Цитата:
|
kobezzza, у тебя есть их компилятор в asm.js? А у меня есть компилятор С++ в asm.js уже сейчас. Я планирую закончить этот язык через месяц и уже юзать в продакшене и писать на нем юишку.
п.с. покумекав с пасонами решиил по дефолту сделать поля приватными а не публичными, вот кусок переписки: Цитата:
|
Цитата:
|
Вот пример нового вариванта синтаксиса
![]() |
Цитата:
|
Цитата:
|
Для тех кто в танке, объясните в 2х словах, что деалает asm.js , компилит c++ в js?
|
Цитата:
|
Цитата:
A. Because of the directive prologue, a JavaScript engine can immediately recognize asm.js code at compile-time and immediately compile it to assembly language, with no need to ever run the code through an interpreter. http://asmjs.org/faq.html |
cyber, это подмножество яваскрипта которое типа быстро выполняется потому что там нет динамических типов и разрешена только работа с битовым массивом, работа с числами и бинарные операторы. строки запрещены.
чтобы asm.js код работал и в браузерах его не поддерживающих он имеет обратную совместимость. например все int переменные там при присваивании на всякий случай еще рах округляются типа q = (2+3)|0 чтобы УЖ ТОЧНО ИНТОМ СТАТЬ. в браузерах же в которых asm.js поддерживается, этот код вообще не интерптитируется а попадает в специальный транслятор этого кода в ассемблер. то есть операция округления там не выполняется, он воспринимает это просто как синтаксис такой на указание типа int. такой код может легко скомпилироваться в ассемблер и выполняться в процессере. придумали транслятор С++ в такой код. Транслятор называется Emscripten. Он эмулирует окружение С++ вроде файловой системы, видеокарты, монитора (canvas) и.т.п. Покольку у плюсов синтаксис говенный то я начал писать сахар для С++ похожий синтаксисом на coffeescript, и назвал его coffee++ Можно будет писать на красивом coffee++, транслировать в С++ и компилировать в asm.js и запускать в браузере супербыстрый код. А можно и просто писать на coffee++ , транслировать в С++ и просто сомпилировать под винду например) и писать десктопные проги. А позже я и свой компилятор напишу сразу в asm.js, просто пока в этом смысла нет раз есть Emscripten |
Mаxmaxmаximus, а какие браузеры поддерживаю asm?
|
Цитата:
|
Mаxmaxmаximus,
не плохо) |
cyber, но по моему asm.js поддерживается воообще везде где есть ES3
просто именно Emscripten использует кучу (виртуальную оперативку) котораяя является ArrayBuffer. НО как я понял его можно эмулировать обычными массивами для старых IE. |
Цитата:
юишку я уже используя как года 2 в работе) и переписывал раза 4 уже, вот пятый раз буду переисывать на coffee++ |
Цитата:
|
Цитата:
|
Цитата:
|
А вот как убого тот код выглядил бы на С++
![]() |
loljs, вот тут http://javascript.ru/forum/offtopic/...tml#post394106
|
Mаxmaxmаximus,
1. Добавь using namespace std; 2. мне нравятся геттеры и сеттеры в C# , если уже и пилишь свой велосипед то посмотри в как там сделанно https://msdn.microsoft.com/en-us/library/bb384054.aspx |
Цитата:
![]() |
Цитата:
Цитата:
|
Цитата:
Либо приводи пример предыдущего "велосипеда", либо признавай при всех что сморозил ахинею, ждемс: |
Цитата:
|
kobezzza, на чем основано это утверждение? и почему тогда у асм.js лисы и у v8 скорости равны?
|
Цитата:
Цитата:
|
Цитата:
- не хочешь не верь Л - логика почему тогда у асм.js лисы и у v8 скорости равны? |
Хотя последние пол года я не чекал, мб и запилили, но твоя статья была совсем о другом (я просто помню эту конференцию и тот анонс).
UPD: да, вроде как с 41 версии хрома в новом TurboFan сделали. |
kobezzza, ну то есть хром вообще никак не реагирует на директиву use asm он просто быстро работает как и лиса в режиме asm) кстати в лисе asm отключать директиву не меняя код не пробовал, над попробовать.
|
Цитата:
|
Ruslan_xDD, ну я щас пишу удобный AST билдер ковеподобного кода, я реально пока спал придумал его, он и феноминально быстрый и удобный с точки зрения добавления новых вещей) особенно как оказалось легко парсить блоки выделеные идентацией. я просто в цикле дерево наполняю где количество отступов каждой строчки кода является уровнем в ложенности когда оно уменьшается я просто достаю конструкию из стека и помещаю её в древо уже заполненых конструкций, а в предыдущем своем ast билдере я натыкаясб на какую то конструктию делал просмотр вперед где же там она закончится считая открывающие и закрывающие скобочки.
в общем парсить такую красоту вообще одно удовольсьвие, и я потом урок запилю как свой синтаксис кофеподобный запилить. а да, пишу транслятор на Coffescript) а потом можно угарнуть написать его на Coffee++ самом)) и производителдьность взлетит, и в браузере так же будет выполняться. А потом можно уже потихоньку выпиливать Emscripten и напрямую генерировать asm.js, хотя я не знаю как это делается если честно, ведь транслировать с языка на язык несравнимо легче чем в "байткод" да к тому же еще и описаный млять на диалекте другого языка) |
Часовой пояс GMT +3, время: 17:11. |