На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (495) « Первая ... 116 117 [118] 119 120 ...  494 495  ( Перейти к последнему сообщению )  
> Delphi vs C++ vs C# , ну и Java немножко, где-то ближе к старшему байту номеров страниц
    DesweR, потому что у нас это требует одной языковой конструкции, а у вас двух.

    Добавлено
    Вброс
    Купил книгу "Идеальная архитектура", ни слова о дельфи =)
      Цитата DesweR @
      А у Корвина тогда что?
      Не зная, что это за язык, рискну предположить, что объявление переменных с инициализацией трех из них. Нет?
      и он намекает, что в C/C++ это транслируется напрямую, а в паскале надо запоминать, что потом переменные надо проинициализировать. Что явно усложняет препроцессор/кросстранслятор.
      Сообщение отредактировано: trainer -
        Скрытый текст
        Цитата Мяут-Настоящий @
        Купил книгу "Идеальная архитектура", ни слова о дельфи =)

        А с чего там быть делфи? Делфи обсуждают только в книжках по делфи. Во всяких паттернах/архитектурах/проектировании о делфи даже не намекнут, т.к. он для этого вообще не предназначен. Ибо перегружен ненужными AfterConstruction/BeforeDestruction/Initialization/Finalization и т.д. Я ни в одной книжке не встречал таких слов, видимо действия которые в них проводят нужны исключительно тем кто пишет на делфи... Думаю если и встретица делфи в какой то книжке по архитектуре, то скорее всего будет в описании как нельзя проектировать приложения...
          Цитата DesweR @
          Но вы же не забываете писать "int k = 0", а почему мы должны забывать?
          Мы не забываем, потому что синтаксис позволяет при определении переменной тут же указать её стартовое значение. В C большей частью ошибки с неинициализированными переменными произрастали как раз из-за необходимости использовать в определении только константного выражения и расположения определений только в начале блока перед любыми исполнительными инструкциями. Так что тоже часто требовалось определение и инициализацию раскидывать по двум точкам.
          Вот странное дело. Дядюшка Филипп придумал типизированные константы и не нашёл ничего лучше, как объявить их при этом переменными :blink: Ну, дал какой-то механизм избежать провокаций на ошибки. Ведь всё равно уже расширил синтаксис определения констант, почему не расширить и синтаксис определения переменных? И константы были бы, и переменные с инициализацией. Вообще логики не вижу.
            Цитата DesweR @
            Цитата D_KEY @
            Это несколько не то, кроме того, у тебя присваивание на пустом месте и один let на всю функцию...

            А у Корвина тогда что?
            ExpandedWrap disabled
                (let ((int i j (k 0))
                      (float x (y z 0)))

            Инициализация переменных внутри выражения let. Вообще это видимо просто попытка записать блок в виде s-expr, так как этот пример конструкции let лиспов не соответствует.
            Вот пример let-конструкции в scheme:
            ExpandedWrap disabled
              (let ((x init-value) (y init-value) (z init-value))
                    expr)

            в expr мы можем использовать x, y и z.
            let'ы могут быть вложенными(с возможностью переопределения вышележащих "переменных").

            Добавлено
            Цитата Мяут-Настоящий @
            Вброс
            Купил книгу "Идеальная архитектура", ни слова о дельфи =)

            Не читал. Стоит того?
            Сообщение отредактировано: D_KEY -
              Скрытый текст
              KILLER, или потому, что в Дельфи половина GoF уже в языке, а ещё половина планируется быть введённой. :D ИМХО неудачное дизайнерское решение. Но это на взгляд плюсника, избалованного свободой выбора и не любящего платить за неиспользуемое. Дельфисты скажут, что так оно самое то. И в неком смысле будут правы, в VB вон всё ещё жёстче.
                Цитата Мяут-Настоящий @
                DesweR, потому что у нас это требует одной языковой конструкции, а у вас двух.

                Где-то я уже слышал такое... и говорили это мы :D
                На что вы отвечали - "синтаксический сахар" ;)

                Цитата Qraizer @
                Мы не забываем, потому что синтаксис позволяет при определении переменной тут же указать её стартовое значение. В C большей частью ошибки с неинициализированными переменными произрастали как раз из-за необходимости использовать в определении только константного выражения и расположения определений только в начале блока перед любыми исполнительными инструкциями. Так что тоже часто требовалось определение и инициализацию раскидывать по двум точкам.

                У вас объявлять можно в любой точке подпрограммы, нет отдельных секций для объявления констант, типов и переменных, и если бы переменные нельзя было инициализировать на месте - это бы выглядело очень странно.
                У нас же разбили по полочкам: раздел const - объявляем константы; раздел type - объявляем типы; раздел var - объявляем переменные; begin...end - собственно код.
                Кстати, глобальные переменные можно таки инициализировать при объявлении :D
                ExpandedWrap disabled
                  var
                    N: Integer = 42;


                Цитата Qraizer @
                Вот странное дело. Дядюшка Филипп придумал типизированные константы и не нашёл ничего лучше, как объявить их при этом переменными Ну, дал какой-то механизм избежать провокаций на ошибки. Ведь всё равно уже расширил синтаксис определения констант, почему не расширить и синтаксис определения переменных? И константы были бы, и переменные с инициализацией. Вообще логики не вижу.

                Сам не вижу :D

                Цитата Мяут-Настоящий @
                Купил книгу "Идеальная архитектура", ни слова о дельфи =)

                Андерса Хейлсберга не позвали :(

                Цитата Qraizer @
                KILLER, или потому, что в Дельфи половина GoF уже в языке, а ещё половина планируется быть введённой.

                ЕМНИП, они там все.
                Сообщение отредактировано: DesweR -
                  Цитата DesweR @

                  Андерса Хейлсберга не позвали :(

                  Может быть потому что оно не идеально? :D

                  Цитата DesweR @
                  Где-то я уже слышал такое... и говорили это мы :D
                  На что вы отвечали - "синтаксический сахар" ;)

                  Разделение одной семантической конструкции на две синтаксические - это не сахар, это говнецо.
                    Цитата DesweR @
                    На что вы отвечали - "синтаксический сахар"
                    Синтаксический сахар - это когда одна конструкция заменяет другую или последовательность других. Как пример - циклы do и while при наличии for. И даже наличие циклов for, do и while при наличии if, goto и блоков.

                    P.S. Само по себе выражение "синтаксический сахар" не несет негативного смысла.
                    Сообщение отредактировано: trainer -
                      Цитата DesweR @
                      У вас объявлять можно в любой точке подпрограммы, нет отдельных секций для объявления констант, типов и переменных, и если бы переменные нельзя было инициализировать на месте - это бы выглядело очень странно.
                      У нас же разбили по полочкам: раздел const - объявляем константы; раздел type - объявляем типы; раздел var - объявляем переменные; begin...end - собственно код.

                      И это очень глупо, неудобно и ничем не оправдано. Зачем объявлять переменную, не инициализируя ее?
                      Кроме того, это вставляет палки в колеса immutable-объектам.

                      Цитата
                      Кстати, глобальные переменные можно таки инициализировать при объявлении :D
                      ExpandedWrap disabled
                        var
                          N: Integer = 42;

                      Почему тогда нельзя локальные?

                      Цитата
                      Цитата Мяут-Настоящий @
                      Купил книгу "Идеальная архитектура", ни слова о дельфи =)

                      Андерса Хейлсберга не позвали :(
                      А зачем его звать?
                        Цитата D_KEY @
                        Зачем объявлять переменную, не инициализируя ее?
                        Дык компилятор должен рассчитать потребный размер кучи и отвести там место под переменные. Правда компиляторы C для микроконтроллеров как-то справляются с этим и без секции var, хотя и размещают автоматические переменные в аналоге кучи. ;)
                        Сообщение отредактировано: trainer -
                          Цитата Мяут-Настоящий @
                          Может быть потому что оно не идеально?

                          И C# тоже?

                          Цитата Мяут-Настоящий @
                          Разделение одной семантической конструкции на две синтаксические - это не сахар, это говнецо.

                          Где сказано, что это одна семантическая конструкция?

                          Цитата trainer @
                          Синтаксический сахар - это когда одна конструкция заменяет другую или последовательность других.

                          Он и есть. (я о С++, если не так поняли)

                          Цитата D_KEY @
                          И это очень глупо, неудобно и ничем не оправдано.

                          А по мне (хотя мне без разницы) - глупо, неудобно и ничем не оправдано - разбрасывать объявления по всему тексту программы, вопрос вкуса и воспитания.

                          Цитата D_KEY @
                          Почему тогда нельзя локальные?

                          Ох, много было холиваров на эту тему, обоснования разные, но официальных причин, лично я, не встречал.
                          Сообщение отредактировано: DesweR -
                            Цитата DesweR @
                            А у Корвина тогда что?
                            ExpandedWrap disabled
                                (let ((int i j (k 0))
                                      (float x (y z 0)))

                            у меня
                            ExpandedWrap disabled
                                (let ((int i j (k 0))
                                      (float x (y z 0)))
                                  ...)

                            вообще-то.

                            ExpandedWrap disabled
                              (int main ()
                                (let ((int i))
                                  (print i) ; => 0
                                  (let ((int (i 1)))
                                    (print i) ; => 1
                                    (set i 2)
                                    (print i) ; => 2
                                    (let ((int i))
                                      (print i) ; => 0
                                      (set i 3)
                                      (print i)) ; => 3
                                    (print i)) ; => 2
                                  (print i) ; => 0
                                  (let ((int (j 4)))
                                    (print j)) ; => 4
                                  (print j))) ; ошибка компиляции

                            ExpandedWrap disabled
                              int main ()
                              {   int i;
                                  print(i); // => 0
                                  {   int i = 1;
                                      print(i); // => 1
                                      i = 2;
                                      print(i); // => 2
                                      {   int i;
                                          print(i); // => 0
                                          i = 3;
                                          print(i); // => 3
                                      }
                                      print(i); // => 2
                                  }
                                  print(i); // => 0
                                  {   int j = 4;
                                      print(j); // => 4
                                  }
                                  print(j); // ошибка компиляции
                              }

                            покажи аналог на паскале =)
                              Цитата korvin @
                              покажи аналог на паскале =)

                              Аналог чего? Зеркальности семантики?
                                Цитата D_KEY @
                                Цитата
                                Кстати, глобальные переменные можно таки инициализировать при объявлении :D
                                ExpandedWrap disabled
                                  var
                                    N: Integer = 42;

                                Почему тогда нельзя локальные?

                                ниасилили =)

                                Добавлено
                                Цитата DesweR @
                                Аналог чего? Зеркальности семантики?

                                полностью идентичный код в синтаксисе паскаля. я перевел из s-выражения в С без преобразований AST.
                                1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (495) « Первая ... 116 117 [118] 119 120 ...  494 495


                                Рейтинг@Mail.ru
                                [ Script execution time: 0.2369 ]   [ 14 queries used ]   [ Generated: 30.07.26, 17:58 GMT ]