Re[8]: Почему настоящие программисты избегают C++
От: Erop Россия  
Дата: 20.05.05 06:19
Оценка: +1 -1
Здравствуйте, AVC, Вы писали:

AVC>См. страничку:

AVC>http://www.inr.ac.ru/~info21/blackbox/disciplina/arr_bounds_checks.htm
AVC>Вот выдержка:

Вопрос: Что мешает Майкрософт компилировать Windows XP с включенной опцией контроля выхода за границы массивов?
AVC>Ответ: Неадкватность языков и компиляторов, использованных в написании операционной системы (C и C++).


Мне кажется, что эта цитата доказывает степень адекватности того самого представителя науки, который школе
Всё-таки C разработали именно дл янаписания операционки. Трудно найти более подходящие языки для этой области
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Почему настоящие программисты избегают C++
От: Erop Россия  
Дата: 20.05.05 06:34
Оценка:
Здравствуйте, d Bratik, Вы писали:


DB>Вот так думает каждый здравомыслящий человек, но увы, переменная i не имеет знака, следовательно значение -1 для нее автоматически преобразуется в 4 млрд... и цикл продолжается.


Я, кстати, согласен что в STL много косяков всяких. Сам язык намного лучше этой библиотеки.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Почему настоящие программисты избегают C++
От: Erop Россия  
Дата: 20.05.05 06:37
Оценка: +1
Здравствуйте, d Bratik, Вы писали:

N>>int a = 2113929216;

N>>int b = 2113929210;


DB>Решение состоит в том, что система должна генерировать исключение (exception) при переполнении. Отсутствие этой возможности я забыл добавить в качестве 7-го пункта в списке ошибок проектирования языка.


Такая возможность в C++ есть. Роди себе класс "целое с проверкой переполнения" и будет тебе счастье.
Проблема в том, что этого не очень поддерживает железо. А всё + на переполнение проверять всё-таки жалко.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[11]: Почему настоящие программисты избегают C++
От: Erop Россия  
Дата: 20.05.05 06:46
Оценка:
Здравствуйте, Kubera, Вы писали:

K>ИМХО, твой пример со средним арифметическим неудачный. Что же касается знаковых индексов в векторе, то они нецелесообразны по двум причинам:

K>1. дополнительная ошибочная ситуация с отрицательным индексом
Так это же хорошо! Типа лишняя проверка. Но вообще отоличие формальное, так как что отрицательный индекс, что большой положительный -- всё равно мимо массива Просто ошибки переполнения легче assert'ами ловить при знаковой арифметике.

K>2. размер массива уменьшается в два раза (по сравнение с таким же знаковым типом)

Да? И это где же стока памяти-то взять, под массив-то?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[9]: Почему настоящие программисты избегают C++
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 20.05.05 07:20
Оценка:
Здравствуйте, Erop, Вы писали:

E>Здравствуйте, d Bratik, Вы писали:



DB>>Вот так думает каждый здравомыслящий человек, но увы, переменная i не имеет знака, следовательно значение -1 для нее автоматически преобразуется в 4 млрд... и цикл продолжается.


E>Я, кстати, согласен что в STL много косяков всяких.

Например? Хоть один... Я знаю, причём реальные, а вы?
То что size_type беззнаковый, так в этом нет ничего удивительного — название типа внимательно прочитайте: тип размера... как много типов вы знаете, имеющих отрицательный размер? Кстати этот самый size_type — как правило всего лишь синоним типа size_t, который к stl не имеет никакого отношения, а по сути является для массивов в стиле C тем же самым, что и size_type для контейнеров stl...
Вот вы же не сокрушаетесть, что sizeof возвращает именно беззнаковый size_t... так почему же вам не нравится тип size_type, возвращаемый vector::size?
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[3]: Почему настоящие программисты избегают C++
От: AlexEagle Украина http://www.vik.oil
Дата: 20.05.05 07:40
Оценка:
Здравствуйте, AlexBS, Вы писали:

