Re[9]: С - зло... :)
От: MescalitoPeyot Украина  
Дата: 12.01.11 09:01
Оценка: 4 (2) +2
Здравствуйте, Пацак, Вы писали:

П>Дык как раз с перестановками букв в слове проблем, как правило, не бывает — в большинстве случаев, написав скажем dobule вместо double или PACKET_SZIE вместо PACKET_SIZE, мы честно получим некомпилирующуюся программу.


А теперь попробуй перепутать знаки в !=. Шо, не получается? Shift мешает? Ну так и о чем речь, проблема высосана из пальца.
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[9]: С - зло... :)
От: Peregrin  
Дата: 12.01.11 10:33
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>Я так описываюсь иногда (точку с запятой в конце строки на автомате ставишь, и в глаза она совершенно не бросается). gcc не ругается, зараза.


С -Wextra ругается.
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[3]: С - зло... :)
От: Peregrin  
Дата: 12.01.11 10:53
Оценка: +1
Здравствуйте, blackhearted, Вы писали:

B>Здравствуйте, ononim, Вы писали:


LVV>>> if (counter =! 0 ) {

O>>пишите
 if (counter) {
и не парьтесь


B>А как же


B>

B>warning C4800: 'uint32_t' : forcing value to bool 'true' or 'false' (performance warning)


B>От ненавистного MS?


В случае if (counter) C4800 не выстрелит. Выстрелит только если написать bool b = counter;
... << RSDN@Home 1.2.0 alpha 4 rev. 1481>>
Re[3]: С - зло... :)
От: bkat  
Дата: 12.01.11 15:08
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.


Это ваше мнение и возможно лет 30 назад я бы (имей я тогда свое мнение на этот счет ) с ним даже согласился.
Мое личное наблюдение, преподы-поклонники Вирта более успешны в убивании интереса к программированию,
чем в привитии "хороших программистких манер".
Они с самого начала слишком усердно пытаются причесать студентов,
не давая им побыть некоторое время в хаосе.

Кстати, а что такое "язык для обучения" применительно к программистам,
которые почти наверняка будут сталкиваться с разными языками и которым полезно будет узнать и о граблях того же C?
Re[4]: С - зло... :)
От: LaptevVV Россия  
Дата: 12.01.11 15:29
Оценка:
Здравствуйте, bkat, Вы писали:

B>Здравствуйте, LaptevVV, Вы писали:


LVV>>Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.


B>Это ваше мнение и возможно лет 30 назад я бы (имей я тогда свое мнение на этот счет ) с ним даже согласился.

B>Мое личное наблюдение, преподы-поклонники Вирта более успешны в убивании интереса к программированию,
B>чем в привитии "хороших программистких манер".
B>Они с самого начала слишком усердно пытаются причесать студентов,
B>не давая им побыть некоторое время в хаосе.

B>Кстати, а что такое "язык для обучения" применительно к программистам,

B>которые почти наверняка будут сталкиваться с разными языками и которым полезно будет узнать и о граблях того же C?
дык мы своих как раз кидаем в разую воду...
Вот программных инженеров в самом первом семестре начали учить на Кумире — чтобы привести их к общему знаменателю всех. Очень с разной подготовкой приходят.
Потом у них семестр глубокого погружения в процедурную часть С++.
Потом семестр писания курсовой по процедурной части С++. И освоение указателей с итераторами... По мере возможностей...
Одновременно с этим — семестр введения в ООП на С++ — до шаблонов.
Хотя основы STL в виде векторов (и итераторов) они уже в предыдущем семестре проходят.
Следом — ударная доза С++ в виде шаблонов, STL, паттернов и управления памятью с перегрузкой new|delete. И конкретно в этом годе хочу дать основы Qt — для знакомства с реализацией интерфейса.
Одновременно с этим — писание курсовой по ООП. Тут разрешается использовать любой язык, помимо С++. Часто студиозы сами осваивают WinForms и основы Додиеза, чтобы интерфейс написать. Хотя есть такие, которые предпочитают С++|CLI. А один "монстр для написания первой курсовой самостоятельно разобрался с MFC — пацан из Дагестана, из сельской школы...
Одновременно с этим — изучение структур данных и алгоритмов, где некоторые алгоритмы им показывают на Питоне, Додиезе и С++.
И одновременно с этим — основы архитекутуры ЭВМ, где они на лабах пробуют писать ассемблерные вставки — чтоб знали, как все это работает...
Ну, а уж третий курс — это ваще...
Тут тебе и базы данных (+курсовая), и SQL Server (+курсовая), и программирование компьютерной графики, и операционные системы, и системное программирование (и все на С++) и еще много...
А четвертый курс — это NET-программирование — годовой курс, и опять курсовая.
Так что учим мы — на совесть.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 12.01.11 15:34
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Здравствуйте, LaptevVV, Вы писали:


