Здравствуйте, VladD2, Вы писали:
VD>Написать качественный код на С пожалуй по сложнее чем на С++. Да и на С++ можно писать как на улученом С. Так что аргумент сомнительный.
Всё же лучше на С++ писать как на С++. Просто С++ действительно предоставляет программисту много возмножностей для совершения ошибок. В этом с ним врядли какой язык сможет конкурировать.
Тот же ассемблер — сложный, требует знания множества технических подробностей, необходимо запоминать множество необязательных мелочей, уходит много времени на написание казалось бы простейших вещей, но зато всё работает строго так, как того ожидаешь.
Ну, я думаю что если бы я высказался в духе "а вот все мои знакомые (умнейшие люди, кстати!) считают что технология SuperPuperWidgetsProXP — отстой" то был бы готов к тому чтобы отгрести кучу минусов — слишком мало конструктива в высказывании
IT>Тогда его надо было ставить автору топика. А вообще и ему не за что. Уж слишком часто стали ругать в последнее время плюсы, причём не только враги, но и доброжелатели.
А вот с автором топика я скорее согласен чем несогласен Он подымает действительно насущную проблему (которая в принципе присуща не только С++) — о том что один и тот же С++ код может нарожать абсолютно разный ассемлерный в зависимости от того что там и как перекрыто выше. Но имхо подходить к её решению надо иначе — кстати, Страуструп в "как я рожал ёжиков" эту проблему тоже подымает и предлагает это отдать на откуп инструментальным средствам. К примеру, продвинутое IDE может показать где и какие вызываются конструкторы-деструкторы у обьектов, какие операторы на самом деле перекрыты, какие операторы преобразования типов вызываются и т.д. и т.п.
IT>В экономике это можно было бы назвать кризисом, но в отличии от экономики пока путей выхода из этого самого кризиса не видно.
Ну насчёт кризиса — это чистая философия что считать кризисом а что нет. Не моя специализация, спорить не стану
Здравствуйте, eao197, Вы писали:
E>Вообще-то с памятью у меня не важно, поэтому могу в чем-то ошибиться, но с 1992-го года, когда я начал изучать и использовать C++ изменений в самом языке было довольно много:
<...список...>
Еще про появление inline-функций забыл сказать.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Зверёк Харьковский, Вы писали:
ЗХ>avvaпишет
ЗХ>
ЗХ>Следующие рассуждения в принципе мне кажутся очень простыми, но ни разу их не встречал.
[..skipped..]
ЗХ>Так вот, поэтому C++ — плохой язык.
[..skipped..]
ЗХ>медленно и неумолимо превращает программиста в шизофреника.
Работаю некоторое время в проекте, реализованном на чистом C + Java UI (около 5Mb С кода + Java примерно столько же), до этого всегда практиковался на С++ (в его истинном понимании — stl, исключения, безопасный код).
Как оказалось, поддерживать этот C код настолько трудно, как будто бы мы имели дело с 50 Mb С++ кода. Всюду эти указатели на неизвестный функции, переплетенные структурки, сырые указатели, непроинециализированные данные... вообщем кошмар. Тронешь тут, посыпится там.
Наше руководство уже приняло решение выкинуть этот C код на помойку и переписать все на С++. Без вских религиозных убеждений, внутренних комплексов, задетого самолюбия и пр... просто горький опыт заставил.
Здравствуйте, Left2, Вы писали: L>Насколько я помню раскладка QWERTY появилась для того чтобы замедлить скорость набора текста — уж больно быстро стирались деревянные молоточки. Киньте камень кто скажет что такая раскладка "вымучена временем". Просто продали достаточно много машинок с такой раскладкой — и всё, назад пути нет, слишком дорого пытаться победить стандарт.
Это миф, не имеющий ничего общего с реальностью. Читать здесь.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Sinclair,
S>Здравствуйте, Left2, Вы писали: L>>Насколько я помню раскладка QWERTY появилась для того чтобы замедлить скорость набора текста — уж больно быстро стирались деревянные молоточки. Киньте камень кто скажет что такая раскладка "вымучена временем". Просто продали достаточно много машинок с такой раскладкой — и всё, назад пути нет, слишком дорого пытаться победить стандарт. S>Это миф, не имеющий ничего общего с реальностью. Читать здесь.
Qwerty неэффективна, отсюда и миф (не вызывающий подозрения прямо скажем).
The key, so to speak, is in the keyboard design. Blackburn will type on nothing but the Dvorak keyboard ...
Очень легко обосновать преимущество недостатки QWERTY логически отсюда:
Problems with the Qwerty keyboard:
-- Of the nine most common letters in English (ETAOINHSR, in that order), only three are on home row (ASH), and only two, A and S, are home keys. Five (ETOIR) are on the upper row, and one (N) is on the lower row, making it especially difficult to press.
-- A disproportionate number of very common characters are found on the left side of the keyboard, giving the left hand a bigger workload. The common characters on the left (ETASRDCWGF) are 42.5% of characters in English, while those on the right (OINHLUMYP) make up only 32.6%.
-- ...
Наконец, самая крутая раскладка не Дворак, и уж тем более не Qwerty (хере)
' , . p y f g c r l Dvorak layout
a o e u i d h t n s 32129548
; q j k x b m w v z
q w e r t y u i o p Sholes' layout, with quote replacing /
a s d f g h j k l ; 59514344
z x c v b n m , . '
k , u y p w l m f c Best evolved layout
o a e i d r n t h s 28281895
q . ' ; z x v g b j
Здравствуйте, eao197, Вы писали:
E>-- отказались от ключевого слова override для перегрузки (имхо, оно еще описывалось в первом издании "Языка программирования C++");
Ошибся. Было ключевое слово overload, от него отказались, но в первом издании своей книги Страуструп его использовал.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
L>Хм.. Сейчас на дворе 2006-й — но я не вижу реальной альтернативы — покажите мне хотя бы один язык, который доступен (не "может быть портирован" — а реально доступен, здесь и сейчас) для всех платформ — начиная от стиральных машинок и заканчивая mainframe?
А толку от того что он портирован? Программа на С для Windows не будет в общем случае работать на стиральной машинке.
Платформы разные. Так что доступность языка на любой платформе имеет очень низкую ценность. Затраты времени на изучение нового языка программирования мизерны по сравнению с затратами времени на изучение новой платформы.
Здравствуйте, Зверёк Харьковский, Вы писали:
>Я всего лишь объявил переменную какого-то типа, написав "Typename varname;", но эта строчка может привести к вызову неизвестного мне конструктора, а за ним — кода сколь угодно, вообще говоря, сложности.
Ну и что ? А вызов функции в С не смущает ? По большому счету это то же самое. Вызов неизвестной (может быть) мне функции, а за ней когда сколько угодно. Если по F10 его проходить. Но есть еще и F11 .
>Я всего лишь применяю известный мне оператор к переменной — а он, оказывает, overloaded у этого класса, и черт знает что на самом деле там произойдет.
Вызов функции там произойдет и что будет — см. выше. Это просто иная форма записи вызова функции (метода)
>Я всего лишь вышел из функции, что может быть проще, написал }, а в рантайме на самом деле пошли плясать деструкторы всех автоматических объектов в этой функции.
И что ?
>И даже и не буду начинать говорить про copy constructor и прочие подобные прелести.
А зря. ИМХО как раз copy ctor — это лучшее, что есть в С++. Потому что он (да еще operator=) ставят именно под мой контроль создание объектов.
ЗХ>Так вот, поэтому C++ — плохой язык.
ЗХ>Он настолько много прячет за кулисами, чтобы навязать программисту режим работы "моя хата с краю": пиши свой код, не волнуйся насчёт того, что магически происходит вокруг него, всё хорошо, всё идёт по плану...
Не завидую тому, кто так пишет — на любом языке.
>И в то же время того же программиста заставляет следить за всеми malloc()'ами и new, рассчитывать ужасные иерархии наследования и дикие функции-"френды", не говоря уж о темплейтах. По сути дела, медленно и неумолимо превращает программиста в шизофреника.
Ну тогда все серьезное ПО в мире сделано шизофрениками. Или , по крайней мере, большая часть серьезного ПО.
В целом — несерьезно. Наивные рассуждения человека, который с С++ реально не работал.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Если ваша программа не способна утилизировать проц более чем на 1-2%, то вам стоит задуматься о своей профпригодности.
Нужно добавить условие: "Если ваша программа не способна утилизировать проц более чем на 1-2%, но при этом сильно подкачивает..."
Z>А толку от того что он портирован? Программа на С для Windows не будет в общем случае работать на стиральной машинке. Z>Платформы разные. Так что доступность языка на любой платформе имеет очень низкую ценность. Затраты времени на изучение нового языка программирования мизерны по сравнению с затратами времени на изучение новой платформы.
Не скажи, толк есть.
1. Есть довольно много базовых библиотек написаных на чистом C которые с минимальными усилиями прикручиваются на любую платформу — jpeglib, libzip, и т.д. Наличие таких вещей очень сильно облегчает (и удешевляет) разработку.
2. Наличие стандартизованного языка позволяет довольно большие части системы, не завязанные на платформу, тестировать и отлаживать на программерском PC. Это тоже порядком ускоряет разработку.
Ну и в целом наверное ноги у пунктов 1 и 2 растут из одного и того же места
Здравствуйте, Zuka, Вы писали:
Z>А толку от того что он портирован? Программа на С для Windows не будет в общем случае работать на стиральной машинке.
Смотря какая программа. Если программа не обращается к WinAPI, то почему бы и нет.
Z>Платформы разные. Так что доступность языка на любой платформе имеет очень низкую ценность.
Заблуждение.
Z>Затраты времени на изучение нового языка программирования мизерны
Еще одно заблуждение.
Z>по сравнению с затратами времени на изучение новой платформы.
Если платформа поддерживает стандарт POSIX, то ее изучение может существенно упроститься.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, Sheridan, Вы писали:
VG>>>Что такое предмет первой необходимости?
I>>- GUI S>vcl I>>- GUI S>qt I>>- GUI S>gtk I>>- Database access S>qt I>>- XML S>qt сотоварищи
Забавно, но за много лет писанины на плюсах, я ничего из этого не использовал Интересно как другие. Я, конечно, понимаю, что незнание не освобождает, но, с другой стороны, талант всегда пробьёт себе дорогу, а об этих талантах мне не часто приходилось слышать, а видеть я их вообще никогда не видел. Всё больше приходилось пользоваться более популярными, но менее стандартными и переносимыми вещами, как MFC, ADO, MSXML.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, Left2, Вы писали:
E>>Ошибся. Было ключевое слово overload, от него отказались, но в первом издании своей книги Страуструп его использовал.
L>Что-то я не помню такого в "как я рожал ёжиков"... А почему отказались — он не говорил?
Да потому, что и без него все замечательно работает
Его просто посчитали избыточным.
Кстати, под "как я рожал ежиков" понимается "Дизайн и эволюция языка C++", да?
Жаль, но я не смог эту книгу приобрести И в peer-to-peer сетях не нашел в электронном виде (если не считать варианта то ли на китайском, то ли на японском языке, в иероглифах).
SObjectizer: <микро>Агентно-ориентированное программирование на C++.