AE>>8. За жесткие ограничения на место описания переменных функции — между названием функции и началом блока

ABS>+ и допуск совпадения имен переменных и типов. т.е конструкция
ABS>var
ABS> Word : Integer;
ABS>вполне допустима. но, понятно, что работать с такой переменной будет крайне сложно

Привычка писать на с++ довела до:

Var
  hDC: HDC;


потом дошло что написал какую-то чушь для паскаля ...
Re[8]: Почему настоящие программисты избегают C++
От: ZevS  
Дата: 20.05.05 09:09
Оценка:
Здравствуйте, transglucator, Вы писали:

T>жена — Pascal

T>проститутка — C++
T>любовница — ?

Вирт — тесть
Страуструп — сутенер,
? — рогоносец

Re[3]: Почему настоящие программисты избегают C++
От: nataniel  
Дата: 22.05.05 02:59
Оценка:
Здравствуйте, d Bratik, Вы писали:

Простите, что я вставляю свои пять копеек, я всего 2 года как знаком вообще с понятием "программирование", я не смогу поспорить с вами о многих заморочках и тонкостях, но я подумал, что было бы, если бы я начал учиться на Делфи.
На самом деле, Делфи я в глаза никогда не видел, но слышал. Слышал, что чтобы заполнить комбобокс данными из базы, нужно ткнуть пальцем в базу, ткнуть в список, и он зальется сам. При этом чуствуешь себя идиотом, потому что не знаешь, что происходит внутри. Особенно, если что то не работает. Примерно я прочуствовал это, когда взялся за C# и положил на диалог DataGrid. Но я просто догадывался, что происходит, потому что делал то же самое на плюсах. А если бы я видел и работал только с Делфи? Смог бы я когда-нибудь решить нестандартную задачу?
Иногда складывается впечатление, что шарп — просто огромная оболочка над API. Я долго смеялся, когда через Рефлектор увидел, что MessageBox.Show () импортирует апишную функцию. Неужели им сложно было переписать ее с возможностью добавлением чекбокса, который часто необходим?

DB>Подозреваю, что Вы никогда не создавали на C++ развитого GUI. Все программисты на С++ как чумы избегают решения этой задачи. Они говорят, что это им скушно и неинтересно. Однако именно создание пользовательского интерфейса является наиболее важной, сложной и действительно интересной проблемой при создании системы. Именно пользовательский интерфейс определяет используемые алгоритмы и структуры даннных, а не наоборот. И именно для решение этой самой насущной задачи меньше всего подходит С++.


Может, с годами и опытом проходит желание создать свой контрол, написанный с нуля или почти с нуля (наследуемся от CWnd) ?
А что легче, быстрее, понятнее etc — написать, например, всплывающую панель, как в VS .NET (или любой другой нестандартный контрол) — написать на С++ или на Делфи? Я совсем недавно сделал свое дерево, у которого единственное сходство со стандартным в том, что это дерево. Я получал удовольствие от того, что понимаю до конца, что написано, и что могу манипулировать данными и вообще языком, как мне захочется.

C>>Исходя из своего опыта: у настоящих программистов другие проблемы.


DB>Интересно, какие же?


черт, даже я понимаю, какие...

ps
где-то на РСДН я видел пост, примерно процитирую:

С++ — это как шлюха. Можешь делать с ней, что хочешь, что если что-то подцепишь, то это твоя вина. ты имеешь ее, она тебя, вы квиты и довольны
C# — как жена. Шаг влево, шаг вправо — расстрел. На тебя одевают огромный презерватив, и перед каждой, простите, фрикцией, ты думаешь, а позволят? Но зато когда узнАешь ее эрогенную зону — позволено все. И ты спокоен и удовлетворен

