Концепт фреймворка и языка пятого поколения

    Язык пятого поколения: программист должен думать об алгоритмах, а не о языке.
    Но это не означает, что язык должен быть в виде блок-схем, как об этом пишут интернеты.
    Долой экранирование символов в строках, да здравствуют составные операторы любой сложности.
    Это и другое в моем видео.

    Поделиться публикацией

    Похожие публикации

    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 53

      +18
      Транскрипт дайте пожалуйста, не все хотят/могут смотреть.
        –7
        Добавлю завтра субтитры на английском и чуть позже на русском.
          +9
          Не только субтитры но Транскрипт пожалуйста, я не люблю видео смотреть
            0
            Тогда уж траскриб.
            Транскрипция — замена символов одного алфавита символами другого, для удобства прочтения слов иностранного языка или необходимости написания например имен собственных. А когда расшифровка видео или аудио — это транскрибация.
        0
        Интересная штука. Было бы интересно не только субтитры (в общем все и так понятно), но и подробности здесь непосредственно от вас.
        Что за язык, что за среда разработки, как все это работает на нижнем уровне…
          –6
          К сожалению, местная школота увидев что-то умное, на английском и не про котиков заминусовала мне карму и я не смогу опубликовать более подробную статью.
            +6
            Что мешало вам сразу написать подробную статью?
              +5
              Очевидно, вас заминусили те, кто читает статьи на хабре, а не смотрит видео.
                +1
                Раз у Вас есть возможность писать комментарии, то в них Вы можете изложить текстовое содержание.
                0
                Как-то так:
                http://www.it-dc.org/projects/g5
                Замечания принимаются :)
                +1
                Язык пятого поколения: программист должен думать об алгоритмах, а не о языке.

                Вроде не так: юзер должен задекларировать условия/ограничения, а язык все сделает типа сам (https://en.wikipedia.org/wiki/Fifth-generation_programming_language).
                А что за IDE на видео?
                  –1
                  Это не IDE, это концепт. Я нарисовал ее в Paint.
                  +2

                  Это качественная IDE, с интеграцией кучи объектов в код. Где тут язык пятого поколения, я не увидел.

                    –1
                    Облегчение программирования за счет этой самой интеграции объектов.
                    Все языки 4-го поколения (С++, Python и т.д.) предполагают, что их исходный код — текстовые файлы.
                    Существующие языка 5-го поколения — графические (BPML и т.д.).
                    Я предлагаю сделать микс: текст + картинки где это удобно.
                    И главная цель — программист должен как можно меньше думать о специфике языка, код должен быть компактным.
                      0

                      Определение 5-го поколения, в вики, Вам привели выше в
                      https://habrahabr.ru/post/305444/?reply_to=9696938#comment_9696044
                      Так где Ваш концепт языка умеет решать проблему по набору ограничений и условий? Я например, как и многие другие, вижу тот же Delphi/C#/QtQuick/etc. без принципиальных отличий. Делать же интерактивные объектные вставки можно и на базе текстового представления. Посмотрите например инспект элементов в студии.


                      И, кстати, по вашему концепту


                      • Почему опять ООП всего и вся? Чем плохи обычные свободные функции? Зачем Main делать классом?
                      • Если у вас такое всё из себя объектное представление, почему нужны 2 вида файла с исходниками, в стиле "заголовок-имплементация"? Почему не давать доступ к исходнику на уровне функции? Или хотя бы держать всё в одном "файле", но при этом сортировать по какому-то критерию?
                        0
                        1) ООП делает код более структурированным, у этого есть отдельные плюшки, которые просто не раскрыты в видео. Обычные функции разрешены.
                        2) Вы либо плохо смотрели видео, либо плохо владеете английским: был создан один файл и на экране лишь два представления этого файла. Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.
                          +1
                          Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.

                          Для этого достаточно сворачивания по членам класса (одним щелчком, да). Еще лучше для этого подходят интерфейсы.

                            0

                            1) По поводу структурированности можно поспорить, т.к. не везде и не всегда. Но не будем разводить холивар.
                            2) Я написал "2 вида". Мне только непонятно, почему эти два вида — суть калька с "заголовок-реализация". Как я написал, вполне можно делать всё одним экраном — но сортировать элементы по месту, позволять экспанд-коллапс и т.п.
                            В целом, среды, хранившие исходники в отличном от текста представлении, уже были. Не взлетели. Потому что для текста инструментария для текста завались. А вот для вашего гипотетического представления — когда появится дифф, блэйм и т.д.?

                          +1
                          Облегчение программирования за счет этой самой интеграции объектов.

                          Угу. Есть куча программистов, которые с вашими объектами (текстами и картинками) вообще не работают (точнее, они их видят только как пользовательские данные). И как ваше предложение им поможет?


                          программист должен как можно меньше думать о специфике языка, код должен быть компактным.

                          Эти два тезиса никак не связаны.

                        +16
                        Поздравляю, вы только что изобрели Delphi.
                          +1
                          Точно такое впечатление возникло. Разве что объекты в самом редакторе кода более «умно» встроены.
                            0
                            Не удивительно, что у вас возникли ассоциации с Delphi.
                            Рисование окон есть во многих средах, и это удобно. Зачем же портить технику?
                            Я лишь сделал это еще более удобно за счет того, что отказался от текстовых файлов для исходного кода.
                          +1
                          Ну это слишком сложно, давайте чего попроще, онтологии, например, в обычный императивный язык встроить, хорошо так, с решателями и выводом неявных знаний.
                            +7

                            Скажите, пожалуйста, чем ваш язык отличается от существующих?

                              0
                              Тут выложил что есть:
                              http://www.it-dc.org/projects/g5
                                0

                                И там по этому поводу нет ничего. Описанный там язык — совершенно обычное третье поколение. Более того, я вообще там не вижу ни одной фичи, которой бы не было в существующих языках (именно с точки зрения языка).

                                  0
                                  Добавил именно для языка одну фичу
                                  http://www.it-dc.org/projects/g5#TOC-Restrictions
                                    +1
                                    If restriction is violated exception will be generated.

                                    Здравствуй, Eiffel. А теперь внимание, вопрос: чем это отличается от Code Contracts в .net?

                                      0
                                      Посмотрел реализацию по вашей наводке. Вы очень полезны для проекта :)
                                      «Code Contracts» нельзя задать для чисто виртуальных методов, т.к. у них нет тела. В моем случае ограничения задаются отдельно от тела.
                                      Синтаксис «Code Contracts» отвратителен — но это дело вкуса.
                                        +1
                                        «Code Contracts» нельзя задать для чисто виртуальных методов, т.к. у них нет тела.

                                        Во-первых, в .net нет такой вещи как "чисто виртуальный метод без тела". А во-вторых, через ContractClass/ContractClassFor все прекрасно задается.

                                        0
                                        Ну, я думаю Вы не будете спорить, что такая штука — «a must» для современного языка.
                                        И что её реализации для существующих языков/платформ достаточно убоги (как и тот факт, что оно, как правило, реализуется сторонними библиотеками/расширениями, а не в «ядре» языка).

                                        Другое дело, что у ТС вообще пока нет никакой реализации, — и что она будет (если вообще будет!) красивой и непротиворечивой — совсем не факт. P.S.: ес-но, это должно быть compile-time check, а не runtime exceptions.
                                          +2
                                          Ну, я думаю Вы не будете спорить, что такая штука — «a must» для современного языка.

                                          "A must" — буду. Без DbC можно жить, точно так же, как можно жить без статической системы типов. Но дело даже не в этом, а в том, что добавление DbC не меняет поколение языка — он как был третьим, так и остался.


                                          Другое дело, что у ТС вообще пока нет никакой реализации

                                          Именно.


                                          ес-но, это должно быть compile-time check, а не runtime exceptions.

                                          … чего автор "языка пятого поколения" не понимает.

                                            0
                                            Даже С++ является четвертым поколением языков, не третьим :)
                                              +1
                                              Даже С++ является четвертым поколением языков, не третьим

                                              Правда? "Most popular general-purpose languages today, such as C, C++, C#, Java, BASIC and Pascal, are also third-generation languages" (Wiki)


                                              Четвертое поколение — это, грубо говоря, DSL.

                                                0
                                                Понятие 4GL и 5GL очень сильно плавает, каждый автор статьи что-то свое понимает. Некоторые Visual C++ называют 5GL. SQL-подобные я бы вообще не назвал языком программирования.
                                                Предлагаю на эту тему не спорить, ибо очень скользкая
                                                  +1
                                                  SQL-подобные я бы вообще не назвал языком программирования.

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


                                                  Предлагаю на эту тему не спорить, ибо очень скользкая

                                                  Предлагаю в таком случае убрать из вашего текста все упоминания "пятого поколения", чтобы не было, о чем спорить.

                                            0
                                            Как вы себе представляете «compile-time check»? Например, я из внешнего источника по ходу выполнения программы получаю число и передаю в функцию: на этапе компилирования это невозможно выявить, тут только runtime exceptions.
                                            Конечно в редких случаях может сработать и compile-time check, добавлю это на страничку :)
                                              +1
                                              Как вы себе представляете «compile-time check»?

                                              Анализом контрактов (и поведения программы) вверх по стеку. Как, собственно, это и сделано в Code Contracts.


                                              Например, я из внешнего источника по ходу выполнения программы получаю число и передаю в функцию: на этапе компилирования это невозможно выявить, тут только runtime exceptions.

                                              Ну и смысл тогда в таком "ограничении"? Оно прекрасно покрывается валидационными правилами.

                                                0
                                                Ограничения компактнее, чем туча IF в начале функции.
                                                  +1

                                                  Валидация бывает и декларативная. Например, в виде аннотаций с предусловиями.

                                                    +1

                                                    А по-вашему, валидационные правила бывают только в виде if? Откройте для себя прекрасный мир валидационных аннотаций уже.

                                                      0
                                                      Дайты ссылочку, гугл не находит «Валидационная аннотация»
                                                      PS нашел
                                    +2
                                    На самом деле какая-то помесь JS, JAVA и Qt. Возможно, это будет самым быстрым и удобным решением для создания Hello world окон, но как быть с реальными приложениями, где картинка не влезет в ресурсы экзешника?
                                      +11

                                      Превратили хабр в твиттер, блин

                                        –4
                                        Программист не должен думать об алгоритмах. Есть вещи поважнее.

                                        А система ничего так. Похуже, конечно, чем VS+C#, например, но зато есть куда расти.
                                          0

                                          Почему нет русской версии?

                                            0
                                            Почитал Ваши статьи (в смысле, послушал эту и почитал предыдущую).
                                            В чём-то Вы движетесь в очень правильном направлении.
                                            Только не уверен, что Вы делаете достаточно (в смысле, новая технология, чтобы быть успешной, должна быть на значимую величину быть лучше существующих, а не быть в чём-то лучше, но объявлять себя новым поколением).
                                              –2
                                              Вы правы, у меня к сожалению не хватает времени на эти проекты.
                                              Знаете ли, кушать хочется, и работаю фулл-тайм на одного работодателя :)
                                              И личная жизнь у меня таки есть :)))
                                              Иногда бывают перерывы между проектами, и могу заниматься своими, но не так быстро как хотелось бы.
                                                +2
                                                Прочитал Ваши комменты.

                                                Если это только концепт («нарисовал её в Paint»). То скажу, что Ваша идея, имхо, не нова. Вы гуглили про projectional editing? В частности JetBrains MPS.

                                                «Знаете ли, кушать хочется». Я на самом деле не про недостаток вложенных усилий, а про несоответствие степени новизны и описания. Т.е. ИМХО Вы движетесь в правильном направлении, но почему-то называете всё слишком громкими словами («полноценная замена», «пятого поколения»).
                                              +2
                                              «Lets define it as a global variable»…

                                              этим все сказано

                                              А вообще было-бы в первую очередь интересно узнать, какие насущные проблемы этот фреймворк и этот язык позволяет решить?

                                              Современные ЯП и так справляются с задачей «программист должен думать об алгоритмах, а не о языке.»
                                                0

                                                Про новизну и Delphi сказали выше. Добавлю, что у меня возникла сильнейшая ассоциация с Wolfram Mathematica:


                                                Рандомный скриншот из гугла

                                                image

                                                  0
                                                  Посмотрел, спасибо за ссылку. Я не уверен, что надо добавлять в язык программирования математические символы. Смешивать процедурный язык с функциональным — может оказаться очень болезненно.
                                                  0
                                                  Ничего супернового может и нет, но лично я был бы рад, если бы в Objective C был подобный синтаксис.

                                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                  Самое читаемое