GoldFinch Есть, но с ней не всегда удобно: if надо выйти then begin Result:= рез; Exit; end; хужей, чем if надо выйти then return рез; beginner Плохо то, что из-за отсутствия типизации можно поиметь кучу случайных проблем. В Паскале можно написать то же самое, но с явным приведением типов. Менее красиво, зато надёжнее. Возможно, помогут процедуры Inc и Dec -- не пробовал, так что сказать не могу (хотя это уже Дельфи, а не стандартный Паскаль, но стандартный обсуждать смысла нет). Наверное. Удачные комменты -- вещь полезная, кто ж спорит? Pavia Речь изначально шла о первоначальном обучении, а не о профессиональной работе. Профессионал должен знать Си++, иначе это не профессионал. Даже если основная его работа идёт на другом языке. Ну так заимствовать с умом надо. А приведение типов сишное в своём списке недостатков я упомянуть забыл. Ещё один из кошмаров, запутывающих программу... CyberManiac Ни в коей мере. Нет никакой разницы, что возвращать. Это забота компилятора, а не программиста, и если компилятор может вернуть значение через присваивание переменной Result (или имени самой функции), то сможет это сделать и в return/exit. Не согласен. Загромождение кода лишними проверками условий -- плохо. Pavia Да, я несколькими страницами выше писал, что в последней версии вроде это появилось. Ursus Читайте внимательнее, речь была о Си, а не о Си++.
не понимаю тех кто пишет if xxx then begin ... end; меня учили не делать пустых строк в листинге, и писать if xxx then begin ... end;
SII "Профессионал" - понятие растяжимое. Ежели изначально предполагается пилить бабло на решениях Oracle - плюсатые Си годятся только чтобы мозги себе забивать ненужной хренью. Если основная работа идёт на японском языке - таки лучше знать японский. Иначе даже формы рисовать не подпустят. Delphi позволяет возвращать сложные типы. И даже очень сложные типы, например, динамические массивы. Я не очень представляю процесс возврата по значению динамического массива при помощи статической конструкции. А вот к Result можно применять SetLength и всё такое. Лишние проверки условий появляются оттого, что некоторые люди боятся многоуровневых if. Лечится элементарной дисциплиной в отступах и краткими комментариями в конце блоков на тему, а что, собственно, здесь кончается.
GoldFinch Меня учили писать чтобы begin и end был на одной линии. Тогда всегда ясно какой участок относиться к какому блоку. По привычки переношу на один пробел. Но советуют два и более.
GoldFinch А я бы плевал в каждого, кто сделает ударение в слове "Паттайя" на второй слог. Каждый паттайчанин знает, что ударение должно падать на последний слог.
война продолжается? Если кому то не нравится приведение типов - это его проблемы если мне не нравится конструкция begin.... end и жесткая типизация переменных - это мои проблемы Язык программирование отображает характер человека Си - это свобода практически во всем, порой доходит до анархии паскаль - жестко заданные рамки, шаг влево, шаг вправо - стена и колючая проволока Code (Text): if xxx then begin ... end; Это что бы строчек кода было больше Больше строчек кода - больше зарплата Не зря же все большие продукты измеряются именно в строчках кода :-D :-D :-D :-D
beginner А асм ? В подобных религиозных баталиях меня всегда умиляют шарахания из одной крайности в другую - либо Си с его "свободой" и возможностью впихнуть весь код в одну строчку, либо асм, где каждую мелочь нужно ручками выписывать. А паскаль - почему то считают "отстоем", хотя на самом деле он вполне тянет на золотую середину Нет, это для того, чтобы мысль успевала за набором кода. А то ведь в Ц с его суперсокращениями наверное и подумать то некогда
...А по всему вышеизложенному, можно дать такой совет: Парень, есть язык С. Он не строг в синтаксисе. Но чтобы умело воспользоваться таким его качеством, необходимое условие- быть очень очень аккуратным и знать: твои ошибки никто за тебя исправлять не будет. А это тяжело. Найти и исправить. А есть Pascal Он гораздо строже в синтаксисе. Что ж, если тебе вдруг не понравится строгость, то вот тебе обратная плюсовая сторона медали- ты можешь позволить себе некоторую расхлябанность. Прелставляешь- твои ошибки будут выявлены -не тобой, нет- машиной... То есть работа над ошибками в Pascal легче, чем в C ...Я всё правильно сформулировал?
CyberManiac Профессионал в моём понимании тем и отличается от не будем говорить кого, что после небольшой подготовки он может решать любые задачи. Так это не значит, что надо вообще запрещать возвращать с помощью Return/Exit. В конце концов, динмассивы -- это весьма специфический случай, и обычно возвращается что-либо попроще. Так и поступаем. Но всё равно по возможности стараемся избегать лишней вложенности. Если я в начале функции выяснил, что дальнейшее её выполнение не требуется, почему мне сразу не вернуть результат и не завершить её работу?
amvoz Нет, неправильно :-P Ошибку в логике алгоритма Паскаль точно так же не поймает, как и любой другой язык. Он ограничивает лишь возможность совершения случайных ошибок.
SII Ну тогда профессионалов в природе не существует. Чтобы с Фортрана перепрыгнуть на VBA (или наоборот - абсолютно непринципиально), надо изрядно самому себе изнасиловать мозг, причём не один месяц подряд, драйверописатель запросто подохнет в дебрях курсоров, запросов и триггеров (и никакие книжки а-ля Oracle за 21 день его не спасут) и т.д. Хотя умение прыгать по верхушкам и пускать пыль в глаза сейчас тоже приносит некоторые дивиденды, и это тоже в некотором роде можно назвать профессионализмом. Чем меньше исключений из правил - тем лучше. В самом лучшем случае их быть вообще не должно. А то несколько странно читать в сурьёзных книжках экзерсисы типа "а вот у нас есть чудесное множественное наследование, только вы им лучше не пользуйтесь, потому что мы тут сами попробовали, а там столько всяких заморочек, что оно нас задолбало, пока мы примеры к этой книжке сочиняли". Это довольно редкий случай, чтобы ради него делать новую конструкцию. Вот кое-где сделали, что после каждого case в 99.9% случаев нужно писать break - и весь этот зоопарк развели ради жалкого 0.1% "особых случаев". А может даже и просто левая пятка зачесалась, вот и получилось, как получилось. Хотя ничто не мешало обойтись без break, а на особые случаи буй покласть.
Code (Text): char *s = new char[5]; wsprintf(buff, "%p", &AAA::get); DWORD addr = atoi(buff); s = (char*)addr; s[0] = ....// спокойно сплайсим
Да какая разница. Покажите мне хоть одного человека, который в наше время пишет именно на С, а не С++! А если и встречаются где-то такие несчастные люди, то только потому, что пишут они под некие очень специфические платформы, под которые нет компилятора С++, а только С... Таких только пожалеть остается.
Ursus Легко. http://www.cybercom.net/~dcoffin/dcraw/ Кстати, настоятельно рекомендую заценить сей мегакодез. ТруЪ х@кс0рЪ стайлЪ, едреныть. Если кто-нибудь из здесь присутствующих так пишет - советую подумать о скорейшем уходе в монастырь. В мужской монастырь. Ну, тут как бы Столлмана цитировали. Полагаю, его не пытают программированием под арифмометр.
Ursus например kaspersky неоднократно упоминал, что счастлив когда работает с С кодом, а несчастным его делает как раз необходимость лезть в плюсы