deninok писал(а): ↑01.11.2007 14:40
Такая форма записи функции main() неправильна в С++, и никогда не была правильной. Так не нужно писать - и все.
Вы не хуже меня знаете, что стандарт кое-что из этого разрешает, GCC для плюсовых файлов это пропускает, и кода, и даже сугубо плюсового, где мэйн объявляется так - предостаточно. )) Что "так не нужно писать - и все" - никто не спорит, но компилятор пропускает, значит - он не вылавливает ваши ошибки? )))))
bool Прекрасный тип! Очень полезен, хотя и неидеален.
Ну то, что он полезен - это нам не новость. ) Ввели наконец - и слава богу. Сколько можно всех заставлять TRUE FALSE дефайнить? ))
Но не поворачиваем проблему раком. Суть была в том, что зачем было устрожать сишный контроль типов с enum-ами и многим другим, чтобы тут же вводить тип, который неявно приводится к интергральным в обе стороны??? )
Дилетантизм - характеристика изучающих, а не изучаемого.
Про них речь и шла. Хорошо, заменим на ламеризм, для ясности. )))
Деннис Ритчи, основоположник языка С, сказал примерно так: "Язык С можно сравнить со скальпелем. Умелое использование - спасенная жизнь, неумелое использование - кровавое месиво." Да, есть люди, использующие С++ так, что хочется плакать. Однако это касается и С, да и вообще любого реально используемого языка. Впрочем, дилетантское использование стандартной библиотеки С может дать код, ничуть не менее ужасный.
Запросто. Только говорил я о том, что под водой си++ те же сишные скальпели. В актуальных реализациях плюсы от них могут прикрыть, но до конца не спасут. И желательно понимать, что там происходит, а не пользоваться С++ как черным ящиком. Книги же, которые пропагандируют изучение си++ без си - грешат как правило именно этим. Страуструп - не исключение, там достаточно
ключевых моментов, которые он просто игнорирует или совершенно по-лвмерски )) объясняет их "на пальцах в общих чертах ну вобщем вы поняли", не давая сути. Поэтому эти ваши слова
С другой стороны, для того, чтобы начать использовать на практике многие возможности С++ на том уровне, какой необходим большинству программистов, десять талмудов читать не надо.
вкупе с тем, что не надо учить си - могут создать весьма ложное впечатление. Могут и не создать. Только и всего.
Смотря что считать критериями высокого уровня. С++ универсален тем, что, с одной стороны, позволяет манипулировать битами, а, с другой стороны, позволяет вводить очень высокие уровни абстракции, так что о (действительно) низкоуровневых операциях можно забыть.
Расхожие истины я тоже знаю. ))
Плюсы не высокого уровня именно потому, что требуют знать низкий уровень для того, чтобы пользоваться высоким. И иногда нижний уровень реализации приходится учитывать, даже пользовательски используя готовые библиотеки. Потому что "стандартного и всеобщего" нижнего уровня, за которым автомагически следит рантайм система языка, в отличие от тех же явы и пайтон - тут нет. Расхожие истины-то со мною согласны, а вы нет. )))
(sergio) писал(а):По сути, он как был макронадстройкой над си... - так ею и остался.
Ну, я уже писал выше, что это неверное утверждение. В корне неверное.
То, что вы написали выше ничуть не противоречит тому, что я говорю здесь. А мнения хороши тем, что разные, и каждый может оставаться при своем.
(sergio) писал(а):- там меньше возможностей глупости наделать при "высокоуровневом" подходе.
Да ну? Тот факт, что, создав в Python переменную и инициализировав ее значением типа Х, я могу позднее этой же переменной присвоить значение типа Y (причем типы X и Y могут быть совершенно несовместимы) открывает (потенциально) громадную брешь для ошибок! В С++ такие ошибки сделать несоизмеримо сложнее, компилятор не допустит.
Давайте без подмен, ага? Мухи отдельно, котлеты отдельно. Не путаем ошибки с глупостями. Если в безтиповом языке человек присваивает переменной один тип, а читать пытается совершенно другой - это не "брешь для ошибок" в языке и не глупость - это просто ошибка. Безтиповый (ну или без контроля типов) язык - он на то и безтиповый, что там за такими делами программист следит, тут все соответствует. А вот мнение, что в си++ можно "вызывая конструкторчики создавать такие объектики", сферические в вакууме, - это чревато глупостями и ламеризмом.
Помимо помянутых сишных архаизмов, много проблем создает сама связка си + си++, и в довесок в плюсах уже и своих проблем успели понаделать, без помощи "старых ошибок". )
Только бога ради - не надо меня убеждать, что си++ хороший язык. ) Я его выбрал из десятка опробованных. )) А языки все хорошие, кому какие. =) Некоторым вон ассемблер нравится, а некоторым бэйсик. )))