На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Правила раздела:
1. Название темы - краткое описание кто/что против кого/чего
2. В первом сообщении - список параметров, по которым идет сравнение.
3. Старайтесь аргументировать свои высказывания. Фразы типа "Венда/Слюникс - ацтой" считаются флудом.
4. Давайте жить дружно и не доводить обсуждение до маразма и личных оскорблений.
Модераторы: Модераторы, Комодераторы
Страницы: (6) « Первая ... 2 3 [4] 5 6  все  ( Перейти к последнему сообщению )  
> Интересная статья
    В большинстве случаев, действительно, достаточно инлайн-функции. Но есть еще случаи с тем же __LINE__ или когда в дебаге нужно достучаться то членов класса. В последнем случае можно инлайн-функцию сделать другом класса, но лишние захламления тоже нездорово.
      Цитата BugHunter @
      Всё равно этот x будет вычисляться даже в release версии

      Как раз в макросе ничего вычисляться не будет. А вот аргументы inline-функции вычисляются. По крайней мере если имеют побочные эффекты. С другой стороны при использовании макроса отладочная и релизная версии могут по-разному работать
        Цитата
        Как раз в макросе ничего вычисляться не будет.

        ?
        что за компилятор?.. Для MSVC++ 6 - аргумент вычислялся.
        ..сейчас в 7-е гляну.
          Цитата BugHunter @
          что за компилятор?.. Для MSVC++ 6 - аргумент вычислялся.
          ..сейчас в 7-е гляну.

          В любом нормальном компиляторе результат вычисляться не будет. На то он и препроцессор.
            Забавно то, что объектно-ориентированный Delphi(ObjectPascal) все время норовят сравнивать не с объектно-ориентированным C++, а с представителем предыдущего поколения C. Паскаль надо сравнивать с C, ObjectPascal - с C++.
            Цитата
            "Pascal фирмы Borland стал объектно-ориентированным в версии 5.5 и долго рассматривался как лучшая объектно-ориентированная среда по сравнению с C++. Эта высокая оценка, возможно, объясняется той основой на которой развивался Pascal (если не говорить о том, что он был разработан лучшей в отрасли командой)." (Джон Матчо, Дэвид Р.Фолкнер. Delphi:Пер.с англ.-М.Бином,1995.-464 с.)
            А что еще можно ожидать прочитать в книге о Delphi? Что Delphi - отстой?
            Цитата
            Pascal является более строгим языком, чем C. Любое несоответствие правилам построения программы, типам данных вызовет ошибку компилятора.
            В C/C++ - аналогично. Несоответствие правилам вызовет ошибку.
            Цитата
            В Pascal существуют понятия головной программы, процедуры и функции. В языке C все это вместе взятое есть функции и требуется написание программы подгонять под это понятие.
            Этого теста я не понял. На любом языке написание программы требуется подгонять под его понятия.
            Пятый пункт тоже непонятен. Что автор вообще хотел сказать?
            Цитата
            А вы попробуйте взять и написать программу на этих языках, которая из строки 'Иванов Иван Иванович' выделит 5-6 и 10-13 символы и сложит их вместе (ответ: 'ован И'), и обязательно положите рядом часы. На Pascale программист на эту программу затратит не более 5-ти минут, а вот на C значительно больше. Не верите?
            Боюсь, что я на такую программу также затрачу не более 5 минут на C.
            Цитата
            Далее, в языке С отсутствует интервальный тип данных.
            Ну наконец-то что-то реальное. Но в реальности малозначительное. Где гарантия, что после буквы 'А' идет буква 'Б' и между ними не вклинился какой-то другой ненужный символ? Учитывая кроссплатформенность C такой гарантии никто не даст.
            Цитата
            Следует отметить опасности в языке Си, связанные с применением типа данных float даже в несложных арифметических выражениях:
            Всегда можно найти пример, где паскалевский real с таким же успехом уйдет в переполнение/ноль/потерю точности. Я, например, всегда использую double. Но иногда и его точности не хватает, приходится использовать 10-байтовый long double. 6-байтовый real тут отнозначно будет в том самом месте.
            Цитата
            Применяя тип данных float в языке Си мы должны сначала написать программу, отладить ее, решить тестовые примеры, и только тогда принять решение о целесообразности типа данных float, в противном случае в программу потребуется внести изменения, данные типа float заменить на double.
            Человек ничего не знает о typedef?
            Цитата
            Каждый программист сталкивался с ошибками, возникающими из-за нумерации с нуля.
            Это автоматизм, приобретаемый умным человеком после прочтения книги и написания первой же программы, использующей массивы.
            И т.д. и т.п. Что-то у человека не сложилось и он вымещает это на C. :D
              Цитата
              Ну наконец-то что-то реальное. Но в реальности малозначительное. Где гарантия, что после буквы 'А' идет буква 'Б' и между ними не вклинился какой-то другой ненужный символ?

              например, буква "ё" выбивается :).
                Кстати, интервальный тип можно достаточно просто замутить на шаблонах. Если уж очень хочется.
                  Цитата trainer, 13.03.2006, 09:49:48, 1042146
                  А вы попробуйте взять и написать программу на этих языках, которая из строки 'Иванов Иван Иванович' выделит 5-6 и 10-13 символы и сложит их вместе (ответ: 'ован И'), и обязательно положите рядом часы. На Pascale программист на эту программу затратит не более 5-ти минут, а вот на C значительно больше. Не верите?
                  Боюсь, что я на такую программу также затрачу не более 5 минут на C.


                  как я уже говорил, для примитивных прог бейсик рулит:
                  ExpandedWrap disabled
                    Dim a As String, b As String
                    a = "Иванов Иван Иванович"
                    b = Mid(a, 5, 2) & Mid(a, 10, 4)
                    MsgBox b

                  что-то ДЕЙСТВИТЕЛЬНО сложное/таймкритичное конечно лучше писАть на Си, но такие примитивы - бейсик рулит ещё раз :)


                  Цитата trainer, 13.03.2006, 09:49:48, 1042146
                  Цитата
                  Pascal является более строгим языком, чем C. Любое несоответствие правилам построения программы, типам данных вызовет ошибку компилятора.

                  Врядли бессмысленную требовательность к синтаксису следует считать преимуществом :) Происходит она из тех времён, когда паскаль придумали для "заставляния" студентов писАть структурированно.

                  Цитата trainer, 13.03.2006, 09:49:48, 1042146
                  Цитата
                  В Pascal существуют понятия головной программы, процедуры и функции. В языке C все это вместе взятое есть функции и требуется написание программы подгонять под это понятие.
                  Этого теста я не понял. На любом языке написание программы требуется подгонять под его понятия.
                  Пятый пункт тоже непонятен. Что автор вообще хотел сказать?

                  Он имел ввиду, что в Си всё - есть функции, а в паскале вместо функций, не возвращающих значения (void), применяют процедуры... Претензия надумана, хотя, с точки зрения структурированности, разница более значительна:
                  функция - может полуучить какие-то входные данные и ДОЛЖНА вернуть полезный для дальнейшего применения результат.
                  процедура - получает данные и выполняет действия. Возврат результатов в то место, откуда она была вызвана, с точки зрения паскальщиков, не нужен.

                  Сишный подход к теме мне нравится больше :)

                  Цитата trainer, 13.03.2006, 09:49:48, 1042146
                  Цитата
                  Каждый программист сталкивался с ошибками, возникающими из-за нумерации с нуля.
                  Это автоматизм, приобретаемый умным человеком после прочтения книги и написания первой же программы, использующей массивы.
                  АГА. Я и сам периодически забываю, что в некоторых языках (в т.ч. и моём любимом VB), массивы нумеруются с единицы... какой гад это придумал? с нуля нумеровать намного правильнее и понятнее. :)
                  Автоматизм не помогает - влияет давняя, ещё со времён Спектрума, привычка. (там дефолтное объявление массива начиналось с нуля.)
                    Цитата BlackSnake @
                    как я уже говорил, для примитивных прог бейсик рулит:

                    И чем же это лучше
                    ExpandedWrap disabled
                      const
                        S = 'Иванов Иван Иванович';
                      begin
                        ShowMessage(
                          Copy(S, 5, 2) + Copy(S, 10, 4));
                      end;

                    Тем что синтаксис вообще ни на один нормальный язык программирования не похож?
                      Цитата Smike, 13.03.2006, 14:26:44, 1042444
                      Тем что синтаксис вообще ни на один нормальный язык программирования не похож?


                      я тоже не могу понять, почему синтаксис паскаля не похож ни на один нормальный язык :)
                        Цитата BlackSnake @
                        я тоже не могу понять, почему синтаксис паскаля не похож ни на один нормальный язык :)

                        Ты передергиваешь :) Синтаксис Паскаля более похож на синтаксис Си и вообще на общепринятый синтаксис, в отличие от бейсика.
                          Пропишем BlackSnak'у ASM-терапию. После этого он паскаль и си полюбит всем сердцем ;)
                          Сообщение отредактировано: Rikkie -
                            Пропишем BlackSnak'у ASM-терапию
                            И исключительно в виде клизьм и пиявок!
                            Цитата
                            После этого он паскаль и си полюбит всем сердцем

                            Поцкаль - дедушка всех языков!
                            А за что си любить вабще не понимаю..
                              Цитата Flex Ferrum @
                              Кстати, интервальный тип можно достаточно просто замутить на шаблонах
                              Borland именно так и сделал. Эмуляция паскалевского set для Borland C++ Builder(чтобы работать с написанной на паскале VCL)
                              ExpandedWrap disabled
                                template<class T, unsigned char minEl, unsigned char maxEl> class RTL_DELPHIRETURN SetBase
                                  {
                                  protected:
                                    unsigned char Data[((((int)(maxEl/8))-((int)(minEl/8))+1) != 3)?
                                         (((int)(maxEl/8))-((int)(minEl/8))+1): 4];
                                  };
                                 
                                  template<class T, unsigned char minEl, unsigned char maxEl> class RTL_DELPHIRETURN Set : SetBase<T, minEl, maxEl>
                                  {
                                ...
                                };
                                Цитата Rikkie, 13.03.2006, 15:28:48, 1042496
                                Пропишем BlackSnak'у ASM-терапию. После этого он паскаль и си полюбит всем сердцем


                                не люблю интеловский асм... зилоговский мне роднее и вообще имхо более красивый :)
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (6) « Первая ... 2 3 [4] 5 6  все


                                Рейтинг@Mail.ru
                                [ Script execution time: 0,0545 ]   [ 15 queries used ]   [ Generated: 8.05.24, 15:05 GMT ]