Здравствуйте, Pavel Dvorkin, Вы писали:
PD>Это ты зря. Как извстно, Пилат спросил Иисуса : "что есть истина" ? И Иисус не ответил. Потому что он не знал языка C/C++
Здравствуйте, Пацак, Вы писали:
MZ>>От них тошнит только. Ещё претенденты есть ? П>Java, например. В ней подобный фокус можно выкинуть только если переменная внутри условия будет булевской.
Upd: А в питоне подобное вообще вызывает синтаксическую ошибку:
>>> b = True
>>> if b = not True: pass
File "<stdin>", line 1
if b = not True: pass
^
SyntaxError: invalid syntax
Здравствуйте, alpha21264, Вы писали:
A>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>(например функциональное программирование) которые в С++ уже не впихнешь.
Так, для справки...
Lisp появился в 1958 году.
Он всего лишь на годик-другой моложе Фортрана
Здравствуйте, LaptevVV, Вы писали:
LVV>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.
LVV>
LVV> if (counter =! 0 ) {
LVV>
Напиши пару-тройку нужных людям и работающих программ, а потом пиши такое. Я уверен что на других языках можно найти примеры похожего характера.
Здравствуйте, MasterZiv, Вы писали:
MZ>On 10.01.2011 14:02, LaptevVV wrote:
>> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный >> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.
MZ>От них тошнит только.
Возможно, программирование — не ваша профессия?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Pzz>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать. LVV>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить... B>Кто-то кроме студентоты таким страдает? А учеников нужно учить.
Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана.
Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором.
Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, ononim, Вы писали:
A>>>Это работало несколько лет, потом случайно нашли. LVV>>Вот именно! Язык НЕ ДОЛЖЕН ПОЗВОЛЯТЬ писать подобные вещи. O>вообще меня удивляет то что люди считают ошибки в стиле
if (counter =! 0 )
или даже проблемы с выделением/освобождением памяти корнем зла. На моей практике в достаточно больших проектах получить на руки баг с access violation это же просто кодерское щасте. 90% реальных (не учебных!) проблем — разборки с тн "бизнес" логикой.
Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали.
Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, bkat, Вы писали:
B>В любом языке есть свои подводные камни и типичные ошибки новичков. B>С/С++ мы любим не за это
Вы знаете, я с С познакомился по первому изданию K&R. C TurboC++ — еще году то ли 87, то ли 88ю С С++ я познакомился по первому изданию Страуструпа в 91 году. Я любил этот язык настолько, что написал аж 3 книжки, причем для студентов. Четвертую — не дописал еще (там все программы — на С/С++).
Больших прог на С/С++ мне писать не довелось (ну, не более 15000 операторов), но опыт программирования у меня большой — порядка 20 лет. От кодов ЭВМ, до PL-1 и С++, от операционной системы (как раз на ЭВМ типа pdp-11) до зарплаты. И членом команды и руководителем команды.
Обвинить меня в ненависти к С/С++ — нельзя. Но после того, как я познакомился в Блэск-боксом (2009 год) + Компонентный Паскаль, я все более убеждаюсь, что С/С++ — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Ops, Вы писали:
A>>С альтернативами пока плохо. A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>>(например функциональное программирование) которые в С++ уже не впихнешь.
Вполне себе впихнешь. Почитайте Джеймса Коплиена Advanced C++ — он там пишет. A>>Попробуй написать что-нибудь например на Питоне. A>>Сразу поймешь, что в С++ тебе массы всего не хватает. A>>И вообще он раздражает тебя своей многословностью.
Ops>Ну в питоне мне не хватает много чего из хотя бы С. Задачи такие. Ops>А вот полноценной альтернативы нет и пока не предвидится.
А попробуйте Оберон...
Вполне себе альтернатива.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, shasa, Вы писали:
S>Здравствуйте, LaptevVV, Вы писали:
LVV>>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.
LVV>>
LVV>> if (counter =! 0 ) {
LVV>>
S>Напиши пару-тройку нужных людям и работающих программ, а потом пиши такое. Я уверен что на других языках можно найти примеры похожего характера.
Я писал пару-тройку полезных программ еще в то время, когда вас даже в проекте не было. Яйца курицу — не учат.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, bkat, Вы писали:
B>>В любом языке есть свои подводные камни и типичные ошибки новичков. B>>С/С++ мы любим не за это LVV>Вы знаете, я с С познакомился по первому изданию K&R. C TurboC++ — еще году то ли 87, то ли 88ю С С++ я познакомился по первому изданию Страуструпа в 91 году. Я любил этот язык настолько, что написал аж 3 книжки, причем для студентов. Четвертую — не дописал еще (там все программы — на С/С++). LVV>Больших прог на С/С++ мне писать не довелось (ну, не более 15000 операторов), но опыт программирования у меня большой — порядка 20 лет. От кодов ЭВМ, до PL-1 и С++, от операционной системы (как раз на ЭВМ типа pdp-11) до зарплаты. И членом команды и руководителем команды. LVV>Обвинить меня в ненависти к С/С++ — нельзя. Но после того, как я познакомился в Блэск-боксом (2009 год) + Компонентный Паскаль, я все более убеждаюсь, что С/С++ — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
Вот именно. Программистом не являетесь, больших программ не писали, однако напозволяли себе тут уже выше-ниже по топику кучу высказываний типа "курица с яйцами" и "программист — это не ваше". Хоть сколько-нибудь неначинающий разработчик оперирует не с ифами и даже не с классами, а с конкретными задачами. (У самого под рукой плюсовый проект, где и обжектив си ифоновское, и ява с йни андроидовские и как-то пофигу какие где там ифы и наследование, главное уметь переключаться и ловить волну).
Засим предлагаю переехать в КСВ.
LVV>Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали. LVV>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
у нас есть кхм.... коллега — он регулярно путает <, >, <=, >=, чем реально доставляет всем остальным. означает ли это, что С++ — плохой язык?
нет, это означает, что чел — неряха и невнимательное чмо. и никакой язык с таким бардаком в башке не поможет.
язык си для начинающих — зло, но вовсе не по причине того, что человек элементарно операторы путает.
Of course, the code must be complete enough to compile and link.
Здравствуйте, MescalitoPeyot, Вы писали:
B>>>В любом языке есть свои подводные камни и типичные ошибки новичков. B>>>С/С++ мы любим не за это LVV>>Вы знаете, я с С познакомился по первому изданию K&R. C TurboC++ — еще году то ли 87, то ли 88ю С С++ я познакомился по первому изданию Страуструпа в 91 году. Я любил этот язык настолько, что написал аж 3 книжки, причем для студентов. Четвертую — не дописал еще (там все программы — на С/С++). LVV>>Больших прог на С/С++ мне писать не довелось (ну, не более 15000 операторов), но опыт программирования у меня большой — порядка 20 лет. От кодов ЭВМ, до PL-1 и С++, от операционной системы (как раз на ЭВМ типа pdp-11) до зарплаты. И членом команды и руководителем команды. LVV>>Обвинить меня в ненависти к С/С++ — нельзя. Но после того, как я познакомился в Блэск-боксом (2009 год) + Компонентный Паскаль, я все более убеждаюсь, что С/С++ — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
MP>Вот именно. Программистом не являетесь, больших программ не писали, однако напозволяли себе тут уже выше-ниже по топику кучу высказываний типа "курица с яйцами" и "программист — это не ваше".
Вот именно!
1. Я имею большИй опыт программирования, чем поучающие меня программисты. Не писал больших программ на С/С++, на остальном — писал. Операционная система — большая программа? И имею 18-тилетний опыт преподавания программирования. Чего поучающий меня программист явно не имеет вообще. Страуструп, между прочим, учил начинающих программистов всего 6 лет. Результат — он написал ОЧЕНЬ ХОРОШУЮ КНИЖКУ для ОБУЧЕНИЯ.
2. Профи, если он профи, не может тошнить от инструмента.
MP>Хоть сколько-нибудь неначинающий разработчик оперирует не с ифами и даже не с классами, а с конкретными задачами. (У самого под рукой плюсовый проект, где и обжектив си ифоновское, и ява с йни андроидовские и как-то пофигу какие где там ифы и наследование, главное уметь переключаться и ловить волну).
Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО!
Больше спорить не буду.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
LVV>Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО! LVV>Больше спорить не буду.
И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.
Of course, the code must be complete enough to compile and link.
Здравствуйте, Lorenzo_LAMAS, Вы писали:
LVV>>Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО! LVV>>Больше спорить не буду.
L_L>И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.
Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>Здравствуйте, blackhearted, Вы писали:
LVV>>>>>
LVV>>>>> if (counter =! 0 ) {
LVV>>>>>
Pzz>>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать. LVV>>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить... B>>Кто-то кроме студентоты таким страдает? А учеников нужно учить. LVV>Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана.
Фортран — это, конечно, вещь. С ним можно всё что угодно сравнивать, всё равно никто не сможет аргументировано доказать.
LVV>Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором.
Treat warnings as errors и никаких гвоздей. Получишь палки в колёса от компилятора.
Или нужно полагаться полностью на дизайн языка и голову вообще не включать?
Так мы докатимся до того, что в языке вообще не может быть никаких side-effects и всё иммутабельно — есть такой подход в обучении, начинать с подобных языков. Только вот Виртовский Паскаль под это описание ну не подходит никак.
LVV>Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания.
И опять он — великий и ужасный. Где сейчас начитают учить с фортрана, в ПТУ? В моё время учили как раз с Паскаля. И ошибки делали на Виртовском творении еще покруче, чем на в будущем на Сях.
Можно еще Аду вспомнить — вот она, безопасность. Но это уже оффтоп.
LVV>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...
Так и в вашем славном Обероне можно описаться и вместо + использовать -, а вместо * — /.
С — и правда не самый лучший язык для начинающих, но его и создали не для этого.
Впору задуматься, скорее, хорош ли преподаватель и программа обучения, что в качестве первого
выбирают такой язык.
Of course, the code must be complete enough to compile and link.
11.01.2011 11:16, LaptevVV пишет:
> S>Напиши пару-тройку нужных людям и работающих программ, а потом пиши > такое. Я уверен что на других языках можно найти примеры похожего характера. > Я писал пару-тройку полезных программ еще в то время, когда вас даже в > проекте не было. Яйца курицу — не учат.
Мда-с, жалко мне твоих студентов.
Здравствуйте, Ops, Вы писали:
Ops>Здравствуйте, MasterZiv, Вы писали:
MZ>>On 10.01.2011 14:02, LaptevVV wrote:
>>> I>Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C >>> языков в 2011 году? >>> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный >>> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.
MZ>>На самом деле я-то знаю более простые языки, на которых нужно учиться MZ>>программировать. Но только ПОСЛЕ них уже на С программировать не захочется. MZ>>Так что вопрос о первом языке очень интересен (мне).
Ops>А можно озвучить "более простые языки, на которых нужно учиться программировать"? Желательно, настолько же близкие к низкому уровню.
А зачем низкий уровень?
Как-то нормально прошло обучение Архитектура/Паскаль -> С -> Asm/С++ -> microAsm.
ИМХО, проще микро ассемблера вообще ничего нет и ниже тоже мало кто существует.
LVV>Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали. LVV>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
Студия даже ворнинг не показала? Не верю.
А если у вас ребята учатся писать на уровне ниже /W4 игонорируя вывод компилятора — то флаг им в руки.
bool counter = false;
if (counter =! 0)
{
}
warning C4706: assignment within conditional expression