Но это не означает, что язык должен быть в виде блок-схем, как об этом пишут интернеты.
Долой экранирование символов в строках, да здравствуют составные операторы любой сложности.
Это и другое в моем видео.
Комментарии (53)
NeoCode
11.07.2016 21:32Интересная штука. Было бы интересно не только субтитры (в общем все и так понятно), но и подробности здесь непосредственно от вас.
Что за язык, что за среда разработки, как все это работает на нижнем уровне…Zashibis
12.07.2016 13:09-6К сожалению, местная школота увидев что-то умное, на английском и не про котиков заминусовала мне карму и я не смогу опубликовать более подробную статью.
SirEdvin
12.07.2016 13:51+5Очевидно, вас заминусили те, кто читает статьи на хабре, а не смотрит видео.
yomayo
12.07.2016 15:28+1Раз у Вас есть возможность писать комментарии, то в них Вы можете изложить текстовое содержание.
amaksr
11.07.2016 21:51+1Язык пятого поколения: программист должен думать об алгоритмах, а не о языке.
Вроде не так: юзер должен задекларировать условия/ограничения, а язык все сделает типа сам (https://en.wikipedia.org/wiki/Fifth-generation_programming_language).
А что за IDE на видео?
TargetSan
11.07.2016 21:56+2Это качественная IDE, с интеграцией кучи объектов в код. Где тут язык пятого поколения, я не увидел.
Zashibis
12.07.2016 12:35-1Облегчение программирования за счет этой самой интеграции объектов.
Все языки 4-го поколения (С++, Python и т.д.) предполагают, что их исходный код — текстовые файлы.
Существующие языка 5-го поколения — графические (BPML и т.д.).
Я предлагаю сделать микс: текст + картинки где это удобно.
И главная цель — программист должен как можно меньше думать о специфике языка, код должен быть компактным.TargetSan
12.07.2016 12:52Определение 5-го поколения, в вики, Вам привели выше в
https://habrahabr.ru/post/305444/?reply_to=9696938#comment_9696044
Так где Ваш концепт языка умеет решать проблему по набору ограничений и условий? Я например, как и многие другие, вижу тот же Delphi/C#/QtQuick/etc. без принципиальных отличий. Делать же интерактивные объектные вставки можно и на базе текстового представления. Посмотрите например инспект элементов в студии.
И, кстати, по вашему концепту
- Почему опять ООП всего и вся? Чем плохи обычные свободные функции? Зачем Main делать классом?
- Если у вас такое всё из себя объектное представление, почему нужны 2 вида файла с исходниками, в стиле "заголовок-имплементация"? Почему не давать доступ к исходнику на уровне функции? Или хотя бы держать всё в одном "файле", но при этом сортировать по какому-то критерию?
Zashibis
12.07.2016 13:001) ООП делает код более структурированным, у этого есть отдельные плюшки, которые просто не раскрыты в видео. Обычные функции разрешены.
2) Вы либо плохо смотрели видео, либо плохо владеете английским: был создан один файл и на экране лишь два представления этого файла. Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.lair
12.07.2016 13:17+1Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.
Для этого достаточно сворачивания по членам класса (одним щелчком, да). Еще лучше для этого подходят интерфейсы.
TargetSan
12.07.2016 13:331) По поводу структурированности можно поспорить, т.к. не везде и не всегда. Но не будем разводить холивар.
2) Я написал "2 вида". Мне только непонятно, почему эти два вида — суть калька с "заголовок-реализация". Как я написал, вполне можно делать всё одним экраном — но сортировать элементы по месту, позволять экспанд-коллапс и т.п.
В целом, среды, хранившие исходники в отличном от текста представлении, уже были. Не взлетели. Потому что для текста инструментария для текста завались. А вот для вашего гипотетического представления — когда появится дифф, блэйм и т.д.?
lair
12.07.2016 12:56+1Облегчение программирования за счет этой самой интеграции объектов.
Угу. Есть куча программистов, которые с вашими объектами (текстами и картинками) вообще не работают (точнее, они их видят только как пользовательские данные). И как ваше предложение им поможет?
программист должен как можно меньше думать о специфике языка, код должен быть компактным.
Эти два тезиса никак не связаны.
PerlPower
11.07.2016 22:03+16Поздравляю, вы только что изобрели Delphi.
voidMan
12.07.2016 11:45+1Точно такое впечатление возникло. Разве что объекты в самом редакторе кода более «умно» встроены.
Zashibis
12.07.2016 12:45Не удивительно, что у вас возникли ассоциации с Delphi.
Рисование окон есть во многих средах, и это удобно. Зачем же портить технику?
Я лишь сделал это еще более удобно за счет того, что отказался от текстовых файлов для исходного кода.
pengyou
11.07.2016 22:16+1Ну это слишком сложно, давайте чего попроще, онтологии, например, в обычный императивный язык встроить, хорошо так, с решателями и выводом неявных знаний.
lair
11.07.2016 22:42+7Скажите, пожалуйста, чем ваш язык отличается от существующих?
Zashibis
13.07.2016 16:03Тут выложил что есть:
http://www.it-dc.org/projects/g5lair
13.07.2016 16:08И там по этому поводу нет ничего. Описанный там язык — совершенно обычное третье поколение. Более того, я вообще там не вижу ни одной фичи, которой бы не было в существующих языках (именно с точки зрения языка).
Zashibis
14.07.2016 10:21Добавил именно для языка одну фичу
http://www.it-dc.org/projects/g5#TOC-Restrictionslair
14.07.2016 11:14+1If restriction is violated exception will be generated.
Здравствуй, Eiffel. А теперь внимание, вопрос: чем это отличается от Code Contracts в .net?
Zashibis
14.07.2016 11:49Посмотрел реализацию по вашей наводке. Вы очень полезны для проекта :)
«Code Contracts» нельзя задать для чисто виртуальных методов, т.к. у них нет тела. В моем случае ограничения задаются отдельно от тела.
Синтаксис «Code Contracts» отвратителен — но это дело вкуса.lair
14.07.2016 12:02+1«Code Contracts» нельзя задать для чисто виртуальных методов, т.к. у них нет тела.
Во-первых, в .net нет такой вещи как "чисто виртуальный метод без тела". А во-вторых, через
ContractClass/ContractClassFor
все прекрасно задается.
sasha1024
14.07.2016 17:57Ну, я думаю Вы не будете спорить, что такая штука — «a must» для современного языка.
И что её реализации для существующих языков/платформ достаточно убоги (как и тот факт, что оно, как правило, реализуется сторонними библиотеками/расширениями, а не в «ядре» языка).
Другое дело, что у ТС вообще пока нет никакой реализации, — и что она будет (если вообще будет!) красивой и непротиворечивой — совсем не факт. P.S.: ес-но, это должно быть compile-time check, а не runtime exceptions.lair
14.07.2016 18:09+2Ну, я думаю Вы не будете спорить, что такая штука — «a must» для современного языка.
"A must" — буду. Без DbC можно жить, точно так же, как можно жить без статической системы типов. Но дело даже не в этом, а в том, что добавление DbC не меняет поколение языка — он как был третьим, так и остался.
Другое дело, что у ТС вообще пока нет никакой реализации
Именно.
ес-но, это должно быть compile-time check, а не runtime exceptions.
… чего автор "языка пятого поколения" не понимает.
Zashibis
14.07.2016 18:32Даже С++ является четвертым поколением языков, не третьим :)
lair
14.07.2016 18:41+1Даже С++ является четвертым поколением языков, не третьим
Правда? "Most popular general-purpose languages today, such as C, C++, C#, Java, BASIC and Pascal, are also third-generation languages" (Wiki)
Четвертое поколение — это, грубо говоря, DSL.
Zashibis
14.07.2016 21:16Понятие 4GL и 5GL очень сильно плавает, каждый автор статьи что-то свое понимает. Некоторые Visual C++ называют 5GL. SQL-подобные я бы вообще не назвал языком программирования.
Предлагаю на эту тему не спорить, ибо очень скользкаяlair
14.07.2016 22:56+1SQL-подобные я бы вообще не назвал языком программирования.
Здрасте пожалуйста, это с чего бы? Ничем не хуже других декларативных языков, местами прекрасная функциональщина видна.
Предлагаю на эту тему не спорить, ибо очень скользкая
Предлагаю в таком случае убрать из вашего текста все упоминания "пятого поколения", чтобы не было, о чем спорить.
Zashibis
14.07.2016 18:26Как вы себе представляете «compile-time check»? Например, я из внешнего источника по ходу выполнения программы получаю число и передаю в функцию: на этапе компилирования это невозможно выявить, тут только runtime exceptions.
Конечно в редких случаях может сработать и compile-time check, добавлю это на страничку :)lair
14.07.2016 18:44+1Как вы себе представляете «compile-time check»?
Анализом контрактов (и поведения программы) вверх по стеку. Как, собственно, это и сделано в Code Contracts.
Например, я из внешнего источника по ходу выполнения программы получаю число и передаю в функцию: на этапе компилирования это невозможно выявить, тут только runtime exceptions.
Ну и смысл тогда в таком "ограничении"? Оно прекрасно покрывается валидационными правилами.
robert_ayrapetyan
11.07.2016 23:37+2На самом деле какая-то помесь JS, JAVA и Qt. Возможно, это будет самым быстрым и удобным решением для создания Hello world окон, но как быть с реальными приложениями, где картинка не влезет в ресурсы экзешника?
lasalas
12.07.2016 09:59-4Программист не должен думать об алгоритмах. Есть вещи поважнее.
А система ничего так. Похуже, конечно, чем VS+C#, например, но зато есть куда расти.
sasha1024
12.07.2016 11:09Почитал Ваши статьи (в смысле, послушал эту и почитал предыдущую).
В чём-то Вы движетесь в очень правильном направлении.
Только не уверен, что Вы делаете достаточно (в смысле, новая технология, чтобы быть успешной, должна быть на значимую величину быть лучше существующих, а не быть в чём-то лучше, но объявлять себя новым поколением).Zashibis
12.07.2016 12:54-2Вы правы, у меня к сожалению не хватает времени на эти проекты.
Знаете ли, кушать хочется, и работаю фулл-тайм на одного работодателя :)
И личная жизнь у меня таки есть :)))
Иногда бывают перерывы между проектами, и могу заниматься своими, но не так быстро как хотелось бы.sasha1024
12.07.2016 16:15+2Прочитал Ваши комменты.
Если это только концепт («нарисовал её в Paint»). То скажу, что Ваша идея, имхо, не нова. Вы гуглили про projectional editing? В частности JetBrains MPS.
«Знаете ли, кушать хочется». Я на самом деле не про недостаток вложенных усилий, а про несоответствие степени новизны и описания. Т.е. ИМХО Вы движетесь в правильном направлении, но почему-то называете всё слишком громкими словами («полноценная замена», «пятого поколения»).
qrck13
12.07.2016 11:43+2«Lets define it as a global variable»…
этим все сказано
А вообще было-бы в первую очередь интересно узнать, какие насущные проблемы этот фреймворк и этот язык позволяет решить?
Современные ЯП и так справляются с задачей «программист должен думать об алгоритмах, а не о языке.»
Alex_ME
12.07.2016 22:06Про новизну и Delphi сказали выше. Добавлю, что у меня возникла сильнейшая ассоциация с Wolfram Mathematica:
Рандомный скриншот из гуглаZashibis
13.07.2016 10:20Посмотрел, спасибо за ссылку. Я не уверен, что надо добавлять в язык программирования математические символы. Смешивать процедурный язык с функциональным — может оказаться очень болезненно.
bogotoff
13.07.2016 01:51Ничего супернового может и нет, но лично я был бы рад, если бы в Objective C был подобный синтаксис.
Nekto_Habr
Транскрипт дайте пожалуйста, не все хотят/могут смотреть.
Zashibis
Добавлю завтра субтитры на английском и чуть позже на русском.
gibson_dev
Не только субтитры но Транскрипт пожалуйста, я не люблю видео смотреть
starfair
Тогда уж траскриб.
Транскрипция — замена символов одного алфавита символами другого, для удобства прочтения слов иностранного языка или необходимости написания например имен собственных. А когда расшифровка видео или аудио — это транскрибация.