LVV>>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.


K>Правильно. Учится нужно на КулХацкеле.

K>А true недостаков С и (С++) вы, профессор, еще не заметили.

K>Вот то с чем осознанно или неосознанно мучается почти любой Ц/ЦПП программист:


K>1. препроцессор вместо раздельной компиляции

K>2. сишные строки
Да как-то с этим проблем не наблюдается... Лабы есть по каждой теме, народ вполне себе осваивает.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:31
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>С альтернативами пока плохо.

A>Но это не отменяет того факта, что в программировании накопилось дохрена идей,
A>(например функциональное программирование) которые в С++ уже не впихнешь.

А нужно впихнуть?

A>Попробуй написать что-нибудь например на Питоне.

A>Сразу поймешь, что в С++ тебе массы всего не хватает.
A>И вообще он раздражает тебя своей многословностью.

Придется таки попробовать: уже плешь проели этим своим питоном.
Голь на выдумку хитра, однако...
Re[5]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:40
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

if (counter =! 0 )


LVV>Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали.

LVV>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!

Очевидно, товарищу начинающему программисту про дебаггеры и прочие излишества всякие нехорошие рассказать забыли.

Я понимаю когда у тебя сишные функции запросто друг на друга линкуются, потому как никакой особой проверки типов указателей нет, да и все равно все пользуются void* — а ты потом заходишь в функцию, и видишь что только что бывшую красивую структуру уже склоняют каким-то нереальным образом и что так быть не может — просто не могли так программисты задумать. Наверное...

А тут в дебаггере хоть что-нибудь должно было измениться после прохождения такого условия — не?

Я бы сказал, что для начинающих вообще программирование как таковое — зло. В результате мы имеем все более навороченные средства, на которых "начинающие программисты" не в силах выразить свои все более скудеющие мысли. А виноват, конечно же, инструмент. А что сейчас процентов 90 сайтов требует таких а...нных ресурсов — причем как на стороне клиента, так и на стороне сервера — ну так что же? Поставим еще один юнит, еще одну нитку волокна протянем, а пользователь пускай еще ядер докупает — 21-й век надворе!

ЗЫ: ты его не спросил таки что же именно он в отладчике увидел в этом месте, не?
Голь на выдумку хитра, однако...
Re[7]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:53
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...


Простите, какой из этого человека _программист_, если он не может выявить _свою_ _собственную_ описку в таком простом случае и в таком простом языке?

Может вам стоило бы учить начинающих не тому что "Си — зло" (к), а тому, что жизнь вообще и программирование в частности — говно — и что такие "описки" — это просто обычные рабочие моменты и что _программист_ должен знать о возможности их существования в программе и уметь находить подобные места и уметь анализировать их и исправлять — нет? Или чему вы там своих "начинающих программистов" вообще учите?
Голь на выдумку хитра, однако...
Re[6]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:56
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>ИМХО, проще микро ассемблера вообще ничего нет и ниже тоже мало кто существует.


Есть еще особенности работы современных процессоров: кеширования всякие, предсказания, многопроцессорность опять же, DMA... м-м-м... у меня все.
Голь на выдумку хитра, однако...
Re[6]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:57
Оценка: 1 (1)
Здравствуйте, blackhearted, Вы писали:

LVV>>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!


B>Студия даже ворнинг не показала? Не верю.

B>А если у вас ребята учатся писать на уровне ниже /W4 игонорируя вывод компилятора — то флаг им в руки.

B>
B>bool counter = false;
B>if (counter =! 0)
B>{
B>}
B>


B>

B>warning C4706: assignment within conditional expression


Хм... Либо я чего-то путаю, либо в _Си_ нет ни "булов", ни... ну, просто булов нет.
Голь на выдумку хитра, однако...
Re[4]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 21:59
Оценка:
Здравствуйте, rising_edge, Вы писали:

PD>>>А еще лучше вот так


PD>>>if(counter!=!0)...


R>>мораль: на си надо писать в сишном стиле if(counter), не страдая паскализмом и все будет хорошо


_>Когда я вижу if (c), я не знаю ничего о типе. Глядя на такую запись, я предполагаю, что это булевская переменная. Когда я вижу

_>if(c != 0) то, это, очевидно, c — целая;
_>if(c != NULL) то, это, очевидно, c — указатель;
_>if(c != '\0') то, это, очевидно, c — символ.

_>Код делается более читабельным. Строгая типизация рулит.


Я выделил выделенное. В _Си_ нет строгой типизации.
Голь на выдумку хитра, однако...
Re[7]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:03
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>В Си много таких подводных камней. Например, можно написать:


