Здравствуйте, Пацак, Вы писали:
П>Дык как раз с перестановками букв в слове проблем, как правило, не бывает — в большинстве случаев, написав скажем dobule вместо double или PACKET_SZIE вместо PACKET_SIZE, мы честно получим некомпилирующуюся программу.
А теперь попробуй перепутать знаки в !=. Шо, не получается? Shift мешает? Ну так и о чем речь, проблема высосана из пальца.
Здравствуйте, Pzz, Вы писали:
Pzz>Я так описываюсь иногда (точку с запятой в конце строки на автомате ставишь, и в глаза она совершенно не бросается). gcc не ругается, зараза.
Здравствуйте, LaptevVV, Вы писали:
LVV>Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
Это ваше мнение и возможно лет 30 назад я бы (имей я тогда свое мнение на этот счет ) с ним даже согласился.
Мое личное наблюдение, преподы-поклонники Вирта более успешны в убивании интереса к программированию,
чем в привитии "хороших программистких манер".
Они с самого начала слишком усердно пытаются причесать студентов,
не давая им побыть некоторое время в хаосе.
Кстати, а что такое "язык для обучения" применительно к программистам,
которые почти наверняка будут сталкиваться с разными языками и которым полезно будет узнать и о граблях того же C?
Здравствуйте, bkat, Вы писали:
B>Здравствуйте, LaptevVV, Вы писали:
LVV>>Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
B>Это ваше мнение и возможно лет 30 назад я бы (имей я тогда свое мнение на этот счет ) с ним даже согласился. B>Мое личное наблюдение, преподы-поклонники Вирта более успешны в убивании интереса к программированию, B>чем в привитии "хороших программистких манер". B>Они с самого начала слишком усердно пытаются причесать студентов, B>не давая им побыть некоторое время в хаосе.
B>Кстати, а что такое "язык для обучения" применительно к программистам, B>которые почти наверняка будут сталкиваться с разными языками и которым полезно будет узнать и о граблях того же C?
дык мы своих как раз кидаем в разую воду...
Вот программных инженеров в самом первом семестре начали учить на Кумире — чтобы привести их к общему знаменателю всех. Очень с разной подготовкой приходят.
Потом у них семестр глубокого погружения в процедурную часть С++.
Потом семестр писания курсовой по процедурной части С++. И освоение указателей с итераторами... По мере возможностей...
Одновременно с этим — семестр введения в ООП на С++ — до шаблонов.
Хотя основы STL в виде векторов (и итераторов) они уже в предыдущем семестре проходят.
Следом — ударная доза С++ в виде шаблонов, STL, паттернов и управления памятью с перегрузкой new|delete. И конкретно в этом годе хочу дать основы Qt — для знакомства с реализацией интерфейса.
Одновременно с этим — писание курсовой по ООП. Тут разрешается использовать любой язык, помимо С++. Часто студиозы сами осваивают WinForms и основы Додиеза, чтобы интерфейс написать. Хотя есть такие, которые предпочитают С++|CLI. А один "монстр для написания первой курсовой самостоятельно разобрался с MFC — пацан из Дагестана, из сельской школы...
Одновременно с этим — изучение структур данных и алгоритмов, где некоторые алгоритмы им показывают на Питоне, Додиезе и С++.
И одновременно с этим — основы архитекутуры ЭВМ, где они на лабах пробуют писать ассемблерные вставки — чтоб знали, как все это работает...
Ну, а уж третий курс — это ваще...
Тут тебе и базы данных (+курсовая), и SQL Server (+курсовая), и программирование компьютерной графики, и операционные системы, и системное программирование (и все на С++) и еще много...
А четвертый курс — это NET-программирование — годовой курс, и опять курсовая.
Так что учим мы — на совесть.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Kluev, Вы писали:
K>Здравствуйте, LaptevVV, Вы писали:
LVV>>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.
K>Правильно. Учится нужно на КулХацкеле. K>А true недостаков С и (С++) вы, профессор, еще не заметили.
K>Вот то с чем осознанно или неосознанно мучается почти любой Ц/ЦПП программист:
K>1. препроцессор вместо раздельной компиляции K>2. сишные строки
Да как-то с этим проблем не наблюдается... Лабы есть по каждой теме, народ вполне себе осваивает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, alpha21264, Вы писали:
A>С альтернативами пока плохо. A>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>(например функциональное программирование) которые в С++ уже не впихнешь.
А нужно впихнуть?
A>Попробуй написать что-нибудь например на Питоне. A>Сразу поймешь, что в С++ тебе массы всего не хватает. A>И вообще он раздражает тебя своей многословностью.
Придется таки попробовать: уже плешь проели этим своим питоном.
LVV>Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали. LVV>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
Очевидно, товарищу начинающему программисту про дебаггеры и прочие излишества всякие нехорошие рассказать забыли.
Я понимаю когда у тебя сишные функции запросто друг на друга линкуются, потому как никакой особой проверки типов указателей нет, да и все равно все пользуются void* — а ты потом заходишь в функцию, и видишь что только что бывшую красивую структуру уже склоняют каким-то нереальным образом и что так быть не может — просто не могли так программисты задумать. Наверное...
А тут в дебаггере хоть что-нибудь должно было измениться после прохождения такого условия — не?
Я бы сказал, что для начинающих вообще программирование как таковое — зло. В результате мы имеем все более навороченные средства, на которых "начинающие программисты" не в силах выразить свои все более скудеющие мысли. А виноват, конечно же, инструмент. А что сейчас процентов 90 сайтов требует таких а...нных ресурсов — причем как на стороне клиента, так и на стороне сервера — ну так что же? Поставим еще один юнит, еще одну нитку волокна протянем, а пользователь пускай еще ядер докупает — 21-й век надворе!
ЗЫ: ты его не спросил таки что же именно он в отладчике увидел в этом месте, не?
Здравствуйте, LaptevVV, Вы писали:
LVV>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...
Простите, какой из этого человека _программист_, если он не может выявить _свою_ _собственную_ описку в таком простом случае и в таком простом языке?
Может вам стоило бы учить начинающих не тому что "Си — зло" (к), а тому, что жизнь вообще и программирование в частности — говно — и что такие "описки" — это просто обычные рабочие моменты и что _программист_ должен знать о возможности их существования в программе и уметь находить подобные места и уметь анализировать их и исправлять — нет? Или чему вы там своих "начинающих программистов" вообще учите?
Здравствуйте, blackhearted, Вы писали:
LVV>>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
B>Студия даже ворнинг не показала? Не верю. B>А если у вас ребята учатся писать на уровне ниже /W4 игонорируя вывод компилятора — то флаг им в руки.
B>
Здравствуйте, rising_edge, Вы писали:
PD>>>А еще лучше вот так
PD>>>if(counter!=!0)...
R>>мораль: на си надо писать в сишном стиле if(counter), не страдая паскализмом и все будет хорошо
_>Когда я вижу if (c), я не знаю ничего о типе. Глядя на такую запись, я предполагаю, что это булевская переменная. Когда я вижу _>if(c != 0) то, это, очевидно, c — целая; _>if(c != NULL) то, это, очевидно, c — указатель; _>if(c != '\0') то, это, очевидно, c — символ.
_>Код делается более читабельным. Строгая типизация рулит.
Я выделил выделенное. В _Си_ нет строгой типизации.
Угу. Запускать программы не пробовали? Если в каком-то месте какой-то кусочек кода не вызывается, хотя по всем внешним признакам (самосинг езмъ истино!) — должен — аккуратно вычитать соотв. место и найти опиську не составляет обого труда. Это вам не "плюсы" с ихними шаблонами и многоуровневыми аллокаторами и еще черт-и-знает-чем на что хватило фантазии авторов — на какие-нибудь скриптовые вставки, например.
Здравствуйте, igna, Вы писали:
LVV>>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...
I>Не, ну а если он 91 вместо 19 напишет, компилятор тоже должен выдать ошибку? Требовать от языка, чтобы он был устойчивым к перестановке букв при наборе слова, это уже чересчур, может он еще и самокорректирующимся должен быть?
У нас тут намедни нашли старинную и вообще непонятно как возникающую ошибку: расхождение по вертикали, которого быть не может не должно и вообще непонятно как такое может возникать в системе. Оказалось все просто: по вине переписчика в одном месте был перепутан подъем с переворотом... Всего делов-то!
ЗЫ: понятно, что "кошерно" вводить отдельную сущность для углов, и отдельную — для длинн и высот... Только потом...
Здравствуйте, The Lex, Вы писали:
TL>Здравствуйте, alpha21264, Вы писали:
A>>С альтернативами пока плохо. A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>>(например функциональное программирование) которые в С++ уже не впихнешь.
TL>А нужно впихнуть?
Нуу... было бы полезно.
A>>Попробуй написать что-нибудь например на Питоне. A>>Сразу поймешь, что в С++ тебе массы всего не хватает. A>>И вообще он раздражает тебя своей многословностью.
TL>Придется таки попробовать: уже плешь проели этим своим питоном.
Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится
Здравствуйте, Пацак, Вы писали:
I>>Не, ну а если он 91 вместо 19 напишет, компилятор тоже должен выдать ошибку?
П>Некорректное сравнение. Во-первых 19 и 91 — это совершенно определенно какие-то константы, хардкодить которые непосредственно внутрь алгоритма — зло. Вероятность же ошибки в хедере меньше во столько же раз, во сколько количество объявлений констант меньше количества мест, где они используются. Во-вторых 19 и 91, как ни крути, отличаются лишь семантикой — с точки зрения синтаксиса они совершенно похожи и отличить, когда в коде нельзя использовать одно, а когда другое — компилятор в принципе не способен.
Не вопрос! Выносим 19 и 91 в хедер, а вместе с ними — и еще 93 сопуствующие константы, которые все называем красивыми символическими именами.
И в коде путаем не 19 и 91, а символические имена.
Таки разница!
П>В случае же смешения "!=" и "=!" мы имеем не просто разные по смыслу действия, мы имеем синтаксически различные конструкции — у них даже количество операций и то не совпадает. Причем насколько я помню C++ (давно его не трогал уже, так что может и вру), нормальные компиляторы в курсе этой проблемы и, в отличие от "19 vs 91", честно выдают на подобном коде warning. Вопрос лишь в том, почему именно warning, почему не error.
Нормальные компиляторы в курсе, что "вьюноши с горящими глазами" частенько лажают и путают оператор присваивания с оператором эквивалентности в местах, где логично ожидать таки оператор эквивалентности. Рестрикта там нет. Более того, старый добрый "сишный стиль" повсеместно использует присваивание вместе с проверкой в одном и том же выражении. При аккуратном отношении к стилю (читай: читабельности) помарки вычитываются либо на раз, либо — при аккуратном отношении к архитектуре — "на два", путем сперва загоняния "подозрительного места" в довольно определенное место кода и последующего вычитывания или прохождения этого места пошаговым отладчиком. А иногда — дописыванием "отладочной обвязки" с целью выследить "жука".
Только, похоже, в сабжевых университетах этому не учат...
I>>Требовать от языка, чтобы он был устойчивым к перестановке букв при наборе слова, это уже чересчур
П>Дык как раз с перестановками букв в слове проблем, как правило, не бывает — в большинстве случаев, написав скажем dobule вместо double или PACKET_SZIE вместо PACKET_SIZE, мы честно получим некомпилирующуюся программу. Проблемы возникают, когда мы начинаем переставлять слова в предложениях.
см. выше про 93 константы — каждая со своим символьным именем. Лично мне пока что неизвестен метод придумывания "опискоустойчивых имен".
Здравствуйте, Kluev, Вы писали:
K>Вот то с чем осознанно или неосознанно мучается почти любой Ц/ЦПП программист:
K>1. препроцессор вместо раздельной компиляции
Э-э-э... у-у-у... Я вот как-то и не мучаюсь...
K>2. сишные строки
Это "нуль-терминированные", что ли? Чем не угодили-то?
K>PS: Тред не читал
Здравствуйте, LaptevVV, Вы писали:
LVV>Потом семестр писания курсовой по процедурной части С++. И освоение указателей с итераторами... По мере возможностей...
м-м-м... я что-то потерялся: итераторы — это еще процедурная часть языка или уже нет?
LVV>Одновременно с этим — семестр введения в ООП на С++ — до шаблонов.
имхо, плохо разделять с шаблонами — оные, кстати, еще на "процедурном" этапе давать надо и потом развивать до ООП по мере того как. Ну и имхо самая мутная часть современных "плюсов".
LVV>Хотя основы STL в виде векторов (и итераторов) они уже в предыдущем семестре проходят.
Угу... Подозреваю для упрощения загрузки неокрепших мозгов понятием "массив в си/си++". Точнее отказом от загрузки как таковой...
LVV>Следом — ударная доза С++ в виде шаблонов, STL, паттернов и управления памятью с перегрузкой new|delete. И конкретно в этом годе хочу дать основы Qt — для знакомства с реализацией интерфейса.
имхо, последнее — плохо. Достойно отдельной темы обсуждения.
Простите, но мне виден характерный "преподавательский" подход...
LVV>Одновременно с этим — писание курсовой по ООП. Тут разрешается использовать любой язык, помимо С++. Часто студиозы сами осваивают WinForms и основы Додиеза, чтобы интерфейс написать. Хотя есть такие, которые предпочитают С++|CLI. А один "монстр для написания первой курсовой самостоятельно разобрался с MFC — пацан из Дагестана, из сельской школы...
Простите великодушно, но почему бы тогда прямо сразу с "додиеза" и не начинать?
LVV>Одновременно с этим — изучение структур данных и алгоритмов, где некоторые алгоритмы им показывают на Питоне, Додиезе и С++.
Можно примеры алгоритмов? И какие-нибудь обоснования подобного зоопарка, если можно...
LVV>И одновременно с этим — основы архитекутуры ЭВМ, где они на лабах пробуют писать ассемблерные вставки — чтоб знали, как все это работает...
Ну как жеж без этого преподавать-то!
А что — самостоятельно написать лабу, стартующую "с нуля" в качестве нулевого круга ОС и перебрасывающую машинку в защищенный режим — слабо?
имхо, бессмысленность "основ архитектуры ЭВМ" без какой-либо привязки к ОС — хотя бы Миникс взять собрать-разобрать своими руками! — не знает границ и "преподавательского оттенка" сей подход.
LVV>Ну, а уж третий курс — это ваще...
Я даже все и угадал. Хотя я закончил уже 10 лет тому назад и на лекциях не учился, а просто "проводил время".
LVV>Тут тебе и базы данных (+курсовая), и SQL Server (+курсовая), и программирование компьютерной графики, и операционные системы, и системное программирование (и все на С++) и еще много...
(позёвывая) и шо за "системное программирование — и все на Си++"?
Смешались в кучу кони, люди... (к)
LVV>А четвертый курс — это NET-программирование — годовой курс, и опять курсовая.
А нет чтобы с него начать...
LVV>Так что учим мы — на совесть.
Да, конечно. Я 10 лет тому назад как раз так "на совесть" учился. Совести у меня, правда, не было — потому сдавал все в последний момент. Весь "годовой курс" — экстерном за пару вечеров. Вот Варкрафт был — это да! Кажется, это уже был второй — первый, помнится, совсем был убогий.
Как приятно, что в курсе "основы программирования" ничего и не изменилось — ну просто помолодел лет на 13, считая когда тот курс вообще закончился.
Здравствуйте, alpha21264, Вы писали:
A>>>С альтернативами пока плохо. A>>>Но это не отменяет того факта, что в программировании накопилось дохрена идей, A>>>(например функциональное программирование) которые в С++ уже не впихнешь.
TL>>А нужно впихнуть?
A>Нуу... было бы полезно.
И шо таки мешает?
TL>>Придется таки попробовать: уже плешь проели этим своим питоном.
A>Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится
У меня сейчас серверная часть на питоне (вроде — я кроме бинарных пакетов и чатов с "серверными инженерами" ничего в живом виде не видел) написана. Вот ведь страшная вещь: серверные инженеры отладочный сервер подняли (после 3-недельной переписки с попытками выпытать у меня что же именно у меня не работает, после чего нашелся хороший человек и правильно их пнул и оказалось, что на сервере ничего-то и не поднято вообще ) — а вот релизный теперь не могут. Причем отписаться "сам дурак" тоже не могут: на отладочном все работает. Страшная, видать, сила, этот ваш питон!