и добавлю от себя:
C++ Builder — как 18-летняя девочка. Она готова на классику, и только. Жесткие рамки для фантазии. Что-то подцепишь — все равно твоя вина — она тебе не поможет выкрутиться, даже морально, а еще тебя обвинит. Чтобы развести ее на что-то кроме миссионерской, ты гробишь кучу времени, нервов и сил. Легче послать и трахнуть шлюху. Или расслабиться с женой... после того, как накувыркался со шлюхой
Re[13]: Почему настоящие программисты избегают C++
От: AVC Россия  
Дата: 22.05.05 10:16
Оценка:
Здравствуйте, ansi, Вы писали:

AVC>>А вот для Си/Си++ это невозможно: там передается не массив, а указатель. Что не одно и то же.

A>Дык и тут тоже передается указатель и длина массива (в неявном виде). А Си++ такое и не надо. Проверки нужны только в отладочной версии, всё.

И откуда же, позвольте полюбопытствовать, возьмутся проверки в отладочном коде?
Или проверки и в отладочном коде не нужны?

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[8]: Почему настоящие программисты избегают C++
От: ZetRooT Россия  
Дата: 22.05.05 17:10
Оценка:
Здравствуйте, transglucator, Вы писали:

T>жена — Pascal

T>проститутка — C++
T>любовница — ?


тогда уж Java

"Если бы не было колобка, его следовало бы придумать..."

Re[10]: Почему настоящие программисты избегают C++
От: p_kolya  
Дата: 23.05.05 15:41
Оценка:
Здравствуйте, nixite, Вы писали:


N>положим захотелось нам искать среднее двух чисел и написали мы функцию:

N>int kaka (int a, int b){return (a+b)/2;}

N>и всё вроде тип-топ, но вот тут сунули нам два числа (вполне корректных):


N>int a = 2113929216;

N>int b = 2113929210;
Функциб kak можно переписать так:
int kaka(int a, int b){return ((a/2) + (b/2));}

Математика однако рулит не хуже Си с плюсами...и без плюсов тоже
Best regards, p_kolya [ http://p-kolya.narod.ru ] WinAmp сообщает: Rammstein — Links 2-3-4
Re[17]: :)))
От: Erop Россия  
Дата: 23.05.05 16:25
Оценка:
Здравствуйте, Amidlokos, Вы писали:
A>Уважаемый язвительный Верхний Ряд Клавиатуры!
Не обижай qwertyuiop! Он "верхинй ряд клавиатуры без квадратных скобок"
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[17]: Почему настоящие программисты избегают C++
От: Erop Россия  
Дата: 23.05.05 16:27
Оценка:
Здравствуйте, Amidlokos, Вы писали:
A>Уважаемый язвительный Верхний Ряд Клавиатуры! Во-первых, inline-код выполняется всё равно дольше одной операции сравнения. Во-вторых, на оптимизатор надейся, а сам не плошай. Может, я и правда так плохо знаю возможности современного оптимизатора, но я не стал бы давать гарантию, что он осознает необходимость вызвать size() один раз, особенно с учётом обращения где-то в цикле к тому же vec. Более того — оптимизаторов много. И более того — я бы не стал за счёт оптимизатора отвыкать думать.

А на читабельность всем уже и наплевать?
Я не очень понимаю для решения каких именно задач заточен STL.
Мне так кажется, что никаких. Такой классный универсальный всемогутер. Зато типа красивый.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[18]: Почему настоящие программисты избегают C++
От: Cyberax Марс  
Дата: 23.05.05 17:08
Оценка: +1
Erop wrote:

> А на читабельность всем уже и наплевать?

> Я не очень понимаю для решения каких именно задач заточен STL.
> Мне так кажется, что никаких. Такой классный универсальный всемогутер.
> Зато типа красивый.

Для любых Контейнеры в STL сделаны очень гибко, их можно использовать
почти под что угодно. А если сюда добавить еще и boost...

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 1.9
Sapienti sat!
Re[19]: что бы это значило
От: Erop Россия  
Дата: 23.05.05 19:27
Оценка:
Здравствуйте, Cyberax, Вы писали:
>> А на читабельность всем уже и наплевать?
>> Я не очень понимаю для решения каких именно задач заточен STL.
>> Мне так кажется, что никаких. Такой классный универсальный всемогутер.
>> Зато типа красивый.

