![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
setq |
|
|||
Unregistered |
я собственно к чему. э... у любого языка есть недостатки, недочёты и недосмотры ну те или иные. не боги ведь горшки обжигали в конце-то концов. Страуструп тоже человек. наверно. может быть. ну не исключён такой вариант. :-)
понятно, что половина "недостатков" пропадает с увеличением опыта, когда узнаёшь Си++ получше. понятно, что всегда есть способы от этих заморочек избавляться. всякие обходные пути там итд. вот давайте их сюда сваливать. вот. начнём с мелочей :-) 0) мне не нравится, что break'ом нельзя выкинуться из конструкции for (;;) switch () { ... } потому что это слово одинаково как для выхода из for (;;) так и из switch () {} приходится чесать правой лапой за левым ухом. 1) мне не нравится, что в определении функции нужно писать f (int x, int y) и нельзя просто f (int x,y) 2) мне не нравится, что можно написать for (;;) { вместо for (; true ;) { и нельзя while () { вместо while (true) { 3) мне не нравится, что если в for (;;) в круглых скобках до первой запятой объявляется переменная - for (int i;;) - то туда уже не засунуть других выражений, типа - for (i=6, j=0, k=666;;) пока всё :-)) |
|||
|
||||
RAN |
|
||||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
А можно только ругать? А оспаривать и хвалить?
Ну, всё равно молчать не умею ![]() Насчёт break Я об этом тоже думал. И мне хотелось бы, чтоб в дополнении к break существовал бы оператор, условно назовём его block <имя> {...}. Чтоб возможно было такое:
Наличие имени у блока позволяло бы выходить из вложенных блоков. Имена были бы локальны, т.е. действовали лишь в пределах блока. И никаких конфликтов. Просто бы решалась проблема выхода из вложенных циклов
Вот такая идея ![]() P.S. Я подсел на C конкретно. С - лучший язык ![]() |
||||
|
|||||
p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
RAN - идея насчет блоков с точки зрения компиляции не очень удачна, так же как и простые переходы (не знаю, есть ли они в C, но в паскале это были goto <label>), т.к. это нарушает структуру программы...
-------------------- С уважением, г-н Посол. |
|||
|
||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Есть goto:метка
Почему это интересно? По современным представлением уровень программы понижается с каждым оператором goto (причем не только C, но и любой другой). Существует теорема (или что-то подобное, названия не помню), что любую конструкцию, использующую операторы перехода можно переписать без них (что кстати правда) ![]() block.....break также удовлетворяет этим понятим, как и while....break, for....break и т.п. А мне не нравиться, что при объявлении функции значения параметров по умолчанию всегда должны стоять последними, а при вызове такой функции, если мне надо передать последний параметр, то я вынужден и прописывать все предыдущие перед ним. Это серьезное препятствие при позднем совершенствовании кода, кода скажем мне необходимо в функцию добавить еще один параметр не имеющий default-значения, то приходиться весь код вызовов этой функции переписывать (ну либо искать более удобные пути). |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
ОЧЕНЬ НЕ НРАВИТСЯ путаница с .h и .cpp - с точки зрения пространства имён (что откуда будет видно, если поочередно подключать "H к CPP", "CPP к CPP", "CPP к H" и "H к H"
![]() ![]() -------------------- ![]() |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
CPP forever !
![]() ![]() ![]() setq, твоя третья проблема может быть разрешена так : for (int i=6, j=0, k=666;;) А вот мне бы хотелось вложенных функций - как в Паскале. А также того, чтобы при объявлении переменных класса можно было бы указывать инициализатор : class MyClass { int cnt = 0; }; Да, неплохо еще бы иметь возможность делать макросы с одним именем и различным числом параметров, как это можно для функций. Ну и вообще, добавить всяческой функциональности препроцессору. Вот, например, хорошо бы ввести переменную времени компиляции __FUNCTION_NAME__ , чтобы можно было выдавать диагностику типа printf("Ошибка ... в функции %s",__FUNCTION_NAME__); А еще поддерживать двоичный формат : long i = 0b10011100011000111000001100000110; И еще - чтоб можно было делать switch по переменной любого типа : switch (str) { case "King": ... case "Crimson": ... } switch (d_value) { case double(1) : ... case double(1.5) : ... } И чтоб как в Паскале можно было в switch'е указывать диапазон : switch (i) { case 1 .. 3: ... case 4: ... } И чтобы можно было переопределять операторы с двумя параметрами. Типичный пример - operator[][] для обращения к элементам матрицы. И чтобы typeof включили в стандарт. Фу, блин, расписался... Все же C++ - лучший язык программирования ! Это сообщение отредактировал(а) Crait - 27.9.2003, 14:50 |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
много того, что хотелось бы видеть в C++ (по крайней мере мне), есть в Delphi (точнее в Object Pascal):
1. properties 2. dcu - объявления и реализации находятся в одном файле 3. уже упоминавшееся (int x,y) 4. div и /, а не просто / - чтоб всегда было видно дробноеделение или нацело Это сообщение отредактировал(а) maxim1000 - 27.9.2003, 15:22 -------------------- qqq |
|||
|
||||
GanZaleZ |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 41 Регистрация: 15.7.2003 Репутация: нет Всего: нет |
Эх человеки ! Как грили Пионеры - "Мы не ищем лугких путей"
Так что если бы да кобы то С++ превратился бы в PHP и не нужно бы было обьявлять какого типа переменная ! ))) но это было бы уже смешно ! А может вообще зачем чтото писать ? Вышел бы Visual C# какойнить 9 версии , и чтобы там вам Вообще ниче писать не надо было , мышкой поводил , поколдовал , и все ! Хе хе хе Есть конечно траблы ! где не без них ! Но мне всерафно кажется что это обсуждать - это как обсуждать РУССКИЙ язык ! Вот я фсеже не пойму почему слово КОФЕ мужского рода ! )))) |
|||
|
||||
Fantasist |
|
||||||||||||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ничего подобного! Во-первых, с точки зрения структуры, break и continue реккомендуется использовать как можно реже. Во-вторых, в while, do и for эти операторы прерывают выполнения в границе одного блока и вполне понятно какого. А конструкция:
ничем не отличается от:
Так что и выдумывать ничего не надо.
Хе, ну ты сказанул. По другому даже теоретически нельзя, так что эта претензия не в какие ворота не лезет.
Используй перегрузку.
Так так оно уже и есть. Ничем от паскаля не отличается. Разница только в том, что в Паскале есть тип строка, а в С++ нету.
Действительно, что его обсуждать - все равно мы им не пользуемся. -------------------- Волны гасят ветер... |
||||||||||||||
|
|||||||||||||||
maxim1000 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
"теоретически нельзя": не стоит бросаться такими выражениями, их еще нужно доказывать... или опровергать ![]() представим себе, что при вызове фунукции вместе со значениями можно писать имя параметра (по-моему, я этовидел в VB или еще в каком-то бейсике) тогда вполне возможно указать любое подмножество параметров, а остальные оставить по умолчанию P.S. Хотя лично мне такое бы не понравилось... -------------------- qqq |
||||
|
|||||
setq |
|
|||
Unregistered |
Fantasist <<Действительно, что его обсуждать - все равно мы им не пользуемся>>
:-) |
|||
|
||||
p0s0l |
|
||||||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
И к чему это сказано ? Си - ЯВУ, зачем понижать уровень с помощью goto ? Я же говорил, что такие конструкции как block ... break и goto нарушают структурность, иерархичечность, что присуще ЯВУ, а не низкоуровневым языкам... Конечно, можно пользоваться goto, что я и делал, когда начал прогать, но сейчас я уже непредставляю, куда можно сунуть goto...
А вот если выход был бы за пределы внешнего блока, то тут могли бы появиться некоторые неувязочки, т.к. вначале каждого блока может выделятся память или запоминаться в стеке регистры (соответственно в конце блока регистры восстанавливаются) - тогда для организации выхода из двойного блока пришлось бы генерить специальный код для восстановления регистров и памяти.
Может я что-то не понимаю, но почему нельзя сделать такие вызовы: func1(,,,,,2.434); Т.е. первые параметры по умолчанию ?...
К слову: в Паскале нельзя делать case по строковым переменным (и по float тоже), можно только по целочисленным или перечисляемым типам... -------------------- С уважением, г-н Посол. |
||||||||
|
|||||||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
2 Fantasist
Ты не прав, что в switch'е можно использовать переменную любого типа. Попробуй скомпилировать хотя бы следующее : int f1 (double Value) { switch (Value) { case double(1): return 1; case double(1.5): return 2; } return 3; } |
|||
|
||||
Fantasist |
|
||||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Вот именно тем и нарушает, что это безусловный выход. Я знаю одного человека (знаю, конечно, сильно сказано) который ругает своих подчиненных за использование более одно return в функции. Ну, ругает, может, сильно сказанно, но очень не поощряет. Почему? Все из-за той же структуры. И смысл break'a и return'a не совсем совпадают. После break'а еще код может выполнятся в данной функции - после return'a нет. Про continue я вообще молчу. Видал я с ним такое! ![]()
Да, ошибся. Теоретически все возможно. Можно ключевое слово ввести, типа default_value. Только, конечно, не в С++. Такая штукенция совсем не в духе детерминированного С++. Да и не думаю, что это бы что-то принесло. Сделали бы первый параметр по умолчанию возникли бы другие проблемы. Неговоря уже о том, что читать такие программы было бы еще тяжелее.
Ну так я и говорю, ничем от паскаля не отличается. ![]() -------------------- Волны гасят ветер... |
||||||
|
|||||||
Vyacheslav |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Остальное все, по моему, не стоит и обсуждать. -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
Vyacheslav |
|
||||||||||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
[
Если очень хочется. можно использовать локальные классы-функтуаторы.
Макросы не являются принадлежностью ООП, являются наследием С и чрезмерное их использование - плохой стиль.
Как правило, это решается в конкретных компиляторах Например, в С++Builder имеются подобные макросы:__FILE__, __FUNC__, __LINE__, __DATE__
Зачем?
-------------------- С уважением, Вячеслав Ермолаев |
||||||||||||
|
|||||||||||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
2 Fantasist
О да, от Паскаля оно не отличается - подобная функциональность отсутствует и в нем и в CPP. А значения с плавающей точкой сравнивать все - таки можно - если осторожно ![]() void f1 (double Value) { if (Value == 1) do_something(1); else if (Value == double(1.5)) do_something(2); else do_something(3); } ....... f1(1); f1(1.5); f1(2); будет работать всегда. Что касается сравнения строк (и других типов данных), необязательно делать его "побайтно". Бинарный поиск в отсортированной таблице - весьма эффективен. Кстати, насчет таблиц. Реально, многие (извиняюсь, некоторые, два из двух) компиляторы, проверенные мною на этот предмет, реализуют switch с небольшим числом вариантов как последовательность проверок по типу if. И ваще, язык высокого уровня - на то и служит, чтобы не грузить программиста подобной рутиной. ;) 2 Vyacheslav Спасибо насчет информации о __FUNC__ . Что же касается кода switch (i) { case 1: case 2: case 3: ... break; case 4: ... } - оно понятно; а если поддиапазон 1..100 ? Насчет локальных классов - тоже понятно, но как-то оно через ж... Да и были проблемы с этим - уже не упомню, какие. А препроцессор и макросы - вещь хорошая (IMHO), если пользоваться ею умеренно. И вместно. Хоть даже и не согласуются они с парадигмой ООП. Когда оптимизируешь по скорости критические участки кода - бывает, уже и не до ООП. Структурность же при (разумном) использовании макросов сохраняется. Шаблоны (template) в подобных случаях не всегда применимы. Кстати, хотелось бы еще иметь возможность пошаговой отладки тела макросов (как функций). Впрочем, это пожелание - не в отношении стандарта языка, а по поводу конкретных реализаций сред программирования. Это сообщение отредактировал(а) Crait - 29.9.2003, 18:55 |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Так и знал, что кто-нибудь предложит. Забыл в своём топике написать. Исключения - это и есть исключения. Смысл их в том, при нормальной работе ни одно исключение вызываться не должно. А вариант Vyacheslav'а - это скажем так, маленькая хитрость. Я против такого применения. Тем более, что некоторые среды будут останавливать выполнение программы с сообщением о произошедшей исключительной ситуации. Но я тут о другом подумал. Тут говорили, что нельзя вводить возможность выхода из вложенных блоков. А try ввели в стандарт и ничего. Все понимают и легко читают. Я считаю, что goto плохо применять, потому как не известно куда он выбросит. А break выходит за пределы блока. |
|||
|
||||
Vyacheslav |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Crait
Настоятельно делать этого не рекомендую ![]()
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Эт понятна. Я ж говорю - если осторожно ;)
Это сообщение отредактировал(а) Crait - 29.9.2003, 18:52 |
|||
|
||||
Fantasist |
|
||||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Ага, пока кто-нибудь не вызовет эту функцию со значением полученным кодом типа приведенного Vyacheslav'ом.
Обязательно. Бинарный поиск, хеш-таблицы - это методика храниния и поиска данных, и там действительно не всегда приходиться сравнивать строки, но сравниваются они только побайтно. Да и в любом случае процесс длительный. Хотя, конечно, switch выглядит более удобочитаемо, чем куча if... else'ов. С этим согласен. -------------------- Волны гасят ветер... |
||||
|
|||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Кому не нравится Си - пусть говорит об этом на сишных конференциях высшего уровня. Там многоопытные специалисты примут или не примут предложения.
Есть еще вариант: написать свой собственный компилятор и играть с ним, сколько душе угодно. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
Crait |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Спасибо, Peter, за ценные советы.
|
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Модератор: Я понимаю, что тема располагает к флейму. Но последнии два топика - это уже слишком. Прошу не продолжать в этом направлении. Всё равно буду удалять.
|
|||
|
||||
Yujen |
|
|||
Unregistered |
А ты не слышал такую поговорку: "Плохому танцору всегда ЯЙЦА МЕНШАЮТ"
![]() Я вот например DELPHI видел всего два раза в жизни, и не понял как там и что там, хотя в Turbo Pascal'е писал когдато (в древние времена, в эпожу MS-DOS), и что я по твоему должен на каждом углу орать, что DELPHI это [censored33! Пожалуйста, соблюдайте элементарные правила приличия при общении на форуме] отстой Borland MUST DIE MSVISUAL C++ FOR EVA. Нет парень ты в себе разберись, а потом уже что-либо охаивай, напиши для начала какой-нибуть простенький интерпретатор, дай людям поюзать, вот тогда и только тогда ты поймешь, что это такое: писать... А обделать можно все, что угодно. Обделать легко, отмыться трудно |
|||
|
||||
setq |
|
|||
Unregistered |
:-)
это в чей адрес, интересно? по поводу... Crait <<setq, твоя третья проблема может быть разрешена так : for (int i=6, j=0, k=666;;)>> ...не получится для for (int i=6, double j=7.7, char *s=0;;) такие дела :-( |
|||
|
||||
mr.DUDA |
|
||||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
ГА !!! получится, если делать вот так:
такие дела ![]() ![]() ![]() -------------------- ![]() |
||||
|
|||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
2RAN: по-моему, мое сообщение не было оффтопик. Правда, я вместо того, чтобы поругать язык, высказал свое мнение об участниках форума. Насмотрелся уже на докторов наук, которые ни в зуб ногой даже в "своей" теме.
Учиться надо!!! А на конференциях высокого уровня, я полагаю, не чайники сидят, а многоопытные соображающие мужики. -------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
Vit |
|
||||||||||||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Модератор: Кому, что и где говорить указывать не надо. Не маленькие - сами разберёмся! Вас не устраивает наш уровень - пожалуйста, мы никого не держим! Идите на "сишные конференции высшего уровня". Зачем Вы тогда здесь отвечаете? Если Вам не нравится то что здесь говорится - вам надо обратится к модератору, и он уберёт замечания не соответствующие правилам форума, а Вам никто права распоряжаться на форуме хозяйской рукой, указывая кому и что говорить, не давал. Не надо подменять администрацию. Кроме того среди тех кто высказывался никто не сказал, что ему не нравится C.
Модератор: Знаете, у нас свои специалисты есть. Реклама других форумов категорически запрещена. Читайте правила. Нам не требуется чтобы кто-то принимал или не принимал наши возражения. Здесь люди обмениваются своим мнением, и для этого не требуется принятие кем либо каких-то предложений. Вы нас наверное с какой-то другой организацией спутали!
Модератор: Вы сделали 3 ошибки! 1) Язык C/C++ никто не ругал. Были высказаны мнения по поводу того, что в этом языке кому-то не удобно, или что бы он хотел иметь. Замете, ни один из участников дисскуссии не ругал язык. Указывали на недостатки - да, сравнивали с другими языками - да, ругать - нет! Впрочем тема, бала несколько одиозно озаглавлена - это исправлено, но к чести участников форума - никто до ругани в адрес C не опустился. 2) Высказывать личное мнение об участниках форума категорически запрещено! См. правила форума. 3) Переход с обсуждения темы на обсуждение обсуждающих - есть офтопик. См. правила форума.
Модератор: Это вы о тех аксакалах которые сидят на "на сишных конференциях высшего уровня"? Так мы туда и не ходим! Зачем они нам!
Модератор: Да, причём многим надо учиться языку С++, а участнику под ником "Peter" надо прежде всего учится уважению собеседников, уважению чужого мнения, умению внимательно читать и понимать смысл прочитанного и элементарной вежливости и культуре общения, по-видимому Peter пропустил детский сад и первые 3 класса школы, где учили таким простым вещам...
Модератор: Да пусть сидят где угодно! Модератор: Я снизил репутацию участника Peter, объяснения вы можете найти в таблице рейтингов, а аргументы описаны здесь. Обращаясь к Peter, хочу сказать, что вы умудрились в 2х коротких сообщениях многократно нарушить правила форума, оскорбить участников форума и администрацию форума. Повторные действия в этом направлении могут привести к анулированию Вашей учётной записи и блокирование IP адресов Вашего провайдера для доступа к форуму. Обжаловать мои действия, как и действия модераторов можно в специальном разделе "Обсуждение форума" http://forum.vingrad.ru/index.php?act=SF&f=27. Продолжение этой дисскуссии здесь будет рассматриваться как повторное злостное нарушение правил форума. Причём не важно, кто будет продолжать обсуждение. Здесь обсуждаем - недостатки, недочёты языка C/C++ и то что Вам лично в этом языке не хватает для полного счастья. Меня, модераторов и Peter'а продолжать обсуждать здесь КАТЕГОРИЧЕСКИ ЗАПРЕЩАЕТСЯ! -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||||||||
|
|||||||||||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: нет Всего: 207 |
Модератор:
2 setq - осторожнее в названии темы. Вы всё правильно написали по поводу возможности недостатков языка C, и обсуждение может быть интересным, но заголовок темы таким быть не должен! Заголовок я исправил, не обессудте, надеюсь теперь вопросы по поводу корректности ни у кого не возникнут. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
Вит, подписываюсь под каждым твоим словом адресованным Peter'у.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
mike_prog |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 88 Регистрация: 27.9.2003 Репутация: нет Всего: 1 |
А по-моему один единственный недостаток - это его тупой компилятор и синтаксис. Вот в PERLе синтаксис удачнее.
|
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 17 Всего: 110 |
Сказать, что компилятор тупой, - не сказать ничего. Желательно было бы указать, по сравнению с чем он тупой.
Если по сравнению с тем, как профессиональный человек пишет на ассемблере, то полностью согласен (я имею в виду качество кода, а не время разработки), а если по сравнению с другим компилятором, то хотелось бы услышать пример для сравнения (надеюсь, не Perl имелся в виду ![]() А синтаксис - дело привычки Хотя в некоторой степени я с этим соглашусь: мне кажется, что он излишне символичен. Намного приятнее писать mod вместо % (более читабельно), да и записи типа while(*s1++=*s2++); я предпочитаю заменять на
-------------------- qqq |
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Синтаксис и, прежде всего,"скобки и пробелы" - это та самая мощь C++. Как раз это я и обожаю. И мне иногда плакать хочется, когда читаю что-то типа: "это было причиной множества ошибок и в C# этого нет". Жуть. Это у кого были ошибки? У новичков? Верните сквозное выполнение в switch, опрератор delete и т.д.
![]() |
|||
|
||||
Kefir |
|
|||
«Hakuna Matata» ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1878 Регистрация: 25.1.2003 Где: Tampere, Suomi Репутация: нет Всего: 87 |
знаете, по моему C++ язык более чем хороший. возможности просто неограниченные. я начинал с етого языка и теперь никаких неудобств не вижу. C# я в глаза не видел, но наслышан о нём как о VB: Second Edition. Ну да ладно. Не буду удаляться от темы. 4то касаетса компилятора - ползуюс VC++6 и очень даже доволен. не думаю, что борланд силно хуже или лу4ше.
|
|||
|
||||
RAN |
|
|||
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Мне в борланде фишка нравиться. Когда работаешь с файлом cpp, то соответствующий ему h можно увидить, переключившись закладкой внизу листа (как в Excel). А вверху закладки всех открытых unit'ов. Удобно.
|
|||
|
||||
DENNN |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
ДОстаточно поставить add-in к VS6.0 WndTabs и настроить автоматическое открытие заголовочного файла. (Ближайшая ссылка на него на RSDN.ru)
Вот и очень плохо. Для читабелно mod вместо % только потому что ты плохо помнишь арифметические операции языка. Тоже отностится и к твоему коду ![]() |
||||
|
|||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
вот мне не нравится что нету вставки бинарного файла
![]() ![]() ченить типа include 'main.jpg' -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Ну и что после этого делать? Те же ресурсы получаются ![]() |
|||
|
||||
Guest |
|
|||
Unregistered |
1.1. Мои сообщения были адресованы setq.
1.2. Темы достоинств или недостатков языка Си++ - это не вопрос жизни и смерти. Вывод: прошу прощения у setq за чрезмерную резкость. 2.1. Читал книгу Чарльза Калверта "Программирование для Win32" (название привел неточно) - он описывает, как обсуждаются предложения по улучшению языка, рекомендации по безошибочному программированию и т. д. 2.2. На сайте http://home.perm.ru/~strannik/ можете найти проект - человек создает собственный компилятор Си++/Паскаль/Модула-2. Синтаксис - какой ему понравился, такой и делает. 2.3. То, что кому-то может не нравиться в языке - либо эта вещь рассчитана на профессионалов, а не на учащихся, либо там были какие-то проблемы с созданием компилятора, либо оно реализовано в одном компиляторе, но его нет в другом. |
|||
|
||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Был глюк. Сообщение выше - мое.
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
knave |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 320 Регистрация: 6.3.2003 Где: Санкт-Питербург ( Россия) Репутация: 1 Всего: 5 |
-------------------- С наилучшими пожеланиями !!! |
|||
|
||||
DENNN |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Довольно интересно читать ![]() ![]() |
|||
|
||||
Ars |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 325 Регистрация: 28.8.2003 Где: Московская обл. Репутация: 2 Всего: 2 |
-------------------- Есть многое на свете, друг Горацио, С чем очень долго можно прое..! |
|||
|
||||
Peter |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 771 Регистрация: 28.7.2003 Где: Ставрополь Репутация: -1 Всего: 1 |
Бьярне Строуструп по поводу принятого в 1994 году стандарте ANSI C сказал: "Он гораздо ближе к идеалу, чем то, что было до него".
-------------------- всё, что делаете, делайте от души, как для Господа (Послание апостола Павла колоссянам, 3:23). |
|||
|
||||
Vyacheslav |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 9 Всего: 59 |
Небольшая информация. Трехгодичный мораторий на внесение измений стандарта окончился и сейчас идет работа по внесению изменений. Информацию о текущем положении дел можно подчерпнуть отсюда
http://std.dkuug.dk/jtc1/sc22/wg21/docs/pa...402.html#hickey http://www.cuj.com/documents/s=8890/cujexp0310sutter/ http://www.cuj.com/documents/cujcexp0308sutter/ Лично меня порадовало внесение в стандарт(пока в черновной вариант) шаблонного класса function, в частности облегчающего работа с указателями на метод класса Например.
Замена __closure от Borland выглядела примерно так
-------------------- С уважением, Вячеслав Ермолаев |
||||
|
|||||
BuBu |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 6.11.2003 Репутация: нет Всего: нет |
Fantasist BRAVO:) I krome vsego vi je sebe predstavljajete chto napisannij kod doljen kto-to i chitat`, i po semu kak vi sebe predstavljajete ser`jeznie (imeetsja v vidu razmer koda) swich, if i drugie s bol`shim kolichestvom break-ov ili continue-ov, nu tut i zrenie isportit` mojno:) GOD BLESS C++ jazik v kotorij sam je sposoben ispravit` vse svoi nedostaki:)
|
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Не могу сказать, что существует много недостатков, но пару предложений появляются, когда сравниваешь Си++ с другими языками. Например:
|
|||
|
||||
p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Не вижу недостатка в этом. Это даже к лучшему. Например, вызываю функцию 1 (при этом она в try..catch), та в свою очередь использует сотни функций, каждая из них может выкинуть исключение - и что, каждый раз ставить try..catch ? И еще в каждом catch ставить throw, чтобы основная прога (которая вызвала ф-ию 1) тоже поймала исключение ? Какая-то ерунда... Программист - не дурак, сам знает, когда и где ему ожидать исключений, а специально "тыкать носом" его, по-моему, абсурд.
А кто мешает ? Асм-вставки давно не новинка... -------------------- С уважением, г-н Посол. |
||||
|
|||||
achmed |
|
|||
Unregistered |
по поводу switch, было бы неплохо что бы его расширили до испосльзования
всех пользовательских типов реализующих operator==, еще хотелось бы безимянных функций (лямбда ф-ий, как boost::lambda), по поводу обзательных обработок исключений, java прграммы буквально загромождаются блоками try..catch. хорошо бы сделать перегрузку функций как в C#, т.е. когда перегружаешь ВФ, то пишешь ключевое слово overflow (ну или какое другое), т.е. если ошибся с сигнатурой, что часто бывает с C++, то компилятор выдаст соотв. ошибку. шаблоны сканера и парсера тоже не помешали бы (boost::tokenizer, boost::spirit) да, механизм сигналов и слотов, для GUI приложений очень удобно, реализовано в Qt, там они транслируются в C++ код. |
|||
|
||||
sergejzr |
|
||||||||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
2 p0s0l
Носом тыкать обязательно, поскольку иначе юзер вообще может быть не в курсе какие исключения могут при вызове функции полететь. В Яве механизм прекрасно работает. 2 achmed
2 p0s0l
2 achmed
Ребята, спасибо за интересную раскладку! |
||||||||
|
|||||||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: 4 Всего: 41 |
Здесь я бы согласился, но это пока не отвечает духу С++. После недолгой работы с Java я понял что фича очень стоящая. Она заранее заставляет задуматься о грамотной иерархии обработки ошибок, да и действиетльно выглядит гораздо нагляднее. Всем четко известно, что ловить, и все обязаны это ловить. Повышает стабильность. Но все-таки это не в стиле языков подобных С++. Даже если взять только исторические причины, то очень много старого кода оказалось бы невозможно использовать при добавлении такой фичи. Java все-таки отдельный разговор (был, во всяком случае, пока не появился С#) . -------------------- Волны гасят ветер... |
|||
|
||||
sergejzr |
|
|||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
К сожалению это действительно так! Примерно как с телевизорами. Eщё много лет будем юзать ужасные PAL/SECAM, хотя современная технология позволяет значительные расширения разрешаюшей способности, итд,итп. Вообще изменение стандарта дело нелёгкое из за хвостов. А ЯВА была написана с нуля и к счастью концептуально, хотя казалось бы главной задачей был именно интероперабилитет. Совершенно согласен, что не надо из Си++ делать ЯВУ, но кое чему стоило бы поучиться. |
|||
|
||||
achmed |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 150 Регистрация: 12.4.2004 Репутация: нет Всего: нет |
стандарт предусматривает спецификацию исключений, но не обязывает реализовывать.
http://www.codeproject.com/useritems/stdexceptionspec.asp |
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 25 Всего: 232 |
Если будет добавлена поддержка свойств на уровне синтаксиса языка - это будет просто рулез !!! Под свойствами я имею ввиду:
("новые" ключевые слова выделены курсивом) В C# и ManagedC++ это действительно рульная фича, вот если бы в стандарте С++ было такое ![]() -------------------- ![]() |
|||
|
||||
Hearse |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 13.1.2004 Репутация: нет Всего: нет |
По поводу использования MMX(SSE) - было бы приятно, если бы в STL включили стороннюю библиотеку типа Intel Small Matrix Library.
По поводу перегрузки с помощью overload, в старых версиях компиляторов оное ключевое слово было, однако отказались, посчитав избыточным. Пусть лучше компилятор выводит статистику для перегруженных функций типа func1 - n overloads func2 - m overloads и т.д. |
|||
|
||||
sergejzr |
|
||||
![]() Un salsero ![]() Профиль Группа: Админ Сообщений: 13285 Регистрация: 10.2.2004 Где: Германия г .Ганновер Репутация: 19 Всего: 360 |
Ну так меня почти устраивает. Вот только жаль..
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |