На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (7) 1 2 [3] 4 5 ... Последняя » все  ( Перейти к последнему сообщению )  
> Язык программирования Алмаз , или коротко язык A
    Цитата prografix @
    А хотелось бы на этапе компиляции.

    Ээээ... Боюсь, что это невозможно. Достаточно индекс сделать неконстантным, и вся эта проверка накроется медным тазом. Т. е. от выхода за границы это тебя все равно не застрахует.

    Цитата prografix @
    А ещё у вектора нежелательно брать адрес элемента. Конечно, если не менять размер, то будет всё нормально, а вдруг кто-то поменяет?

    Конечно, нежедательно. В общем случае и у массива (переданного по указателю) нежелательно брать адрес элемента - ведь его тоже могут элементарно удалить или отресайзить. :whistle:
      а может C# :yes:
        Тьфу! Совсем запутался. Ты вроде Язык Дейкстра создавал? Ну... а что, бросил чтоли? Или как? Сначала бы его доделал, а потом уже и Алмаз :) Тем более язык Дейсктра уже описан и реально существует.
        Так можно подумать что пройдет еще пол годика и у нас еще какой язык будет появляться?

        Да и (хотя вопрос уже задавали) как ты хочешь Си++ улучшить? Ты говоришь в общих чертах: уберу то, добавлю это, прикручу еще кое-что и...будет все Ок.
        Ты в чем то сравниваешь себя с Страуструпом, но я не думаю что он писал Си++ как ты..."Давайте напишем язык! Си слишком плох, пишем сразу транслятор, так быстрее!". Я думаю, что сначала нужно создать проект языка так сказать. Описать конструкции, принципы...хотя бы основываясь на уже готовом стандарте Си++. Потому следовало бы определить...нужно ли все это? Может быть твои навороты нужны в 1 из 1000 случаев?
        А ты не знаю еще чего из себя будет представлять язык хочешь писать транслятор... ну не глупо ли?
        Потом может быть и правда Си++ лучше изучить? Не думаю что ты его знаешь на отлично... хотя я могу ошибаться.
        Потом часть того что ты говоришь можно реализовать опять же на Си++ сделав нужные классы...которые уже реализовали.
        Если тебе хочется сделать проверку на выход из границ массива на этапе компиляции, то сделай просто прогу которая бы это проверяла...останется тот же Си++. Хотя как тебе уже сказали, что стоит быть неконстантному индексу...как все бессмысленно. Например Delphi делает таку проверку. Если я сделаю массив в 10 элементов и обращусь к 11 написав прямо array[11] то он меня обматерит, а если я сделаю так:
        a := 11;
        array[a];
        То все пройдет... ИМХО чтобы сделать проверку такую для неконстантных идексов нужно проработать все ситуации в программе компилятору самостоятельно....а это уже трудновато. Да и потом может быть стоит писать код так чтобы не было этих ошибок? Ведь в таких случаях кроме программера никто не виноват...
          Цитата p_kolya @
          Тьфу! Совсем запутался. Ты вроде Язык Дейкстра создавал? Ну... а что, бросил чтоли? Или как? Сначала бы его доделал, а потом уже и Алмаз :) Тем более язык Дейсктра уже описан и реально существует.

          Давай обо всём по порядку. Да, я действительно собирался делать Дейкстру, но при этом понимал, что он изначально не годится для практики. А делать собирался для того, чтобы набраться опыта для следующего языка, который отвечал бы требованиям сегодняшнего дня. А потом решил не тратить время, которого у меня мало и сразу перейти к новому языку. Если будут желающие сделать Дейкстру - я буду рад.
          Цитата p_kolya @

          Так можно подумать что пройдет еще пол годика и у нас еще какой язык будет появляться?

          Не думаю. Алмаз ещё проектируется и может развиваться в любую сторону.
          Цитата p_kolya @

          Да и (хотя вопрос уже задавали) как ты хочешь Си++ улучшить? Ты говоришь в общих чертах: уберу то, добавлю это, прикручу еще кое-что и...будет все Ок.
          Ты в чем то сравниваешь себя с Страуструпом, но я не думаю что он писал Си++ как ты..."Давайте напишем язык! Си слишком плох, пишем сразу транслятор, так быстрее!". Я думаю, что сначала нужно создать проект языка так сказать. Описать конструкции, принципы...хотя бы основываясь на уже готовом стандарте Си++. Потому следовало бы определить...нужно ли все это? Может быть твои навороты нужны в 1 из 1000 случаев?
          А ты не знаю еще чего из себя будет представлять язык хочешь писать транслятор... ну не глупо ли?

          Да, я не представил подробного плана, потому-что его у меня нет. Есть некоторые мысли, которые я тоже не представил. Я собираюсь потихоньку делать реализацию, показывать её и получать реакцию. Я раньше этим делом не занимался. Лексический анализ ещё представляю как можно сделать, а что дальше - надо учиться.
          Цитата p_kolya @

          Потом может быть и правда Си++ лучше изучить? Не думаю что ты его знаешь на отлично... хотя я могу ошибаться.

          По поводу моего знания С++. Я пишу на нём программы начиная с 90-го года. А до этого писал на С. А до этого на Фортране, ...
          Цитата p_kolya @

          Потом часть того что ты говоришь можно реализовать опять же на Си++ сделав нужные классы...которые уже реализовали.
          Если тебе хочется сделать проверку на выход из границ массива на этапе компиляции, то сделай просто прогу которая бы это проверяла...останется тот же Си++. Хотя как тебе уже сказали, что стоит быть неконстантному индексу...как все бессмысленно. Например Delphi делает таку проверку. Если я сделаю массив в 10 элементов и обращусь к 11 написав прямо array[11] то он меня обматерит, а если я сделаю так:
          a := 11;
          array[a];
          То все пройдет... ИМХО чтобы сделать проверку такую для неконстантных идексов нужно проработать все ситуации в программе компилятору самостоятельно....а это уже трудновато. Да и потом может быть стоит писать код так чтобы не было этих ошибок? Ведь в таких случаях кроме программера никто не виноват...

          Человеку свойственно ошибаться и если машина может это обнаружить, то надо этим воспользоваться.
            Цитата prografix @
            А потом решил не тратить время, которого у меня мало и сразу перейти к новому языку.
            Может следует абстрагироваться от реально существующего ЯВУ? А реализовывать >>>транслятор из мета-языка в реальные ЯВУ<<<?
              Думаю, не стоит. Универсальность имеет как плюсы, так и минусы ( эффективность ).
              Сообщение отредактировано: prografix -
                Насколько я помню (из какой-то его книги), Страуструп разработал язык C++ не потому, что ему не нравился язык С, а для того, чтобы расширить круг решаемых задач. Сам Страуструп тогда занимался имитационным программированием, и ему приходилось работать с большим количеством объектов, каждый из которых обладал какими-то свойствами. Язык C хорошо подходит для целей системного программирования, но в таких приложениях код получается тяжеловесным. Понятие ООП программирования уже существовало и существовали объектно-ориентированные языки программирования (в частности упоминались языки Smalltalk и Simula). Первый интерпретируемый, второй не подошёл по каким-то другим причинам. Понятие класса введено именно в Simula. Первоначально был разработан язык «C с классами» и был разработан препроцессор, транслирующий его в стандартный C (работал после обработки потока стандартным препроцессором). Его основная работа заключалась в замене классов на структуры, добавлении к этим структурам таблицы виртуальных функций, замене (декорировании) имён методов и функций (для обеспечения перегрузки имён), вставке ссылки на объект класса для которого вызван метод и т.п. Позднее, с развитием языка, поменялось название и был создан полноценный компилятор.
                  amk
                  Всё верно, только я писал, что "С его не устраивал", а не "ему не нравился язык С".
                    В настоящее время я пишу лекситический анализатор и размышляю о синтаксисе. Сейчас думаю, что все объявления будут префексными. Например:
                    ExpandedWrap disabled
                      int[5] arr; // массив
                      double ( int ) func; // функция
                      int * () * [9] * ptr; // указатель на массив указателей на функции вовращающие указатель на int

                    Вариант с массивами используется в С#. А такого объявления функций ещё не встречал. Это делается для того, чтобы облегчить объявление такого сложного типа, как в третьем примере.
                      Цитата prografix @
                      int[5] arr;

                      Т. е. несколько объявлений переменных в одной строке будет запрещено? Как, например, тут:
                      ExpandedWrap disabled
                        int arr5[5], arr10[10];

                      Ты считаешь, что это:
                      Цитата prografix @
                      int * () * [9] * ptr;

                      очевиднее чем
                      ExpandedWrap disabled
                        int* (*ptr[9])();
                        ИМХО, вам, уважаемый автор, делать нечего :)

                        Можете показать проекты, которые вы пишите с 90-х годов прошлого века, которые принесли лично вам доход превышающий $1K/проект?
                          Цитата Flex Ferrum @
                          Цитата prografix @
                          int[5] arr;

                          Т. е. несколько объявлений переменных в одной строке будет запрещено? Как, например, тут:
                          ExpandedWrap disabled
                            int arr5[5], arr10[10];

                          Вопрос пока открыт, но скорее всего да.
                          Цитата Flex Ferrum @

                          Ты считаешь, что это:
                          Цитата prografix @
                          int * () * [9] * ptr;

                          очевиднее чем
                          ExpandedWrap disabled
                            int* (*ptr[9])();

                          Да. Считаю. И так считаю не только я, но и Страуструп. Только он предлагал постфиксную запись.

                          -юсртыхэю
                          Цитата RaD @
                          ИМХО, вам, уважаемый автор, делать нечего :)

                          Ошибаетесь. Времени как раз не хватает. Приходится выделять на этот проект по несколько минут в день.
                          Цитата RaD @

                          Можете показать проекты, которые вы пишите с 90-х годов прошлого века, которые принесли лично вам доход превышающий $1K/проект?

                          Не могу - это секрет. Вообще-то я уже 15 лет работаю над одним проектом, который мне приносит 1К в месяц. Если интересует моё творчество смотрите мой сайт.
                          Сообщение отредактировано: prografix -
                            Цитата prografix @
                            Да. Считаю. И так считаю не только я, но и Страуструп. Только он предлагал постфиксную запись.

                            А по-подробнее и со ссылками?
                              Цитата Flex Ferrum @
                              Цитата prografix @
                              Да. Считаю. И так считаю не только я, но и Страуструп. Только он предлагал постфиксную запись.

                              А по-подробнее и со ссылками?

                              Книга "Дизайн и эволюция языка С++". Там он пишет, что ему не нравится стиль объявлений С, потому-что там используется и префексная и постфиксная запись. Он хотел сделать только постфиксную. Пример:
                              ExpandedWrap disabled
                                ptr: ->int; // указатель на int

                              Но совместимость с С оказалась важнее. Кстати, ты ошибся повторяя мой пример ( что не удивительно, там сам чёрт ногу сломит ). У тебя ptr массив, а не указатель.
                                Цитата prografix @
                                что не удивительно, там сам чёрт ногу сломит

                                Хм... Слушай, а оно надо, коль так? К "привычной" записи все уже привыкли и кое-как ее понимают. А ты хочешь еще непоняток подкинуть? ;)
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0770 ]   [ 14 queries used ]   [ Generated: 18.07.25, 00:48 GMT ]