C>Для любых Контейнеры в STL сделаны очень гибко, их можно использовать

C>почти под что угодно. А если сюда добавить еще и boost...

Для любых это тоже самое, что ни заточен ни для каких (КМК, разумеется)

Вот мне например, в моих задачах, тоже не хватает проверок на выход за границы массива.
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[3]: Почему настоящие программисты избегают C++
От: borka Россия  
Дата: 24.05.05 18:11
Оценка:
Здравствуйте, AlexBS, Вы писали:

ABS>На последок хотелось бы заметить про идиотский var в описаниях функций, где он зачастую просто мешает!


ABS>Например, ReadProcessMemory

ABS>
ABS>function ReadProcessMemory(hProcess: THandle; const lpBaseAddress: Pointer; lpBuffer: Pointer; nSize: DWORD; var lpNumberOfBytesRead: DWORD): BOOL; stdcall;
ABS>

ABS>Ну нахрена мне всегда(!!) заводить бесполезную переменную для параметра var lpNumberOfBytesRead: DWORD, когда она в 99% случаях просто ненужна!
ABS>А таких функций уйма!

В принципе можно написать:

ReadProcessMemory(..., ..., ..., ..., PDWORD(nil)^)

Re[11]: Почему настоящие программисты избегают C++
От: AVC Россия  
Дата: 24.05.05 23:55
Оценка:
Здравствуйте, p_kolya, Вы писали:

N>>положим захотелось нам искать среднее двух чисел и написали мы функцию:

N>>int kaka (int a, int b){return (a+b)/2;}

N>>и всё вроде тип-топ, но вот тут сунули нам два числа (вполне корректных):


N>>int a = 2113929216;

N>>int b = 2113929210;
_>Функциб kak можно переписать так:
_>int kaka(int a, int b){return ((a/2) + (b/2));}

_>Математика однако рулит не хуже Си с плюсами...и без плюсов тоже


Посчитаем по Вашей формуле среднее арифметическое , скажем, двух троек.
Получим:
(3/2) + (3/2) = 1 + 1 = 2.
Да, математика рулит, однако... Вон куда она Вас зарулила.

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[12]: Почему настоящие программисты избегают C++
От: Amidlokos Россия  
Дата: 25.05.05 07:18
Оценка:
Здравствуйте, AVC, Вы писали:

AVC>Посчитаем по Вашей формуле среднее арифметическое , скажем, двух троек.

AVC>Получим:
AVC>(3/2) + (3/2) = 1 + 1 = 2.
AVC>Да, математика рулит, однако... Вон куда она Вас зарулила.

Математика в данном случае и правда рулит. Только при вычислении надо скастовать во float.
WARNING: expression "to_be || !to_be" is always true
Re[2]: Почему настоящие программисты избегают C++
От: Sheridan Россия  
Дата: 25.05.05 07:57
Оценка:
Здравствуйте, SWW, Вы писали:

DB>>
DB>>for (std::vector<int>::size_type i = 0; v.size() - 1; ++i)
DB>>


SWW>А что это за чушь написал здесь настоящий программист?


мда... А про итераторы все позабыли? Или как?
std::vector<int>::iterator It = v.begin();
while(It != v.end())
{
    printf("%d \n",(*It));
    It++;
}

Поправьте меня если неправ...
[RSDN@Home][1.1.4][beta 7][458]
[FSOL — Papua New guinea (Hybrid mix)]
Matrix has you...
Re[13]: Почему настоящие программисты избегают C++
От: Sinclair Россия https://github.com/evilguest/
Дата: 25.05.05 09:45
Оценка:
Здравствуйте, Amidlokos, Вы писали:
A>Математика в данном случае и правда рулит. Только при вычислении надо скастовать во float.
Это ты знатно придумал. Сможешь оценить просад производительности, не заглядывая в Intel Optimization Guide?
... << RSDN@Home 1.1.4 beta 5 rev. 395>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.