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

Поделиться с друзьями
-->

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


  1. Nekto_Habr
    11.07.2016 21:05
    +18

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


    1. Zashibis
      11.07.2016 21:15
      -7

      Добавлю завтра субтитры на английском и чуть позже на русском.


      1. gibson_dev
        12.07.2016 08:19
        +9

        Не только субтитры но Транскрипт пожалуйста, я не люблю видео смотреть


        1. starfair
          12.07.2016 11:09

          Тогда уж траскриб.
          Транскрипция — замена символов одного алфавита символами другого, для удобства прочтения слов иностранного языка или необходимости написания например имен собственных. А когда расшифровка видео или аудио — это транскрибация.


  1. NeoCode
    11.07.2016 21:32

    Интересная штука. Было бы интересно не только субтитры (в общем все и так понятно), но и подробности здесь непосредственно от вас.
    Что за язык, что за среда разработки, как все это работает на нижнем уровне…


    1. Zashibis
      12.07.2016 13:09
      -6

      К сожалению, местная школота увидев что-то умное, на английском и не про котиков заминусовала мне карму и я не смогу опубликовать более подробную статью.


      1. michael_vostrikov
        12.07.2016 13:15
        +6

        Что мешало вам сразу написать подробную статью?


      1. SirEdvin
        12.07.2016 13:51
        +5

        Очевидно, вас заминусили те, кто читает статьи на хабре, а не смотрит видео.


      1. yomayo
        12.07.2016 15:28
        +1

        Раз у Вас есть возможность писать комментарии, то в них Вы можете изложить текстовое содержание.


    1. Zashibis
      13.07.2016 15:57

      Как-то так:
      http://www.it-dc.org/projects/g5
      Замечания принимаются :)


  1. amaksr
    11.07.2016 21:51
    +1

    Язык пятого поколения: программист должен думать об алгоритмах, а не о языке.

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


    1. Zashibis
      12.07.2016 12:09
      -1

      Это не IDE, это концепт. Я нарисовал ее в Paint.


  1. TargetSan
    11.07.2016 21:56
    +2

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


    1. Zashibis
      12.07.2016 12:35
      -1

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


      1. TargetSan
        12.07.2016 12:52

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


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


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


        1. Zashibis
          12.07.2016 13:00

          1) ООП делает код более структурированным, у этого есть отдельные плюшки, которые просто не раскрыты в видео. Обычные функции разрешены.
          2) Вы либо плохо смотрели видео, либо плохо владеете английским: был создан один файл и на экране лишь два представления этого файла. Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.


          1. lair
            12.07.2016 13:17
            +1

            Представления таки нужны, ибо это удобно — скрыть реализацию класса одним щелчком.

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


          1. TargetSan
            12.07.2016 13:33

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


      1. lair
        12.07.2016 12:56
        +1

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

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


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

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


  1. PerlPower
    11.07.2016 22:03
    +16

    Поздравляю, вы только что изобрели Delphi.


    1. voidMan
      12.07.2016 11:45
      +1

      Точно такое впечатление возникло. Разве что объекты в самом редакторе кода более «умно» встроены.


      1. Zashibis
        12.07.2016 12:45

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


  1. pengyou
    11.07.2016 22:16
    +1

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


  1. lair
    11.07.2016 22:42
    +7

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


    1. Zashibis
      13.07.2016 16:03

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


      1. lair
        13.07.2016 16:08

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


        1. Zashibis
          14.07.2016 10:21

          Добавил именно для языка одну фичу
          http://www.it-dc.org/projects/g5#TOC-Restrictions


          1. lair
            14.07.2016 11:14
            +1

            If restriction is violated exception will be generated.

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


            1. Zashibis
              14.07.2016 11:49

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


              1. lair
                14.07.2016 12:02
                +1

                «Code Contracts» нельзя задать для чисто виртуальных методов, т.к. у них нет тела.

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


            1. sasha1024
              14.07.2016 17:57

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

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


              1. lair
                14.07.2016 18:09
                +2

                Ну, я думаю Вы не будете спорить, что такая штука — «a must» для современного языка.

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


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

                Именно.


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

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


                1. Zashibis
                  14.07.2016 18:32

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


                  1. 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.


                    1. Zashibis
                      14.07.2016 21:16

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


                      1. lair
                        14.07.2016 22:56
                        +1

                        SQL-подобные я бы вообще не назвал языком программирования.

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


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

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


              1. Zashibis
                14.07.2016 18:26

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


                1. lair
                  14.07.2016 18:44
                  +1

                  Как вы себе представляете «compile-time check»?

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


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

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


                  1. Zashibis
                    14.07.2016 21:22

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


                    1. grossws
                      14.07.2016 21:57
                      +1

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


                    1. lair
                      14.07.2016 22:57
                      +1

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


                      1. Zashibis
                        15.07.2016 09:21

                        Дайты ссылочку, гугл не находит «Валидационная аннотация»
                        PS нашел


  1. robert_ayrapetyan
    11.07.2016 23:37
    +2

    На самом деле какая-то помесь JS, JAVA и Qt. Возможно, это будет самым быстрым и удобным решением для создания Hello world окон, но как быть с реальными приложениями, где картинка не влезет в ресурсы экзешника?


  1. grossws
    12.07.2016 01:36
    +11

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


  1. lasalas
    12.07.2016 09:59
    -4

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

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


  1. izvolov
    12.07.2016 10:39

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


  1. sasha1024
    12.07.2016 11:09

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


    1. Zashibis
      12.07.2016 12:54
      -2

      Вы правы, у меня к сожалению не хватает времени на эти проекты.
      Знаете ли, кушать хочется, и работаю фулл-тайм на одного работодателя :)
      И личная жизнь у меня таки есть :)))
      Иногда бывают перерывы между проектами, и могу заниматься своими, но не так быстро как хотелось бы.


      1. sasha1024
        12.07.2016 16:15
        +2

        Прочитал Ваши комменты.

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

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


  1. qrck13
    12.07.2016 11:43
    +2

    «Lets define it as a global variable»…

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

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

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


  1. Alex_ME
    12.07.2016 22:06

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


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

    image


    1. Zashibis
      13.07.2016 10:20

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


  1. bogotoff
    13.07.2016 01:51

    Ничего супернового может и нет, но лично я был бы рад, если бы в Objective C был подобный синтаксис.