Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.119.111.9] |
|
Страницы: (6) « Первая ... 2 3 [4] 5 6 все ( Перейти к последнему сообщению ) |
Сообщ.
#46
,
|
|
|
В большинстве случаев, действительно, достаточно инлайн-функции. Но есть еще случаи с тем же __LINE__ или когда в дебаге нужно достучаться то членов класса. В последнем случае можно инлайн-функцию сделать другом класса, но лишние захламления тоже нездорово.
|
Сообщ.
#47
,
|
|
|
Как раз в макросе ничего вычисляться не будет. А вот аргументы inline-функции вычисляются. По крайней мере если имеют побочные эффекты. С другой стороны при использовании макроса отладочная и релизная версии могут по-разному работать |
Сообщ.
#48
,
|
|
|
Цитата Как раз в макросе ничего вычисляться не будет. ? что за компилятор?.. Для MSVC++ 6 - аргумент вычислялся. ..сейчас в 7-е гляну. |
Сообщ.
#49
,
|
|
|
Цитата BugHunter @ что за компилятор?.. Для MSVC++ 6 - аргумент вычислялся. ..сейчас в 7-е гляну. В любом нормальном компиляторе результат вычисляться не будет. На то он и препроцессор. |
Сообщ.
#50
,
|
|
|
Забавно то, что объектно-ориентированный Delphi(ObjectPascal) все время норовят сравнивать не с объектно-ориентированным C++, а с представителем предыдущего поколения C. Паскаль надо сравнивать с C, ObjectPascal - с C++.
Цитата А что еще можно ожидать прочитать в книге о Delphi? Что Delphi - отстой?"Pascal фирмы Borland стал объектно-ориентированным в версии 5.5 и долго рассматривался как лучшая объектно-ориентированная среда по сравнению с C++. Эта высокая оценка, возможно, объясняется той основой на которой развивался Pascal (если не говорить о том, что он был разработан лучшей в отрасли командой)." (Джон Матчо, Дэвид Р.Фолкнер. Delphi:Пер.с англ.-М.Бином,1995.-464 с.) Цитата В C/C++ - аналогично. Несоответствие правилам вызовет ошибку.Pascal является более строгим языком, чем C. Любое несоответствие правилам построения программы, типам данных вызовет ошибку компилятора. Цитата Этого теста я не понял. На любом языке написание программы требуется подгонять под его понятия.В Pascal существуют понятия головной программы, процедуры и функции. В языке C все это вместе взятое есть функции и требуется написание программы подгонять под это понятие. Пятый пункт тоже непонятен. Что автор вообще хотел сказать? Цитата Боюсь, что я на такую программу также затрачу не более 5 минут на C.А вы попробуйте взять и написать программу на этих языках, которая из строки 'Иванов Иван Иванович' выделит 5-6 и 10-13 символы и сложит их вместе (ответ: 'ован И'), и обязательно положите рядом часы. На Pascale программист на эту программу затратит не более 5-ти минут, а вот на C значительно больше. Не верите? Цитата Ну наконец-то что-то реальное. Но в реальности малозначительное. Где гарантия, что после буквы 'А' идет буква 'Б' и между ними не вклинился какой-то другой ненужный символ? Учитывая кроссплатформенность C такой гарантии никто не даст.Далее, в языке С отсутствует интервальный тип данных. Цитата Всегда можно найти пример, где паскалевский real с таким же успехом уйдет в переполнение/ноль/потерю точности. Я, например, всегда использую double. Но иногда и его точности не хватает, приходится использовать 10-байтовый long double. 6-байтовый real тут отнозначно будет в том самом месте.Следует отметить опасности в языке Си, связанные с применением типа данных float даже в несложных арифметических выражениях: Цитата Человек ничего не знает о typedef?Применяя тип данных float в языке Си мы должны сначала написать программу, отладить ее, решить тестовые примеры, и только тогда принять решение о целесообразности типа данных float, в противном случае в программу потребуется внести изменения, данные типа float заменить на double. Цитата Это автоматизм, приобретаемый умным человеком после прочтения книги и написания первой же программы, использующей массивы.Каждый программист сталкивался с ошибками, возникающими из-за нумерации с нуля. И т.д. и т.п. Что-то у человека не сложилось и он вымещает это на C. |
Сообщ.
#51
,
|
|
|
Цитата Ну наконец-то что-то реальное. Но в реальности малозначительное. Где гарантия, что после буквы 'А' идет буква 'Б' и между ними не вклинился какой-то другой ненужный символ? например, буква "ё" выбивается . |
Сообщ.
#52
,
|
|
|
Кстати, интервальный тип можно достаточно просто замутить на шаблонах. Если уж очень хочется.
|
Сообщ.
#53
,
|
|
|
Цитата trainer, 13.03.2006, 09:49:48, 1042146 А вы попробуйте взять и написать программу на этих языках, которая из строки 'Иванов Иван Иванович' выделит 5-6 и 10-13 символы и сложит их вместе (ответ: 'ован И'), и обязательно положите рядом часы. На Pascale программист на эту программу затратит не более 5-ти минут, а вот на C значительно больше. Не верите? Боюсь, что я на такую программу также затрачу не более 5 минут на C. как я уже говорил, для примитивных прог бейсик рулит: 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), массивы нумеруются с единицы... какой гад это придумал? с нуля нумеровать намного правильнее и понятнее. Цитата Это автоматизм, приобретаемый умным человеком после прочтения книги и написания первой же программы, использующей массивы.Каждый программист сталкивался с ошибками, возникающими из-за нумерации с нуля. Автоматизм не помогает - влияет давняя, ещё со времён Спектрума, привычка. (там дефолтное объявление массива начиналось с нуля.) |
Сообщ.
#54
,
|
|
|
Цитата BlackSnake @ как я уже говорил, для примитивных прог бейсик рулит: И чем же это лучше const S = 'Иванов Иван Иванович'; begin ShowMessage( Copy(S, 5, 2) + Copy(S, 10, 4)); end; Тем что синтаксис вообще ни на один нормальный язык программирования не похож? |
Сообщ.
#55
,
|
|
|
Цитата Smike, 13.03.2006, 14:26:44, 1042444 Тем что синтаксис вообще ни на один нормальный язык программирования не похож? я тоже не могу понять, почему синтаксис паскаля не похож ни на один нормальный язык |
Сообщ.
#56
,
|
|
|
Цитата BlackSnake @ я тоже не могу понять, почему синтаксис паскаля не похож ни на один нормальный язык Ты передергиваешь Синтаксис Паскаля более похож на синтаксис Си и вообще на общепринятый синтаксис, в отличие от бейсика. |
Сообщ.
#57
,
|
|
|
Пропишем BlackSnak'у ASM-терапию. После этого он паскаль и си полюбит всем сердцем
|
Сообщ.
#58
,
|
|
|
Пропишем BlackSnak'у ASM-терапию
И исключительно в виде клизьм и пиявок! Цитата После этого он паскаль и си полюбит всем сердцем Поцкаль - дедушка всех языков! А за что си любить вабще не понимаю.. |
Сообщ.
#59
,
|
|
|
Цитата Flex Ferrum @ Borland именно так и сделал. Эмуляция паскалевского set для Borland C++ Builder(чтобы работать с написанной на паскале VCL)Кстати, интервальный тип можно достаточно просто замутить на шаблонах 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> { ... }; |
Сообщ.
#60
,
|
|
|
Цитата Rikkie, 13.03.2006, 15:28:48, 1042496 Пропишем BlackSnak'у ASM-терапию. После этого он паскаль и си полюбит всем сердцем не люблю интеловский асм... зилоговский мне роднее и вообще имхо более красивый |