Есть места, где нет подводных камней?

Приведите меня к нему!
Покажите мне этого человека!
(к)
(авторский слог не сохранен — не помню я его... )

Pzz>
Pzz>if( something );
Pzz>  do_something_with_it();
Pzz>


Pzz>И ошибка в таком коде не бросается в глаза.


Угу. Запускать программы не пробовали? Если в каком-то месте какой-то кусочек кода не вызывается, хотя по всем внешним признакам (самосинг езмъ истино!) — должен — аккуратно вычитать соотв. место и найти опиську не составляет обого труда. Это вам не "плюсы" с ихними шаблонами и многоуровневыми аллокаторами и еще черт-и-знает-чем на что хватило фантазии авторов — на какие-нибудь скриптовые вставки, например.
Голь на выдумку хитра, однако...
Re[10]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:05
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Корректный сишный ответ был 42?


MZ>42 в С -- истина.


Не просто истина: можно точно сказать, что ей не хватает 42-х декрементов до лжи. Сделайте мне такую истину на каких-нибудь "супер-языках".
Голь на выдумку хитра, однако...
Re[8]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:09
Оценка:
Здравствуйте, igna, Вы писали:

LVV>>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...


I>Не, ну а если он 91 вместо 19 напишет, компилятор тоже должен выдать ошибку? Требовать от языка, чтобы он был устойчивым к перестановке букв при наборе слова, это уже чересчур, может он еще и самокорректирующимся должен быть?


У нас тут намедни нашли старинную и вообще непонятно как возникающую ошибку: расхождение по вертикали, которого быть не может не должно и вообще непонятно как такое может возникать в системе. Оказалось все просто: по вине переписчика в одном месте был перепутан подъем с переворотом... Всего делов-то!

ЗЫ: понятно, что "кошерно" вводить отдельную сущность для углов, и отдельную — для длинн и высот... Только потом...
Голь на выдумку хитра, однако...
Re[7]: С - зло... :)
От: alpha21264 СССР  
Дата: 12.01.11 22:10
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Здравствуйте, alpha21264, Вы писали:


A>>С альтернативами пока плохо.

A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей,
A>>(например функциональное программирование) которые в С++ уже не впихнешь.

TL>А нужно впихнуть?


Нуу... было бы полезно.

A>>Попробуй написать что-нибудь например на Питоне.

A>>Сразу поймешь, что в С++ тебе массы всего не хватает.
A>>И вообще он раздражает тебя своей многословностью.

TL>Придется таки попробовать: уже плешь проели этим своим питоном.


Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится

Течёт вода Кубань-реки куда велят большевики.
Re[9]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:21
Оценка: +1
Здравствуйте, Пацак, Вы писали:

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 константы — каждая со своим символьным именем. Лично мне пока что неизвестен метод придумывания "опискоустойчивых имен".
Голь на выдумку хитра, однако...
Re[2]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:24
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Вот то с чем осознанно или неосознанно мучается почти любой Ц/ЦПП программист:


K>1. препроцессор вместо раздельной компиляции


Э-э-э... у-у-у... Я вот как-то и не мучаюсь...

K>2. сишные строки


Это "нуль-терминированные", что ли? Чем не угодили-то?

K>PS: Тред не читал




ЗЫ: а "Ц/ЦПП" тоже Рабинович напел?
Голь на выдумку хитра, однако...
Re[5]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:42
Оценка:
Здравствуйте, 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, считая когда тот курс вообще закончился.
Голь на выдумку хитра, однако...
Re[8]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 22:47
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>>>С альтернативами пока плохо.

A>>>Но это не отменяет того факта, что в программировании накопилось дохрена идей,
A>>>(например функциональное программирование) которые в С++ уже не впихнешь.

TL>>А нужно впихнуть?


A>Нуу... было бы полезно.


И шо таки мешает?

TL>>Придется таки попробовать: уже плешь проели этим своим питоном.


A>Не боись. Я тоже недавно начал. Я не ожидал, что мне понравится


У меня сейчас серверная часть на питоне (вроде — я кроме бинарных пакетов и чатов с "серверными инженерами" ничего в живом виде не видел) написана. Вот ведь страшная вещь: серверные инженеры отладочный сервер подняли (после 3-недельной переписки с попытками выпытать у меня что же именно у меня не работает, после чего нашелся хороший человек и правильно их пнул и оказалось, что на сервере ничего-то и не поднято вообще ) — а вот релизный теперь не могут. Причем отписаться "сам дурак" тоже не могут: на отладочном все работает. Страшная, видать, сила, этот ваш питон!
Голь на выдумку хитра, однако...
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.