С - зло... :)
От: LaptevVV Россия  
Дата: 09.01.11 22:51
Оценка: 1 (1) +1 -5 :))) :))) :))) :))) :))) :))) :))
На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.

 if (counter =! 0 ) {

"Любая случайная последовательность символов является корректной С-программой"...
И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: С - зло... :)
От: niXman Ниоткуда https://github.com/niXman
Дата: 09.01.11 22:56
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


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

LVV>"Любая случайная последовательность символов является корректной С-программой"...
LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>

начитался сегодня вас на винграде
пачка бумаги А4 стОит 2000 р, в ней 500 листов. получается, лист обычной бумаги стОит дороже имперского рубля =)
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 09.01.11 23:03
Оценка:
Здравствуйте, niXman, Вы писали:

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


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


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

LVV>>"Любая случайная последовательность символов является корректной С-программой"...
LVV>>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>>

X>начитался сегодня вас на винграде

Я сегодня там один пост запостил... Только что сейчас...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: С - зло... :)
От: Alexey Sudachen Чили  
Дата: 09.01.11 23:53
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>"Любая случайная последовательность символов является корректной С-программой"...

LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!

Хы, а Perl — это тогда УЖАС-УЖАС что ли?! =)))
Re[2]: С - зло... :)
От: alexeiz  
Дата: 10.01.11 02:01
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

AS>Хы, а Perl — это тогда УЖАС-УЖАС что ли?! =)))


In general, if you think something isn't in Perl, try it out, because it usually is.

— Larry Wall

Re: С - зло... :)
От: disasm  
Дата: 10.01.11 02:02
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

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


как раз таки наоборот
сначала нужно начинат с С, а потом что угодно

я видел много делфистов которые переседая на С писали

if (counter = 0 ) {


а потом искали ошибки
Re: С - зло... :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 10.01.11 02:38
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


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


Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 10.01.11 08:09
Оценка:
Здравствуйте, Pzz, Вы писали:

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


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


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


Pzz>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.

Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 10.01.11 08:11
Оценка:
Здравствуйте, Alexey Sudachen, Вы писали:

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


LVV>>"Любая случайная последовательность символов является корректной С-программой"...

LVV>>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!

AS>Хы, а Perl — это тогда УЖАС-УЖАС что ли?! =)))

Perl — ПЕРЛ! Это для начинающих — УЖОС-УЖОС — УЖОС-УЖОС — УЖОС-УЖОС!!!!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re: С - зло... :)
От: igna Россия  
Дата: 10.01.11 08:31
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

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


Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C языков в 2011 году?
Re[3]: С - зло... :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 10.01.11 09:09
Оценка:
Здравствуйте, LaptevVV, Вы писали:

Pzz>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.

LVV>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...

Они по дефолту выключены, чтобы чайников не расстраивать. Вот в этом — зло
Re: С - зло... :)
От: alpha21264 СССР  
Дата: 10.01.11 09:14
Оценка: 3 (1)
Здравствуйте, LaptevVV, Вы писали:

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


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

LVV>"Любая случайная последовательность символов является корректной С-программой"...
LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>

Ну вот тебе код из программы, на которой скорее всего была разведена твоя материнка:

if( некая_функция( некие_параметры ),true )

Это работало несколько лет, потом случайно нашли.

Течёт вода Кубань-реки куда велят большевики.
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 10.01.11 10:53
Оценка: 1 (1) +1 -3 :)
Здравствуйте, alpha21264, Вы писали:

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


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


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

LVV>>"Любая случайная последовательность символов является корректной С-программой"...
LVV>>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>>

A>Ну вот тебе код из программы, на которой скорее всего была разведена твоя материнка:


A>if( некая_функция( некие_параметры ),true )


A>Это работало несколько лет, потом случайно нашли.

Вот именно! Язык НЕ ДОЛЖЕН ПОЗВОЛЯТЬ писать подобные вещи.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 10.01.11 11:02
Оценка:
Здравствуйте, igna, Вы писали:

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


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


I>Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C языков в 2011 году?

Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: С - зло... :)
От: alpha21264 СССР  
Дата: 10.01.11 11:12
Оценка: +3
Здравствуйте, LaptevVV, Вы писали:

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


A>>Ну вот тебе код из программы, на которой скорее всего была разведена твоя материнка:


A>>if( некая_функция( некие_параметры ),true )


A>>Это работало несколько лет, потом случайно нашли.

LVV>Вот именно! Язык НЕ ДОЛЖЕН ПОЗВОЛЯТЬ писать подобные вещи.

Я не спорю.
Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: С - зло... :)
От: ononim  
Дата: 10.01.11 13:28
Оценка: 2 (2) +3
A>>Это работало несколько лет, потом случайно нашли.
LVV>Вот именно! Язык НЕ ДОЛЖЕН ПОЗВОЛЯТЬ писать подобные вещи.
Почему? Вы претендуете на знание абсолютного критерия какие вещи можно писать а какие нет? Кому то не понравится и возможность написать

system("rm -rf");

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

if (counter =! 0 )

или даже проблемы с выделением/освобождением памяти корнем зла. На моей практике в достаточно больших проектах получить на руки баг с access violation это же просто кодерское щасте. 90% реальных (не учебных!) проблем — разборки с тн "бизнес" логикой.
Как много веселых ребят, и все делают велосипед...
Re[4]: С - зло... :)
От: ononim  
Дата: 10.01.11 13:29
Оценка: :)
A>Я не спорю.
A>Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.
Просто в нем не было условных переходов...
Как много веселых ребят, и все делают велосипед...
Re: С - зло... :)
От: MasterZiv СССР  
Дата: 10.01.11 14:05
Оценка:
On 10.01.2011 1:51, LaptevVV wrote:

> if (counter =! 0 ) {

>
>
> "Любая случайная последовательность символов является корректной С-программой"...
> И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях
> спотыкаются начинающие — УЖОС!

Так известно. С -- это ассемблер PDP-11, считающий себя языков высокого уровня.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: С - зло... :)
От: MasterZiv СССР  
Дата: 10.01.11 14:07
Оценка:
On 10.01.2011 14:02, LaptevVV wrote:

> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный

> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.

От них тошнит только. Ещё претенденты есть ?
Posted via RSDN NNTP Server 2.1 beta
Re[3]: С - зло... :)
От: MasterZiv СССР  
Дата: 10.01.11 14:10
Оценка:
On 10.01.2011 14:02, LaptevVV wrote:

> I>Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C

> языков в 2011 году?
> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный
> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.

На самом деле я-то знаю более простые языки, на которых нужно учиться
программировать. Но только ПОСЛЕ них уже на С программировать не захочется.
Так что вопрос о первом языке очень интересен (мне).
Posted via RSDN NNTP Server 2.1 beta
Re: С - зло... :)
От: Pavel Dvorkin Россия  
Дата: 10.01.11 14:51
Оценка: 4 (2)
Здравствуйте, LaptevVV, Вы писали:

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


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


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

if(counter!=!0)...

Симметричнее и красивее. И даже на философские мысли какие-то тянет
Предупреждение, правда, все равно будет.
With best regards
Pavel Dvorkin
Re: С - зло... :)
От: bkat  
Дата: 10.01.11 15:08
Оценка:
В любом языке есть свои подводные камни и типичные ошибки новичков.
С/С++ мы любим не за это
Re: С - зло... :)
От: Lorenzo_LAMAS  
Дата: 10.01.11 15:12
Оценка: +4 -2 :))) :))) :))) :)
LVV>
LVV> if (counter =! 0 ) {
LVV>

LVV>"Любая случайная последовательность символов является корректной С-программой"...
LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>

ЧУДОВИЩНО! УЖАСНО! А еще! Можно перепутать < и >! Это безобразие! Будь прокляты Ричи и Керниган! Как они могли! Доколе!
Of course, the code must be complete enough to compile and link.
Re[2]: С - зло... :)
От: Kerbadun  
Дата: 10.01.11 15:50
Оценка:
Здравствуйте, bkat, Вы писали:

B>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>С/С++ мы любим не за это

А за что вы его любите?

Когда он умрет, его мозг заспиртуют в стакане
Re[5]: С - зло... :)
От: alpha21264 СССР  
Дата: 10.01.11 15:57
Оценка: 1 (1) +1
Здравствуйте, ononim, Вы писали:

A>>Я не спорю.

A>>Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.
O>Просто в нем не было условных переходов...

Язык богов ныне утерян.
Я думаю, что условные переходы там были.
А вот операция "не" к _числовому_ операнду скорее всего не применялась.
Ну а операция "запятая" — это явные происки диавола.

Течёт вода Кубань-реки куда велят большевики.
Re[3]: С - зло... :)
От: alpha21264 СССР  
Дата: 10.01.11 16:00
Оценка:
Здравствуйте, Kerbadun, Вы писали:

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


B>>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>>С/С++ мы любим не за это

K>А за что вы его любите?


Это платформа. Позволяющая писать на любом уровне снизу до верху.

Правда сейчас это уже динозавр — круто, но устарело.

Течёт вода Кубань-реки куда велят большевики.
Re[6]: С - зло... :)
От: ononim  
Дата: 10.01.11 16:05
Оценка:
A>>>Я не спорю.
A>>>Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.
O>>Просто в нем не было условных переходов...

A>Язык богов ныне утерян.

A>Я думаю, что условные переходы там были.
а смысл, если все условия — истинные, а неправда (aka false) там отсутствовала по определению?
Как много веселых ребят, и все делают велосипед...
Re: С - зло... :)
От: ononim  
Дата: 10.01.11 16:07
Оценка: 1 (1) +1 -1
LVV> if (counter =! 0 ) {
пишите
 if (counter) {
и не парьтесь
Как много веселых ребят, и все делают велосипед...
Re[3]: С - зло... :)
От: blackhearted Украина  
Дата: 10.01.11 16:31
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


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


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


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


Pzz>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.

LVV>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...

Кто-то кроме студентоты таким страдает? А учеников нужно учить.
Re[2]: С - зло... :)
От: blackhearted Украина  
Дата: 10.01.11 16:35
Оценка:
Здравствуйте, ononim, Вы писали:

LVV>> if (counter =! 0 ) {

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


А как же

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


От ненавистного MS?
Re[4]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 17:02
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 10.01.2011 14:02, LaptevVV wrote:


>> I>Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C

>> языков в 2011 году?
>> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный
>> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.

MZ>На самом деле я-то знаю более простые языки, на которых нужно учиться

MZ>программировать. Но только ПОСЛЕ них уже на С программировать не захочется.
MZ>Так что вопрос о первом языке очень интересен (мне).

А можно озвучить "более простые языки, на которых нужно учиться программировать"? Желательно, настолько же близкие к низкому уровню.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 17:06
Оценка:
Здравствуйте, ononim, Вы писали:

A>>>>Я не спорю.

A>>>>Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.
O>>>Просто в нем не было условных переходов...

A>>Язык богов ныне утерян.

A>>Я думаю, что условные переходы там были.
O>а смысл, если все условия — истинные, а неправда (aka false) там отсутствовала по определению?
Православный Бог един, хотя его 3, так что нужна троичная логика. А поскольку ошибаться он(и) не может(ут), то все 3 варианта однозначно правильные.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 17:08
Оценка:
Здравствуйте, ononim, Вы писали:

Ну ви не теоретик.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[2]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 17:12
Оценка: +2
Здравствуйте, MasterZiv, Вы писали:

MZ>On 10.01.2011 1:51, LaptevVV wrote:


>> if (counter =! 0 ) {

>>
>>
>> "Любая случайная последовательность символов является корректной С-программой"...
>> И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях
>> спотыкаются начинающие — УЖОС!

MZ>Так известно. С -- это ассемблер PDP-11, считающий себя языков высокого уровня.


Кстати самый логичный ассемблер, как и система команд. Если бы не экономили в свое время каждый байт в коде...
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 17:22
Оценка:
Здравствуйте, alpha21264, Вы писали:

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


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


B>>>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>>>С/С++ мы любим не за это

K>>А за что вы его любите?


A>Это платформа. Позволяющая писать на любом уровне снизу до верху.


A>Правда сейчас это уже динозавр — круто, но устарело.


Хочу альтернативу. Раз устарело — давайте.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[7]: С - зло... :)
От: Pavel Dvorkin Россия  
Дата: 10.01.11 17:30
Оценка: :)
Здравствуйте, ononim, Вы писали:

A>>Язык богов ныне утерян.

A>>Я думаю, что условные переходы там были.
O>а смысл, если все условия — истинные, а неправда (aka false) там отсутствовала по определению?

Это ты зря. Как извстно, Пилат спросил Иисуса : "что есть истина" ? И Иисус не ответил. Потому что он не знал языка C/C++
With best regards
Pavel Dvorkin
Re[5]: С - зло... :)
От: alpha21264 СССР  
Дата: 10.01.11 17:48
Оценка: +1
Здравствуйте, Ops, Вы писали:

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


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


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


B>>>>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>>>>С/С++ мы любим не за это

K>>>А за что вы его любите?


A>>Это платформа. Позволяющая писать на любом уровне снизу до верху.


A>>Правда сейчас это уже динозавр — круто, но устарело.


Ops>Хочу альтернативу. Раз устарело — давайте.


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

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

Течёт вода Кубань-реки куда велят большевики.
Re[6]: С - зло... :)
От: Ops Россия  
Дата: 10.01.11 18:40
Оценка: :)
Здравствуйте, alpha21264, Вы писали:

Ops>>Хочу альтернативу. Раз устарело — давайте.


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

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

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

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

Ну в питоне мне не хватает много чего из хотя бы С. Задачи такие.
А вот полноценной альтернативы нет и пока не предвидится.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[3]: С - зло... :)
От: CreatorCray  
Дата: 10.01.11 19:14
Оценка: 1 (1)
Здравствуйте, blackhearted, Вы писали:

B>А как же

B>

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

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

Пользуйтесь кошерными компиляторами, у которых нет performance issue для такого сравнения. ICC например.
Оно со всех сторон пользительнее выйдет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: С - зло... :)
От: Пацак Россия  
Дата: 10.01.11 20:34
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>От них тошнит только. Ещё претенденты есть ?


Java, например. В ней подобный фокус можно выкинуть только если переменная внутри условия будет булевской.

boolean counter;  // WTF????
...
if (counter =! true) {
Ку...
Re[8]: С - зло... :)
От: Пацак Россия  
Дата: 10.01.11 20:41
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Это ты зря. Как извстно, Пилат спросил Иисуса : "что есть истина" ? И Иисус не ответил. Потому что он не знал языка C/C++


Корректный сишный ответ был 42?
Ку...
Re[5]: С - зло... :)
От: Пацак Россия  
Дата: 10.01.11 20:49
Оценка:
Здравствуйте, Пацак, Вы писали:

MZ>>От них тошнит только. Ещё претенденты есть ?

П>Java, например. В ней подобный фокус можно выкинуть только если переменная внутри условия будет булевской.

Upd: А в питоне подобное вообще вызывает синтаксическую ошибку:

>>> b = True
>>> if b = not True: pass
  File "<stdin>", line 1
    if b = not True: pass
         ^
SyntaxError: invalid syntax
Ку...
Re[6]: С - зло... :)
От: bkat  
Дата: 10.01.11 22:08
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Но это не отменяет того факта, что в программировании накопилось дохрена идей,

A>(например функциональное программирование) которые в С++ уже не впихнешь.

Так, для справки...
Lisp появился в 1958 году.
Он всего лишь на годик-другой моложе Фортрана
Re: С - зло... :)
От: shasa  
Дата: 11.01.11 08:07
Оценка: +2
Здравствуйте, LaptevVV, Вы писали:

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


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


Напиши пару-тройку нужных людям и работающих программ, а потом пиши такое. Я уверен что на других языках можно найти примеры похожего характера.
Re[4]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 08:44
Оценка: 1 (1) -5
Здравствуйте, MasterZiv, Вы писали:

MZ>On 10.01.2011 14:02, LaptevVV wrote:


>> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный

>> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.

MZ>От них тошнит только.

Возможно, программирование — не ваша профессия?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 08:48
Оценка: -1
Здравствуйте, blackhearted, Вы писали:

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

Pzz>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.
LVV>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...
B>Кто-то кроме студентоты таким страдает? А учеников нужно учить.
Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана.
Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором.
Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 09:00
Оценка: +1 -4 :)
Здравствуйте, ononim, Вы писали:

A>>>Это работало несколько лет, потом случайно нашли.

LVV>>Вот именно! Язык НЕ ДОЛЖЕН ПОЗВОЛЯТЬ писать подобные вещи.
O>вообще меня удивляет то что люди считают ошибки в стиле

if (counter =! 0 )

или даже проблемы с выделением/освобождением памяти корнем зла. На моей практике в достаточно больших проектах получить на руки баг с access violation это же просто кодерское щасте. 90% реальных (не учебных!) проблем — разборки с тн "бизнес" логикой.

Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали.
Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 09:09
Оценка:
Здравствуйте, bkat, Вы писали:

B>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>С/С++ мы любим не за это
Вы знаете, я с С познакомился по первому изданию K&R. C TurboC++ — еще году то ли 87, то ли 88ю С С++ я познакомился по первому изданию Страуструпа в 91 году. Я любил этот язык настолько, что написал аж 3 книжки, причем для студентов. Четвертую — не дописал еще (там все программы — на С/С++).
Больших прог на С/С++ мне писать не довелось (ну, не более 15000 операторов), но опыт программирования у меня большой — порядка 20 лет. От кодов ЭВМ, до PL-1 и С++, от операционной системы (как раз на ЭВМ типа pdp-11) до зарплаты. И членом команды и руководителем команды.
Обвинить меня в ненависти к С/С++ — нельзя. Но после того, как я познакомился в Блэск-боксом (2009 год) + Компонентный Паскаль, я все более убеждаюсь, что С/С++ — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 09:13
Оценка: -1
Здравствуйте, Ops, Вы писали:

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

A>>Но это не отменяет того факта, что в программировании накопилось дохрена идей,
A>>(например функциональное программирование) которые в С++ уже не впихнешь.
Вполне себе впихнешь. Почитайте Джеймса Коплиена Advanced C++ — он там пишет.
A>>Попробуй написать что-нибудь например на Питоне.
A>>Сразу поймешь, что в С++ тебе массы всего не хватает.
A>>И вообще он раздражает тебя своей многословностью.

Ops>Ну в питоне мне не хватает много чего из хотя бы С. Задачи такие.
Ops>А вот полноценной альтернативы нет и пока не предвидится.
А попробуйте Оберон...
Вполне себе альтернатива.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 09:16
Оценка: -7
Здравствуйте, shasa, Вы писали:

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


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


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


S>Напиши пару-тройку нужных людям и работающих программ, а потом пиши такое. Я уверен что на других языках можно найти примеры похожего характера.

Я писал пару-тройку полезных программ еще в то время, когда вас даже в проекте не было. Яйца курицу — не учат.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: С - зло... :)
От: MescalitoPeyot Украина  
Дата: 11.01.11 09:41
Оценка: 1 (1)
Здравствуйте, LaptevVV, Вы писали:

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


B>>В любом языке есть свои подводные камни и типичные ошибки новичков.

B>>С/С++ мы любим не за это
LVV>Вы знаете, я с С познакомился по первому изданию K&R. C TurboC++ — еще году то ли 87, то ли 88ю С С++ я познакомился по первому изданию Страуструпа в 91 году. Я любил этот язык настолько, что написал аж 3 книжки, причем для студентов. Четвертую — не дописал еще (там все программы — на С/С++).
LVV>Больших прог на С/С++ мне писать не довелось (ну, не более 15000 операторов), но опыт программирования у меня большой — порядка 20 лет. От кодов ЭВМ, до PL-1 и С++, от операционной системы (как раз на ЭВМ типа pdp-11) до зарплаты. И членом команды и руководителем команды.
LVV>Обвинить меня в ненависти к С/С++ — нельзя. Но после того, как я познакомился в Блэск-боксом (2009 год) + Компонентный Паскаль, я все более убеждаюсь, что С/С++ — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в обучении, поэтому абсолютно несомненно, что языки Вирта абсолютно лучше С/С++ для обучения.

Вот именно. Программистом не являетесь, больших программ не писали, однако напозволяли себе тут уже выше-ниже по топику кучу высказываний типа "курица с яйцами" и "программист — это не ваше". Хоть сколько-нибудь неначинающий разработчик оперирует не с ифами и даже не с классами, а с конкретными задачами. (У самого под рукой плюсовый проект, где и обжектив си ифоновское, и ява с йни андроидовские и как-то пофигу какие где там ифы и наследование, главное уметь переключаться и ловить волну).
Засим предлагаю переехать в КСВ.
... << RSDN@Home 1.2.0 alpha 4 rev. 1138>>
Re[5]: С - зло... :)
От: Lorenzo_LAMAS  
Дата: 11.01.11 10:18
Оценка: +1 -1
LVV>Дело в том, что данный оператор присваивания был написан начинающим в учебной программе. И он спрашивал на Винграде, почему среднее арифметическое не вычисляется. То есть, ЭТО ПРОСТО ОПИСКА. Чел правильно разобрался в алгоритме, правильно написал всю функцию, то есть ПРАВИЛЬНО РАЗОБРАЛСЯ с бизнес-логикой вычисления среднего арифметического последовательности чисел. И сделал ДУРАЦКУЮ ОПИСКУ. Естественно, поиски ошибки в логике программы ничего не дали.
LVV>Поэтому для начинающих язык С — зло! Причем в сочетании с со студией — зло практически АБСОЛЮТНОЕ!

у нас есть кхм.... коллега — он регулярно путает <, >, <=, >=, чем реально доставляет всем остальным. означает ли это, что С++ — плохой язык?
нет, это означает, что чел — неряха и невнимательное чмо. и никакой язык с таким бардаком в башке не поможет.

язык си для начинающих — зло, но вовсе не по причине того, что человек элементарно операторы путает.
Of course, the code must be complete enough to compile and link.
Re[4]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 10:22
Оценка: -1 :)))
Здравствуйте, 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>Хоть сколько-нибудь неначинающий разработчик оперирует не с ифами и даже не с классами, а с конкретными задачами. (У самого под рукой плюсовый проект, где и обжектив си ифоновское, и ява с йни андроидовские и как-то пофигу какие где там ифы и наследование, главное уметь переключаться и ловить волну).

Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО!
Больше спорить не буду.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: С - зло... :)
От: Lorenzo_LAMAS  
Дата: 11.01.11 10:32
Оценка: 1 (1) +5
LVV>Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО!
LVV>Больше спорить не буду.

И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.
Of course, the code must be complete enough to compile and link.
Re[6]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 10:48
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

LVV>>Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО!

LVV>>Больше спорить не буду.

L_L>И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.

Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 11:12
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

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


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

Pzz>>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.
LVV>>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...
B>>Кто-то кроме студентоты таким страдает? А учеников нужно учить.
LVV>Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана.
Фортран — это, конечно, вещь. С ним можно всё что угодно сравнивать, всё равно никто не сможет аргументировано доказать.

LVV>Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором.

Treat warnings as errors и никаких гвоздей. Получишь палки в колёса от компилятора.
Или нужно полагаться полностью на дизайн языка и голову вообще не включать?
Так мы докатимся до того, что в языке вообще не может быть никаких side-effects и всё иммутабельно — есть такой подход в обучении, начинать с подобных языков. Только вот Виртовский Паскаль под это описание ну не подходит никак.

LVV>Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания.

И опять он — великий и ужасный. Где сейчас начитают учить с фортрана, в ПТУ? В моё время учили как раз с Паскаля. И ошибки делали на Виртовском творении еще покруче, чем на в будущем на Сях.

Можно еще Аду вспомнить — вот она, безопасность. Но это уже оффтоп.
Re[7]: С - зло... :)
От: Lorenzo_LAMAS  
Дата: 11.01.11 11:16
Оценка:
LVV>Он не путает. Это — простая описка. Бывает, что при наборе слова буквы наоборот напечатаешь. Здесь именно тот случай...

Так и в вашем славном Обероне можно описаться и вместо + использовать -, а вместо * — /.
С — и правда не самый лучший язык для начинающих, но его и создали не для этого.

Впору задуматься, скорее, хорош ли преподаватель и программа обучения, что в качестве первого
выбирают такой язык.
Of course, the code must be complete enough to compile and link.
Re[3]: С - зло... :)
От: Vzhyk  
Дата: 11.01.11 11:16
Оценка: 1 (1) +2 -1
11.01.2011 11:16, LaptevVV пишет:

> S>Напиши пару-тройку нужных людям и работающих программ, а потом пиши

> такое. Я уверен что на других языках можно найти примеры похожего характера.
> Я писал пару-тройку полезных программ еще в то время, когда вас даже в
> проекте не было. Яйца курицу — не учат.
Мда-с, жалко мне твоих студентов.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 11:16
Оценка:
Здравствуйте, Ops, Вы писали:

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


MZ>>On 10.01.2011 14:02, LaptevVV wrote:


>>> I>Интересно, какие языки могли бы войти в эту пару-тройку более простых чем C

>>> языков в 2011 году?
>>> Более просты, наверное, нет. А вот простые и более надежные — есть. Компонентный
>>> паскаль — Оберон. Там невозможно совершить подобных ошибок по по определению.

MZ>>На самом деле я-то знаю более простые языки, на которых нужно учиться

MZ>>программировать. Но только ПОСЛЕ них уже на С программировать не захочется.
MZ>>Так что вопрос о первом языке очень интересен (мне).

Ops>А можно озвучить "более простые языки, на которых нужно учиться программировать"? Желательно, настолько же близкие к низкому уровню.


А зачем низкий уровень?

Как-то нормально прошло обучение Архитектура/Паскаль -> С -> Asm/С++ -> microAsm.

ИМХО, проще микро ассемблера вообще ничего нет и ниже тоже мало кто существует.
Re[5]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 11:25
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:


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

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

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


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


warning C4706: assignment within conditional expression

Re[4]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 11:26
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


B>>А как же

B>>

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

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

CC>Пользуйтесь кошерными компиляторами, у которых нет performance issue для такого сравнения. ICC например.

CC>Оно со всех сторон пользительнее выйдет.

Ну, судя по всему, ТС использует для обучения MSVS и подключать к ней ICC не хочет.
Re[3]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 11:27
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


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


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


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


S>>Напиши пару-тройку нужных людям и работающих программ, а потом пиши такое. Я уверен что на других языках можно найти примеры похожего характера.

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

Классный мог бы выйти вброс
Re[4]: С - зло... :)
От: vitasR  
Дата: 11.01.11 12:02
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Есть такая легенда. Когда-то был язык богов, на котором была невозможна неправда.


...пока один бог не изрек: "это высказывание является ложным"
Re[2]: С - зло... :)
От: vitasR  
Дата: 11.01.11 12:06
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

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


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


мораль: на си надо писать в сишном стиле if(counter), не страдая паскализмом и все будет хорошо
Re[3]: С - зло... :)
От: rising_edge  
Дата: 11.01.11 12:27
Оценка: +1 :)
Здравствуйте, vitasR, Вы писали:

R>Здравствуйте, Pavel Dvorkin, Вы писали:


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


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


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


Когда я вижу if (c), я не знаю ничего о типе. Глядя на такую запись, я предполагаю, что это булевская переменная. Когда я вижу
if(c != 0) то, это, очевидно, c — целая;
if(c != NULL) то, это, очевидно, c — указатель;
if(c != '\0') то, это, очевидно, c — символ.

Код делается более читабельным. Строгая типизация рулит.
Re[4]: С - зло... :)
От: blackhearted Украина  
Дата: 11.01.11 12:34
Оценка: :)
Здравствуйте, Vzhyk, Вы писали:

V>11.01.2011 11:16, LaptevVV пишет:


>> S>Напиши пару-тройку нужных людям и работающих программ, а потом пиши

>> такое. Я уверен что на других языках можно найти примеры похожего характера.
>> Я писал пару-тройку полезных программ еще в то время, когда вас даже в
>> проекте не было. Яйца курицу — не учат.
V>Мда-с, жалко мне твоих студентов.

Астрахань-с, чё жалеть?
Re[6]: С - зло... :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.11 13:20
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.


Это могла быть просто описка. И ее, между прочим, не видно. Я долго пялился в тот фрагмент кода, прежде чем понял, в чем проблема. А я на Си пишу давно и помногу.

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

if( something );
  do_something_with_it();


И ошибка в таком коде не бросается в глаза.
Re: С - зло... :)
От: quwy  
Дата: 11.01.11 13:21
Оценка: +1 -1 :)
Препод -- это диагноз. Я сам паскалист, сиподобные языки мне чисто визуально неприятны, но ваши взгляды и заявления заставляют плеваться.
Re[2]: С - зло... :)
От: LaptevVV Россия  
Дата: 11.01.11 13:40
Оценка:
Здравствуйте, quwy, Вы писали:

Q>Препод -- это диагноз. Я сам паскалист, сиподобные языки мне чисто визуально неприятны, но ваши взгляды и заявления заставляют плеваться.

А много знаете о моих взглядах?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: С - зло... :)
От: Ops Россия  
Дата: 11.01.11 13:45
Оценка: +2
Здравствуйте, Пацак, Вы писали:

П>Здравствуйте, Пацак, Вы писали:


MZ>>>От них тошнит только. Ещё претенденты есть ?

П>>Java, например. В ней подобный фокус можно выкинуть только если переменная внутри условия будет булевской.

П>Upd: А в питоне подобное вообще вызывает синтаксическую ошибку:


П>
>>>> b = True
>>>> if b = not True: pass
П>  File "<stdin>", line 1
П>    if b = not True: pass
П>         ^
П>SyntaxError: invalid syntax
П>


Диагностика — супер, понравилась. Лучше просто:"Error"
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[5]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 13:55
Оценка: +1
On 10.01.2011 23:34, Пацак wrote:

> Java, например.


Ни в коем случае Java не должна быть первым языком.
Она чистый ООП, программировать надо начинать БЕЗ ООП.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 13:55
Оценка:
On 11.01.2011 11:44, LaptevVV wrote:

> MZ>От них тошнит только.

> Возможно, программирование — не ваша профессия?

Да нет, моя.
Posted via RSDN NNTP Server 2.1 beta
Re[5]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 13:56
Оценка: +2
On 10.01.2011 20:02, Ops wrote:

> А можно озвучить "более простые языки, на которых нужно учиться

> программировать"? Желательно, настолько же близкие к низкому уровню.

Так scheme, common lisp, python . Низкий уровень тут ни при чём.
Posted via RSDN NNTP Server 2.1 beta
Re[9]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 13:57
Оценка: 1 (1)
On 10.01.2011 23:41, Пацак wrote:

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


42 в С -- истина.
Posted via RSDN NNTP Server 2.1 beta
Re[4]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 13:59
Оценка:
On 11.01.2011 15:27, rising_edge wrote:

> Когда я вижу if (c), я не знаю ничего о типе.


Так и не надо ничего знать ! Компилятор знает!
Posted via RSDN NNTP Server 2.1 beta
Re[6]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 14:00
Оценка:
On 10.01.2011 20:48, alpha21264 wrote:

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

> Сразу поймешь, что в С++ тебе массы всего не хватает.
> И вообще он раздражает тебя своей многословностью.
+1
Posted via RSDN NNTP Server 2.1 beta
Re[7]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 14:01
Оценка: +1
On 11.01.2011 1:08, bkat wrote:

> A>Но это не отменяет того факта, что в программировании накопилось дохрена идей,

> A>(например функциональное программирование) которые в С++ уже не впихнешь.
>
> Так, для справки...
> Lisp появился в 1958 году.
> Он всего лишь на годик-другой моложе Фортрана

Ну всё равно же он НАКОПИЛСЯ ...
Posted via RSDN NNTP Server 2.1 beta
Re[4]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 14:03
Оценка:
On 11.01.2011 12:41, MescalitoPeyot wrote:

> Вот именно. Программистом не являетесь, больших программ не писали, однако

> напозволяли себе тут уже выше-ниже по топику кучу высказываний типа "курица с
> яйцами" и "программист — это не ваше".


Тсссс, ты чего это ? На папу ? Не, ты это зря.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 14:03
Оценка:
On 11.01.2011 12:09, LaptevVV wrote:

> — для начинающих — это ЗЛО. Никлаус Вирт — гораздо опытнее Страуструпа в

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

Так для обучения -- кто бы спорил. Только вот
Posted via RSDN NNTP Server 2.1 beta
Re[5]: С - зло... :)
От: MasterZiv СССР  
Дата: 11.01.11 14:10
Оценка:
On 11.01.2011 13:22, LaptevVV wrote:

> СВИНЬЮ! И это — ЗЛО!

> Больше спорить не буду.

LaptevVV, ну хорошо, С зло для начинающих -- я согласен на 100%.

Давайте ещё раз подумаем над проблемой.

Данный-то случай не связан с проблемами именно программирования,
положим, наш начинающий программист уже знаком с каким-то языком
программирования и умеет программировать, но не на C. Но ведь когда-то нашему
начинающему, если он хочет освоить С, придётся на нём учиться писать и
ТАКИЕ ошибки он может сделать, и они НЕ СВЯЗАНЫ с тем, что он не знает
программирования, они связаны с тем, что он не знает именно язык С.

Я бы в паскале мог сделать (и делал) точно такие же ошибки, связанные
с тем, что приоритет логических операций там больше, чем операций сравнения.
Правда, конечно паскаль на это чётко ругается и не компилирует программу.

Конечно, С -- язык злобных хакеров для написания операционной системы UNIX.
Posted via RSDN NNTP Server 2.1 beta
Re[7]: С - зло... :)
От: Ops Россия  
Дата: 11.01.11 14:12
Оценка: +1
Здравствуйте, Pzz, Вы писали:

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


L_L>>И не надо, так как пример ваш — дрянь. Ладно бы человек нахреначил чего-то там с памятью или указателями, а тут он тупо операторы путает. Этак он и плюс с минусом или -= с =- попутает а вы будете орать, какое С — лютое зло.


Pzz>Это могла быть просто описка. И ее, между прочим, не видно. Я долго пялился в тот фрагмент кода, прежде чем понял, в чем проблема. А я на Си пишу давно и помногу.


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


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


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


Ругнется компилятор, да и случайно так не напишешь. Опять же холивар со скобками не на пустом месте возник.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[8]: С - зло... :)
От: 9h05t  
Дата: 11.01.11 14:35
Оценка:
гы-гы, тролль накормлен, господа!
Re[7]: С - зло... :)
От: igna Россия  
Дата: 11.01.11 14:53
Оценка: 1 (1) +5 -1
Здравствуйте, LaptevVV, Вы писали:

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


Не, ну а если он 91 вместо 19 напишет, компилятор тоже должен выдать ошибку? Требовать от языка, чтобы он был устойчивым к перестановке букв при наборе слова, это уже чересчур, может он еще и самокорректирующимся должен быть?
Re[8]: С - зло... :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.11 15:49
Оценка:
Здравствуйте, Ops, Вы писали:

Ops>Ругнется компилятор, да и случайно так не напишешь. Опять же холивар со скобками не на пустом месте возник.


Я так описываюсь иногда (точку с запятой в конце строки на автомате ставишь, и в глаза она совершенно не бросается). gcc не ругается, зараза.
Re[3]: С - зло... :)
От: wander  
Дата: 11.01.11 16:06
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


Нус, уважаемый, тут есть только его слово против твоего. Поэтому не надо давить возрастом, это несерьезно выглядит. Возраст, так же как и количество "опыта" ничего не значат вот по какой причине: есть очень много людей, у которых не опыт 20 лет, а 1 год опыта помноженный на 20. Я не говорю, что ты как раз этот случай, но данный факт, дискредитирует подобные аргументы полностью.

Из рассказа «Письмо к ученому соседу» Антона Павловича Чехова (1860—1904). Автор этого письма — «Войска Донского отставной урядник из дворян» Василий Семи-Булатов — пишет своему соседу:

«Вы сочинили и напечатали в своем умном соченении, как сказал мне о. Герасим, что будто бы на самом величайшем светиле, на солнце, есть черные пятнушки. Этого не может быть, потому что этого не может быть никогда. Как Вы могли видеть на солнце пятны, если на солнце нельзя глядеть простыми человеческими глазами, и для чего на нем пятны, если и без них можно обойтиться? Из какого мокрого тела сделаны эти самые пятны, если они не сгорают? Может быть по-вашему и рыбы живут на солнце? Извините меня дурмана ядовитого, что так глупо сострил! Ужасно я предан науке!»

Re[4]: С - зло... :)
От: Centaur Россия  
Дата: 11.01.11 17:01
Оценка:
Здравствуйте, rising_edge, Вы писали:

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

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

Посмотреть тип переменной вполне можно и не полениться. Даже если его не видно из имени. А его должно.

if (n) — очевидно, n — целое;
if (size) — очевидно, size — количество байт или элементов;
if (p) — очевидно, p — указатель;
if (c) — очевидно, c — символ.
Re[5]: С - зло... :)
От: artem_korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 11.01.11 17:12
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>1. Я имею большИй опыт программирования, чем поучающие меня программисты. Не писал больших программ на С/С++, на остальном — писал. Операционная система — большая программа? И имею 18-тилетний опыт преподавания программирования. Чего поучающий меня программист явно не имеет вообще.


Операционная система — это хорошо, это уважамс.

А вот что может дать 18-летний опыт преподавания — я очень смутно понимаю. Я в университете видел людей, преподававших свой предмет лет по 10 и ничего в нём не понимающих. Видел преподавателей, которые принимая программы на ассемблере или паскале ограничивались проверкой синтаксиса.

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

LVV>Вот именно! А то вы невнимательно читаете. Начинающий — РЕШАЛ ЗАДАЧУ! И все с логикой и алгоритмизацией у него было в порядке. А язык подложил ему БОЛЬШУЮ СВИНЬЮ! И это — ЗЛО!


Ну тут уже несколько раз повторяли, что нужно было читать предупреждения компилятора.
В C++ есть и гораздо более изощрённые способы выстрелить себе в ногу. Никто не спорит с тем, что есть неудобные и чреватые ошибками моменты. Проблема в том, что хороших альтернатив нет (учитываем распространённость языков, доступность библиотек, литературы, средств разработки, API к различным сервисам и т.д.). Может быть тот же Oberon в этом плане лучше, я не знаю. Но я не буду писать на нём продакшн-сервисы сейчас, потому как после меня это некому будет поддерживать. Всё-таки Java/C/C++/C# — это, де-факто, мэйнстрим.

Сам я сначала учил бэйсик (который на спектрумах был), потом паскаль, потом С. Но, честно говоря, я сейчас что-то сомневаюсь в том что изучение бэйсика и паскаля было для меня полезным. Я изучил два языка, которые сложно применить в работе, а потом тратил время на изучение синтаксиса и библиотек С. Уж наверное лучше бы сразу С учил.

А сейчас можно начинать изучение с питона — его знание не будет бесполезным, это вполне себе распространённый язык.
С уважением, Artem Korneev.
Re: С - зло... :)
От: Pzz Россия https://github.com/alexpevzner
Дата: 11.01.11 17:52
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


А в чем вообще цель обучения? Если написать курсовую из 300 строк и забыть об этом программировании, как о страшном сне, то лучше может и вовсе ему (программированию) так не учиться? Если же стать программистом, все промышленные языки довольно плохие, а было бы неплохо, чтобы ученик рос не в совсем уж стерильных условиях. Иначе как он научится такие проблемы в реальной жизни решать?

И да, изучать алгоритмы лучше на каком-то совсем уж упрощенном языке, типа того, который Дейкстра использует. Потому что прибамбасы современных языков для изучения алгоритмов совершенно не нужны и только мешают.
Re[2]: С - зло... :)
От: Ops Россия  
Дата: 11.01.11 19:07
Оценка:
Здравствуйте, Pzz, Вы писали:

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


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


Pzz>А в чем вообще цель обучения? Если написать курсовую из 300 строк и забыть об этом программировании, как о страшном сне, то лучше может и вовсе ему (программированию) так не учиться? Если же стать программистом, все промышленные языки довольно плохие, а было бы неплохо, чтобы ученик рос не в совсем уж стерильных условиях. Иначе как он научится такие проблемы в реальной жизни решать?


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

Pzz>И да, изучать алгоритмы лучше на каком-то совсем уж упрощенном языке, типа того, который Дейкстра использует. Потому что прибамбасы современных языков для изучения алгоритмов совершенно не нужны и только мешают.


И да и нет. Я бы под это вообще среду отдельную сделал, с интерпретатором, генератороми всяких данных, и сандбокс к ней.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re[4]: С - зло... :)
От: CreatorCray  
Дата: 11.01.11 20:54
Оценка: +2
Здравствуйте, rising_edge, Вы писали:

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

Когда я вижу if (c) я точно знаю что это проверка на неравенство нулю.
И мне совершенно плевать какой тип у данной переменной. bool, числовой или указатель. Один фиг.

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

Он и так совершенно читабелен.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[4]: С - зло... :)
От: Draqon  
Дата: 11.01.11 20:56
Оценка: +1
Здравствуйте, rising_edge, Вы писали:

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


Да, щаз: if (counter=!1)
Re[8]: С - зло... :)
От: Пацак Россия  
Дата: 12.01.11 00:12
Оценка: +1 -1 :)
Здравствуйте, igna, Вы писали:

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


Некорректное сравнение. Во-первых 19 и 91 — это совершенно определенно какие-то константы, хардкодить которые непосредственно внутрь алгоритма — зло. Вероятность же ошибки в хедере меньше во столько же раз, во сколько количество объявлений констант меньше количества мест, где они используются. Во-вторых 19 и 91, как ни крути, отличаются лишь семантикой — с точки зрения синтаксиса они совершенно похожи и отличить, когда в коде нельзя использовать одно, а когда другое — компилятор в принципе не способен. В случае же смешения "!=" и "=!" мы имеем не просто разные по смыслу действия, мы имеем синтаксически различные конструкции — у них даже количество операций и то не совпадает. Причем насколько я помню C++ (давно его не трогал уже, так что может и вру), нормальные компиляторы в курсе этой проблемы и, в отличие от "19 vs 91", честно выдают на подобном коде warning. Вопрос лишь в том, почему именно warning, почему не error.

I>Требовать от языка, чтобы он был устойчивым к перестановке букв при наборе слова, это уже чересчур


Дык как раз с перестановками букв в слове проблем, как правило, не бывает — в большинстве случаев, написав скажем dobule вместо double или PACKET_SZIE вместо PACKET_SIZE, мы честно получим некомпилирующуюся программу. Проблемы возникают, когда мы начинаем переставлять слова в предложениях.
Ку...
Re[7]: С - зло... :)
От: Пацак Россия  
Дата: 12.01.11 00:26
Оценка:
Здравствуйте, Ops, Вы писали:

П>>
П>>    if b = not True: pass
П>>         ^
П>>SyntaxError: invalid syntax
П>>


Ops>Диагностика — супер, понравилась. Лучше просто:"Error"


Ну в сочетании со стрелкой-указателем это фактически означает "line XXX: Unexpected token '=' at position 10". Вполне так информативно имхо. Т.е. могло бы быть и получше, конечно, не спорю, но при минимальном знании питоновского синтаксиса и такое сообщение тоже напрягов не вызывает.
Ку...
Re: С - зло... :)
От: Kluev  
Дата: 12.01.11 00:49
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


Правильно. Учится нужно на КулХацкеле.
А true недостаков С и (С++) вы, профессор, еще не заметили.

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

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

А синтаксис — это для детишек

PS: Тред не читал
Re[2]: С - зло... :)
От: ononim  
Дата: 12.01.11 01:51
Оценка: +1 -1
K>Вот то с чем осознанно или неосознанно мучается почти любой Ц/ЦПП программист:
K>1. препроцессор вместо раздельной компиляции
/me поперхнулся
причем тут препроцессор и чем плоха та раздельная компиляция что есть в любой мало мальски стоящей среде — разбиеие на проекты, модули etc..

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

а че мучительного в std::string/std::wstring?
Как много веселых ребят, и все делают велосипед...
Re[3]: С - зло... :)
От: Мишень-сан  
Дата: 12.01.11 07:28
Оценка:
Здравствуйте, ononim, Вы писали:

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

K>>1. препроцессор вместо раздельной компиляции
O>/me поперхнулся
O>причем тут препроцессор и чем плоха та раздельная компиляция что есть в любой мало мальски стоящей среде — разбиеие на проекты, модули etc..

1) Отладка сколь-нибудь нетривиальных макросов — ещё то веселье.
2) Заголовки вместо нормальных модулей особо доставляют при поиске зависимостей, а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал. А раздельная компиляция — изменение одного хедера может привести к пересборке всего солюшена, запросто.

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

O>а че мучительного в std::string/std::wstring?

Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих. А проблема стандартных сишных строк относится скорее к проблеме сишных массивов как таковых, а это потеря размерности при передаче в другую функцию вследствие приведения к указателю.
Re[4]: С - зло... :)
От: ononim  
Дата: 12.01.11 07:50
Оценка:
O>>/me поперхнулся
O>>причем тут препроцессор и чем плоха та раздельная компиляция что есть в любой мало мальски стоящей среде — разбиеие на проекты, модули etc..
МС>1) Отладка сколь-нибудь нетривиальных макросов — ещё то веселье.
макросы зло (c)

МС>2) Заголовки вместо нормальных модулей особо доставляют при поиске зависимостей, а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал. А раздельная компиляция — изменение одного хедера может привести к пересборке всего солюшена, запросто.

Ну это да.. Но все в ваших руках — не надо делать настолько глобальные хедеры и не надо их часто менять если уж сделали Впрочем проблема конечно имеется, но она не так уж страшна

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

O>>а че мучительного в std::string/std::wstring?
МС>Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих.
Дык.. это зависит от реализации стринга. Вот тут например строки reference-counted: http://stdcxx.apache.org/

МС>А проблема стандартных сишных строк относится скорее к проблеме сишных массивов как таковых, а это потеря размерности при передаче в другую функцию вследствие приведения к указателю.

Ну так не пользуйтесь в С++ "сишными" строками. Пользуйтесь string'ом, он хранит длину (или может быстро ее посчитать)
Как много веселых ребят, и все делают велосипед...
Re[2]: С - зло... :)
От: CreatorCray  
Дата: 12.01.11 08:09
Оценка:
Здравствуйте, Kluev, Вы писали:

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


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

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

Нельзя ли развить мысль?
Бо единственное что на самом деле меня в околоС++шной области напрягает — криво написанные библиотеки.
В частности на 80% бесполезная и в целом малофункциональная библиотека под названием CRT.
Но это ни разу не проблема именно языка. Это извечная проблема обратной совместимости и поддержки legacy.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[5]: С - зло... :)
От: Мишень-сан  
Дата: 12.01.11 08:24
Оценка:
Здравствуйте, ononim, Вы писали:

O>>>/me поперхнулся

O>>>причем тут препроцессор и чем плоха та раздельная компиляция что есть в любой мало мальски стоящей среде — разбиеие на проекты, модули etc..
МС>>1) Отладка сколь-нибудь нетривиальных макросов — ещё то веселье.
O>макросы зло (c)

МС>>2) Заголовки вместо нормальных модулей особо доставляют при поиске зависимостей, а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал. А раздельная компиляция — изменение одного хедера может привести к пересборке всего солюшена, запросто.

O>Ну это да.. Но все в ваших руках — не надо делать настолько глобальные хедеры и не надо их часто менять если уж сделали Впрочем проблема конечно имеется, но она не так уж страшна

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

O>>>а че мучительного в std::string/std::wstring?
МС>>Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих.
O>Дык.. это зависит от реализации стринга. Вот тут например строки reference-counted: http://stdcxx.apache.org/

МС>>А проблема стандартных сишных строк относится скорее к проблеме сишных массивов как таковых, а это потеря размерности при передаче в другую функцию вследствие приведения к указателю.

O>Ну так не пользуйтесь в С++ "сишными" строками. Пользуйтесь string'ом, он хранит длину (или может быстро ее посчитать)

Вы правильно описали ситуацию. Ничего смертельного и неисправимого нет, но эти мелочи в целом могут организовать недетский баттхёрт. А по поводу string в частности и всех шаблонов в общем, могу сказать, что меня как программиста под Windows крайне печалит основная их проблема — передача владения через границу DLL. Мне известно только то, что это вызвано особенностями работы с памятью в VS реализации CRT и соотв-но не лечится.
А за stdcxx спасибо, посмотрю на досуге.
Re[4]: С - зло... :)
От: CreatorCray  
Дата: 12.01.11 08:33
Оценка:
Здравствуйте, Мишень-сан, Вы писали:

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

Кстати по проблемам С и С++ довольно таки отличаются друг от друга. Так что С и С++ программисты как правило "мучаются" с довольно таки разными проблемами.

O>>причем тут препроцессор и чем плоха та раздельная компиляция что есть в любой мало мальски стоящей среде — разбиеие на проекты, модули etc..

МС>1) Отладка сколь-нибудь нетривиальных макросов — ещё то веселье.
С макросами в основном Сшники сношаются.
В С++ эквилибристика на макросах используется крайне редко, бо есть более удобные средства генерации кода.

МС>2) Заголовки вместо нормальных модулей особо доставляют при поиске зависимостей

Покуда особых проблем не имел.
Разве что при разгребании говнокода.
Говнокод на C# разгребать было не проще.

МС> а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал.

Для особо тяжких случаев есть /showIncludes

МС>А раздельная компиляция — изменение одного хедера может привести к пересборке всего солюшена, запросто.

Если он воткнут везде — да. И что?
Предложи вариант как от этого избавиться но сохранить все плюшки типа инлайнинга.
В любом случае все зависимости придётся обработать. А зависимости ты указал включением хидера. Не включай его там где он не нужен и будет тебе щасте.

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

O>>а че мучительного в std::string/std::wstring?
МС>Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих.
А можно пример? А то что то у меня не придумывается что надо с ними делать чтоб на каждый чих копировалось. В C# стиле писать что ли.

МС> А проблема стандартных сишных строк относится скорее к проблеме сишных массивов как таковых, а это потеря размерности при передаче в другую функцию вследствие приведения к указателю.

Честно говоря не сильно помню когда мне приходилось использовать массивы кроме как временного буфера для вызова Сшных функций, который за пределы небольшого scope никуда не выходил.
Всё больше контейнеры и обёртки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
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-недельной переписки с попытками выпытать у меня что же именно у меня не работает, после чего нашелся хороший человек и правильно их пнул и оказалось, что на сервере ничего-то и не поднято вообще ) — а вот релизный теперь не могут. Причем отписаться "сам дурак" тоже не могут: на отладочном все работает. Страшная, видать, сила, этот ваш питон!
Голь на выдумку хитра, однако...
Re[10]: С - зло... :)
От: Пацак Россия  
Дата: 12.01.11 22:55
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Не вопрос! Выносим 19 и 91 в хедер, а вместе с ними — и еще 93 сопуствующие константы, которые все называем красивыми символическими именами.

TL>И в коде путаем не 19 и 91, а символические имена.
TL>Таки разница!

Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.

TL>Нормальные компиляторы в курсе, что "вьюноши с горящими глазами" частенько лажают и путают оператор присваивания с оператором эквивалентности в местах, где логично ожидать таки оператор эквивалентности. Рестрикта там нет. Более того, старый добрый "сишный стиль" повсеместно использует присваивание вместе с проверкой в одном и том же выражении.


Ну дык в том и вопрос, нафига он нужен — такой стиль-то? Минусы, которые он приносит, видны невооруженным глазом, плюсы же [лично мне] мягко говоря неочевидны. Нет, ну то есть я могу предположить, что это играло какую-то роль в те далекие времена, когда компьютеры были большими, а компиляторы неоптимизирующими — но сейчас-то зачем?
Ку...
Re: Я - фигею со здешнего народа! :)
От: LaptevVV Россия  
Дата: 12.01.11 22:56
Оценка: +2
1. Совершенно не обращают внимания на смайлик в заголовке темы...
2. Совершенно не обращают внимания (то есть, смотрят в текст, а видят ФИГУ) на то, что означенный пример с винграда.
LVV>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.
Тут же сделали выводы о квалификации меня и моих студентов — заклеймили типа абсолютных неучей...
Могу в ответ только посочувствовать сослуживцам и начальникам таких программеров...
3. Совершенно не обращают внимания, что писал начинающий... То есть — СОВСЕМ начинающий, первый раз изучающий программирование (незнакомый мне первокурсник, фиг знает, с какого города)...
Если вы ездить еще не умеете, а вам сразу болид формулы — 1 в руки — и вперед!
А рядом стоит кто-нить и утверждает, что вы тупой, поскольку не можете ехать...
Короче, я под столом...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[5]: С - зло... :)
От: The Lex Украина  
Дата: 12.01.11 23:03
Оценка: 1 (1) +1
Здравствуйте, CreatorCray, Вы писали:

CC>С макросами в основном Сшники сношаются.

CC>В С++ эквилибристика на макросах используется крайне редко, бо есть более удобные средства генерации кода.

Я постоянно пользуюсь. В основном для максимального уменьшения вероятности описок в очень похожих строчках кода.

МС>> а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал.

CC>Для особо тяжких случаев есть /showIncludes

В особо тяжком случае я нахально проставил #error message в местах между #ifdef-ами и отладил таким образом компиляцию.

МС>>Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих.

CC>А можно пример? А то что то у меня не придумывается что надо с ними делать чтоб на каждый чих копировалось. В C# стиле писать что ли.

Я что-то пропустил: а в паскале строки не копируются? Там встроенные счетчики обращений есть?

МС>> А проблема стандартных сишных строк относится скорее к проблеме сишных массивов как таковых, а это потеря размерности при передаче в другую функцию вследствие приведения к указателю.

CC>Честно говоря не сильно помню когда мне приходилось использовать массивы кроме как временного буфера для вызова Сшных функций, который за пределы небольшого scope никуда не выходил.
CC>Всё больше контейнеры и обёртки.

Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.
Голь на выдумку хитра, однако...
Re[10]: С - зло... :)
От: Пацак Россия  
Дата: 12.01.11 23:06
Оценка:
Здравствуйте, MescalitoPeyot, Вы писали:

MP>А теперь попробуй перепутать знаки в !=. Шо, не получается? Shift мешает? Ну так и о чем речь, проблема высосана из пальца.


Конкретный пример — да, но вообще присваивание и сравнение перепутать имхо довольно несложно. Особенно если программист не чистый сишник, а пишет параллельно на нескольких языках.
Ку...
Re[5]: С - зло... :)
От: Michael7 Россия  
Дата: 13.01.11 00:02
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Тут тебе и базы данных (+курсовая), и SQL Server (+курсовая), и программирование компьютерной графики, и операционные системы, и системное программирование (и все на С++) и еще много...

LVV>А четвертый курс — это NET-программирование — годовой курс, и опять курсовая.
LVV>Так что учим мы — на совесть.

Не с целью как-то усомниться в последнем предложении, но просто из интереса, что сейчас проходят, входит ли в программу обучение написанию компиляторов и правильному составлению собственных языков для предметной области? Это я помимо прочего намекаю на парадигму LOP — Language Oriented Programming
Re[6]: С - зло... :)
От: Michael7 Россия  
Дата: 13.01.11 00:09
Оценка: 1 (1) +3 -1
Здравствуйте, The Lex, Вы писали:

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


Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.
Re[2]: Я - фигею со здешнего народа! :)
От: jazzer Россия Skype: enerjazzer
Дата: 13.01.11 00:56
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>3. Совершенно не обращают внимания, что писал начинающий... То есть — СОВСЕМ начинающий, первый раз изучающий программирование (незнакомый мне первокурсник, фиг знает, с какого города)...

Причем либо японец, либо индус, либо носитель еще какого языка, в котором отрицание ставится после отрицаемого слова.
В русском все же "не равно" транслируется буквально в "!=", если знать, что "!" — это "не" (что "=" — это "равно", надеюсь, все абитуры знают... ну большинство, хотя бы...)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[6]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 09:00
Оценка:
Здравствуйте, The Lex, Вы писали:

CC>>С макросами в основном Сшники сношаются.

CC>>В С++ эквилибристика на макросах используется крайне редко, бо есть более удобные средства генерации кода.
TL>Я постоянно пользуюсь. В основном для максимального уменьшения вероятности описок в очень похожих строчках кода.
А можно пример для оценки насколько твои макросы нетривиальны.
Тривиальные отлаживать особо гемору нет.

МС>>> а в сочетании с препроцессором иногда очень трудно сказать, что же ты конкретно навключал.

CC>>Для особо тяжких случаев есть /showIncludes
TL>В особо тяжком случае я нахально проставил #error message в местах между #ifdef-ами и отладил таким образом компиляцию.


МС>>>Хотя бы то, что при неосторожном обращении получаем полное копирование на каждый чих.

CC>>А можно пример? А то что то у меня не придумывается что надо с ними делать чтоб на каждый чих копировалось. В C# стиле писать что ли.
TL>Я что-то пропустил: а в паскале строки не копируются? Там встроенные счетчики обращений есть?
Без понятия что там на данный момент с паскалем, но у меня строки копируются как правило если они меняются или передаются куда то на более долговременное хранение. В остальных случаях идут как & или &&

TL>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.

У меня правильные контейнеры. В них у строки есть метод .str() который возвращает WCHAR* спецом для получения строк из winapi и прочих C функций.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: С - зло... :)
От: alpha21264 СССР  
Дата: 13.01.11 09:33
Оценка:
Здравствуйте, The Lex, Вы писали:

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


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

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

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


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


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


Ну например в чистом финкциональном программировании нет разрушающего присваивания.
То есть например i++ написать нельзя.

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


Нуу... Ты-ж понимаешь, что тут дело не в питоне. Сдуру можно и такую вещь сломать, которая вроде не ломается.

Течёт вода Кубань-реки куда велят большевики.
Re[6]: С - зло... :)
От: LaptevVV Россия  
Дата: 13.01.11 10:01
Оценка:
Здравствуйте, Michael7, Вы писали:

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


LVV>>Тут тебе и базы данных (+курсовая), и SQL Server (+курсовая), и программирование компьютерной графики, и операционные системы, и системное программирование (и все на С++) и еще много...

LVV>>А четвертый курс — это NET-программирование — годовой курс, и опять курсовая.
LVV>>Так что учим мы — на совесть.

M>Не с целью как-то усомниться в последнем предложении, но просто из интереса, что сейчас проходят, входит ли в программу обучение написанию компиляторов и правильному составлению собственных языков для предметной области? Это я помимо прочего намекаю на парадигму LOP — Language Oriented Programming

На 3-м курсе есть дисциплина Системное ПО (это помиомо операционных систем). С целью врубить народ в современную реализацию языков, лабы такие: написать интерпретатор виртуальной машины, написать ассемблер для означенной машины, в процессе писания ассемблера — сделать интерпретатор выражений (арифметических и логических), где ознакомление с конечными автоматами и грамматиками. Потом отладчик для означенной машины, потом уж компилятор для простого императивного языка — для означенной машины. Все должно работать и выдавать конкретный результат для совершенно конкретных программ: для виртуальной машины, ассемблер, отладчик и компилятор.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[7]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 10:37
Оценка:
Здравствуйте, Michael7, Вы писали:

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


M>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


Как бы вам сказать... Тяжело в учении — легко в бою! (к) Если его начинать учить "внимательному вычитыванию кода" и только — как он будет "вычитывать" кода строк на полмильйона со всякими сложными "интеркоммуникейшинами"?

Юнит-тест покажет что в данной функции есть ошибка. Это все. Далее правильно бы все же попытаться пройти "фейлящийся" тест под дебагером и посмотреть — чаще всего, просветление наступает. имхо, этому надо учить в том числе — работа у нас такая, разгребать ...
Голь на выдумку хитра, однако...
Re[7]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 10:49
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>>>С макросами в основном Сшники сношаются.

CC>>>В С++ эквилибристика на макросах используется крайне редко, бо есть более удобные средства генерации кода.
TL>>Я постоянно пользуюсь. В основном для максимального уменьшения вероятности описок в очень похожих строчках кода.
CC>А можно пример для оценки насколько твои макросы нетривиальны.
CC>Тривиальные отлаживать особо гемору нет.

Тривиальны. Для нетривиального сношения специально обученные люди пишут специально навороченные шаблоны. Их у нас тоже есть!

CC>Без понятия что там на данный момент с паскалем, но у меня строки копируются как правило если они меняются или передаются куда то на более долговременное хранение. В остальных случаях идут как & или &&


Меряться так меряться: у меня строки еще и кушают специальный флажок, который означает "строка из ресурсов" и тогда указатель — не указатель, а идентификатор (считай индекс) предустановленной строки из ресурсов.

CC>У меня правильные контейнеры. В них у строки есть метод .str() который возвращает WCHAR* спецом для получения строк из winapi и прочих C функций.


Так в школе ж твои правильные контейнеры не учат.

ЗЫ: А я вот сейчас бодаюсь с особенностями реализации юникода на маке. И хоть бы мне ж тот Мак нужен был — так мне всего-то от сервера полученный utf8 в используемый гуями wchar_t преобразовать. Причем аж (!) в одном месте аж в одной "маркетинговой единице функциональности". Причем остальное вроде работает... Вот _этому_ в школах надо учить — индустриальному подходу и что часто нужно копать и копать. имхо.
Голь на выдумку хитра, однако...
Re[10]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 10:52
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну например в чистом финкциональном программировании нет разрушающего присваивания.

A>То есть например i++ написать нельзя.

Надо будет погуглить что за концепция такая "разрушающее присваивание".

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


A>Нуу... Ты-ж понимаешь, что тут дело не в питоне. Сдуру можно и такую вещь сломать, которая вроде не ломается.


Медицина говорит: ломается — есть прецеденты. Мой опыт говорит: сервера тоже ломаются — прецеденты постоянно. Остается убедить в этом а) начальство; б) "другую сторону которая сервером управляет". В целом, второй вопрос не столь трудет — технически. Но это уже менежмент и коммуникации — этому в школе программирования тоже поди не учат.
Голь на выдумку хитра, однако...
Re[8]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 11:13
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Так в школе ж твои правильные контейнеры не учат.

Дык в школе вообще не учат разработке софта.

TL>ЗЫ: А я вот сейчас бодаюсь с особенностями реализации юникода на маке. И хоть бы мне ж тот Мак нужен был — так мне всего-то от сервера полученный utf8 в используемый гуями wchar_t преобразовать. Причем аж (!) в одном месте аж в одной "маркетинговой единице функциональности". Причем остальное вроде работает... Вот _этому_ в школах надо учить — индустриальному подходу и что часто нужно копать и копать. имхо.


Тебе Utf8->UCS2 функцию подогнать?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С - зло... :)
От: blackhearted Украина  
Дата: 13.01.11 11:13
Оценка:
Здравствуйте, The Lex, Вы писали:

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


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


TL>Есть еще особенности работы современных процессоров: кеширования всякие, предсказания, многопроцессорность опять же, DMA... м-м-м... у меня все.


Я в курсе.
Но тут же затык в самом начале, еще до ДМА как до луны. Какие уж кеширования?
Re[7]: С - зло... :)
От: blackhearted Украина  
Дата: 13.01.11 11:18
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Здравствуйте, 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


TL>Хм... Либо я чего-то путаю, либо в _Си_ нет ни "булов", ни... ну, просто булов нет.

My fault.


int main(int argc, char** argv)
{
    int counter = 0;
    if (counter =! 0)
    {
    }
    return 0;
}


Compile as C Code (/TC) + Level 4 (/W4)

warning C4706: assignment within conditional expression


Повторюсь, если игнорить варнинги — то ССЗБ и язык тут не при чём.
Re[7]: С - зло... :)
От: blackhearted Украина  
Дата: 13.01.11 11:19
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Здравствуйте, The Lex, Вы писали:


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


M>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


да, согласен.
Но варнинги нужно читать, а не понижать их уровень, а потом искать тестами/чтением в чём же проблема.
Re[9]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 11:28
Оценка: :)
Здравствуйте, CreatorCray, Вы писали:

CC>Тебе Utf8->UCS2 функцию подогнать?


Я еще с имеющейся в MacOSX mbstowcs не на...ся — дай человеку получить удовольствие от процесса жеж!
Голь на выдумку хитра, однако...
Re[8]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 11:30
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>[ccode]

B>Compile as C Code (/TC) + Level 4 (/W4)
B>

B>warning C4706: assignment within conditional expression


B>Повторюсь, если игнорить варнинги — то ССЗБ и язык тут не при чём.


Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.
Голь на выдумку хитра, однако...
Re[3]: Я - фигею со здешнего народа! :)
От: B0FEE664  
Дата: 13.01.11 13:25
Оценка: +3 :))
Здравствуйте, jazzer, Вы писали:

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


LVV>>3. Совершенно не обращают внимания, что писал начинающий... То есть — СОВСЕМ начинающий, первый раз изучающий программирование (незнакомый мне первокурсник, фиг знает, с какого города)...

J>Причем либо японец, либо индус, либо носитель еще какого языка, в котором отрицание ставится после отрицаемого слова.
J>В русском все же "не равно" транслируется буквально в "!=", если знать, что "!" — это "не" (что "=" — это "равно", надеюсь, все абитуры знают... ну большинство, хотя бы...)

В таком случае запись
if (counter =! 0 ) {
значит: "Если счетчик равен не нулю ...", что, на мой взгляд, то же вполне по-русски.
И каждый день — без права на ошибку...
Re[7]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, Michael7, Вы писали:

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


M>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, blackhearted, Вы писали:

B>Но варнинги нужно читать, а не понижать их уровень, а потом искать тестами/чтением в чём же проблема.

Waning as error — наше всё!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну например в чистом финкциональном программировании нет разрушающего присваивания.

A>То есть например i++ написать нельзя.
А где тут присваивание? Это инкремент
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка: :)
Здравствуйте, Пацак, Вы писали:

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


Делаем вывод: писать на нескольких языках зло и ересь богомерзская.
Панеслаааась!
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 13.01.11 13:49
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.

Не ну мне тут совсем недавно вижуалко сошло с ума и стало автодополнять HRES... не как HRESULT, которого в коде туевы хучи а как HRESOURCE, который пару раз встретился.
Так шта...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[9]: С - зло... :)
От: blackhearted Украина  
Дата: 13.01.11 13:50
Оценка:
Здравствуйте, The Lex, Вы писали:

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


B>>[ccode]

B>>Compile as C Code (/TC) + Level 4 (/W4)
B>>

B>>warning C4706: assignment within conditional expression


B>>Повторюсь, если игнорить варнинги — то ССЗБ и язык тут не при чём.


TL>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.


По мнению ТС — это всё должно быть запрещено самим дизайном языка.
Re[11]: С - зло... :)
От: igna Россия  
Дата: 13.01.11 13:54
Оценка:
Здравствуйте, Пацак, Вы писали:

П>Таки да, разница — опечататься и набить в коде HASH_OFFSET вместо MAX_REPEAT_COUNT несколько сложнее, чем 91 вместо 19.


Зато опечататься и набить 91 вместо 19 при определении HASH_OFFSET или MAX_REPEAT_COUNT несколько проще.
Re[10]: С - зло... :)
От: The Lex Украина  
Дата: 13.01.11 15:47
Оценка:
Здравствуйте, blackhearted, Вы писали:

TL>>Да, только в "простом Си" — присваивание внутри условия — довольно распространенная практика.


B>По мнению ТС — это всё должно быть запрещено самим дизайном языка.


Угу. И добавив сюда "сообщения об ошибках" вида "произошла ошибка в строке ххх" — мы получим невероятно "человеколюбимый" язык. Знаем, плавали.
Голь на выдумку хитра, однако...
Re[12]: С - зло... :)
От: Пацак Россия  
Дата: 14.01.11 01:04
Оценка:
Здравствуйте, igna, Вы писали:

I>Зато опечататься и набить 91 вместо 19 при определении HASH_OFFSET или MAX_REPEAT_COUNT несколько проще.


Вычитать и проверить компактный хедер с константами — тоже.
Ку...
Re[6]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 09:51
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>On 10.01.2011 23:34, Пацак wrote:


>> Java, например.


MZ>Ни в коем случае Java не должна быть первым языком.

MZ>Она чистый ООП, программировать надо начинать БЕЗ ООП.

разве Java является pure OOP?
Re[3]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 10:11
Оценка: 9 (1)
Здравствуйте, LaptevVV, Вы писали:

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


Q>>Препод -- это диагноз. Я сам паскалист, сиподобные языки мне чисто визуально неприятны, но ваши взгляды и заявления заставляют плеваться.

LVV>А много знаете о моих взглядах?

Взгляды озвученные на форуме заставляют 100%.
Re[6]: С - зло... :)
От: blackhearted Украина  
Дата: 14.01.11 10:13
Оценка:
Здравствуйте, The Lex, Вы писали:

TL>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.


вот это трындец... это в промышленном коде такое творится?
Re[8]: С - зло... :)
От: Michael7 Россия  
Дата: 14.01.11 11:06
Оценка: +2 :)
Здравствуйте, CreatorCray, Вы писали:

M>>Мне кажется, что для начинающего программиста дебаггеры — зло и им надо категорически запретить ими пользоваться. В том числе, чтобы учились подобные ошибки выявлять тестами и внимательным чтением кода.


CC>Т.е. вместо того, чтоб быстро найти конкретное место в программе где выполнение пошло не так, как предполагалось новичку предлагается напрячь и так перегретые попыткой написать программу мозги и пройтись отладчиком "в уме"? Дык нету у него ещё столько ума то, он его только набирается.


Без отладчика так пару раз помучается и станет аккуратнее. Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать. И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку. Иногда его, к тому же и не бывает.

Полезность отладчика в выявлении проблем вообще несколько преувеличена.

Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.

Вместе с тем, например, отладчики плохо помогают в случае параллельных вычислений. Или бывает, что поведение программы под отладчиком и без него по разным причинам различается.
Re[9]: С - зло... :)
От: CreatorCray  
Дата: 14.01.11 11:22
Оценка: +1
Здравствуйте, Michael7, Вы писали:

M>Без отладчика так пару раз помучается и станет аккуратнее.

Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.

M> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.

Какие высокие слова.
Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".

M> И все бы ничего, но далеко не всегда отладчик — панацея и самый быстрый путь найти ошибку.

Я где то говорил что это панацея?
Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.

M>Иногда его, к тому же и не бывает.

Это скорее минус environment-у. Ну, не бывает, значит там придётся мудохаться куда сильнее.

M> Есть случаи, когда он нужен: на мой взгляд, в первую очередь это отладка взаимодействия с операционной системой или другими программами. Исследование и разбор чужого кода или работы на низком уровне своего. Может быть полезен, если в каком-то сильно нетривиальном куске кода встретилось что-то не очень понятное.

Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.

M>Вместе с тем, например, отладчики плохо помогают в случае параллельных вычислений. Или бывает, что поведение программы под отладчиком и без него по разным причинам различается.

И? Про серебрянную пулю и так речи не шло.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С - зло... :)
От: CreatorCray  
Дата: 14.01.11 11:22
Оценка:
Здравствуйте, blackhearted, Вы писали:

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


TL>>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.


B>вот это трындец... это в промышленном коде такое творится?

А всё потому, что кто то когда то не подумал как бы std::basic_string удобно заюзать для получения строк из сишных функций.
Вот народ и выкручивается чтоб не делать лишние буфера с копированием.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: Michael7 Россия  
Дата: 15.01.11 00:46
Оценка:
Здравствуйте, CreatorCray, Вы писали:

M>>Без отладчика так пару раз помучается и станет аккуратнее.

CC>Если бы. Продолжительные мучения в поисках "гдеж это я накосячил" куда скорее приводят к воплям "Язык говно!!!" на форумах, что мы периодически тут от подобных ниасиливших видим.

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

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

Кстати, в данном вопросе: а что такого начинающему, кроме скачущей по экрану полоски с выделенной строчкой кода, покажет отладчик? Я говорю именно о вообще начинающем программисте, опытный человек, если ранее не знал C++, но имеет опыт с другими языками, вообще иначе будет обучаться.

Как это не тривиально, но надо еще додуматься в отладчике посмотреть на значение конкретной переменной, чтобы увидеть присваивание в if. Для нас это пустяк, но действительно начинающий, он же везде начинающий.

С другой стороны, по простейшим тестам тоже можно заметить, что где-то в районе if произошло нежелательное присваивание.
Также и warning-и, если их не отключать, дадут более точную информацию чем отладчик.


M>> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.

CC>Какие высокие слова.
CC>Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".

Так я разве против знания инструментария? Вот только должна быть и определенная последовательность в обучении. Прежде чем ездить на пятой передаче стоит научиться это делать на первой.

Так что моё мнение прежнее: прежде чем обучающийся не освоит элементарные вещи из языка, не набьет немного шишек на своих первых программах — нечего ему показывать отладчик, он им все-равно толком пользоваться не сможет, а дурные привычки приобретет.

Пусть для начала научится писать на Си простые программы без проблем с памятью, многие из которых, кстати, весьма плохо выявляются отладчиком. Вот после этого этапа можно и отладчик давать.

CC>Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.


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

CC>Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.


В уме — нет, на бумажке можно и просчитать. Не повредит даже имеющим опыт И это не ретроградство, а реально иногда бумага — самое удобное средство для выражения мыслей. Например, когда я писал на ассемблере код для FPU, именно на бумаге тщательно выписывал состояние стека FPU. Потом в код в комментарии перенес.

CC>И? Про серебрянную пулю и так речи не шло.


Ну и я не про полный запрет отладчика. Просто это достаточно мощный и серьезный инструмент для эффективного обращения с которым нужна определенная культура и навык программирования.
Re[6]: С - зло... :)
От: V__G Россия  
Дата: 15.01.11 11:33
Оценка:
Здравствуйте, blackhearted, Вы писали:

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


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


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

Pzz>>>>>Ну ваше-то, любой нормальный компилятор в этом месте предупреждение напишет, если их (предупреждения) не отключать.
LVV>>>>Начинающие на этом этапе Debug от Release отличить не могут, не то, что предупреждения отключить...
B>>>Кто-то кроме студентоты таким страдает? А учеников нужно учить.
LVV>>Никлаус Вирт при создании паскаля написал: Одним из главных побуждающих мотивов создания нового языка стало то, что ему надоело учить студентов не программированию, а особенностям языка (и транслятора) фортрана.
B>Фортран — это, конечно, вещь. С ним можно всё что угодно сравнивать, всё равно никто не сможет аргументировано доказать.

LVV>>Язык НЕ ДОЛЖЕН позволять писать ошибочные конструкции, которые пропускаются компилятором.

B>Treat warnings as errors и никаких гвоздей. Получишь палки в колёса от компилятора.
B>Или нужно полагаться полностью на дизайн языка и голову вообще не включать?
B>Так мы докатимся до того, что в языке вообще не может быть никаких side-effects и всё иммутабельно — есть такой подход в обучении, начинать с подобных языков. Только вот Виртовский Паскаль под это описание ну не подходит никак.

LVV>>Знаменитая ошибка в программе на фортране: вместо запятой была поставлена точка и оператор цикла превратился в оператор присваивания.

B>И опять он — великий и ужасный. Где сейчас начитают учить с фортрана, в ПТУ? В моё время учили как раз с Паскаля. И ошибки делали на Виртовском творении еще покруче, чем на в будущем на Сях.

B>Можно еще Аду вспомнить — вот она, безопасность. Но это уже оффтоп.


Ну тогда уж не Аду, а Оберон — там вообще никакого синтаксического сахара. Описание языка — смешные 16 страниц.
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 15.01.11 14:58
Оценка:
Здравствуйте, Michael7, Вы писали:

M>Кстати, в данном вопросе: а что такого начинающему, кроме скачущей по экрану полоски с выделенной строчкой кода, покажет отладчик? Я говорю именно о вообще начинающем программисте, опытный человек, если ранее не знал C++, но имеет опыт с другими языками, вообще иначе будет обучаться.

Ну, я не знаю насколько я был опытный ( ) в школьные годы, но когда у меня появился отладчик Zeus для Z80 то он мне очень многое говорил.

M>>> Отладчик начинающего программиста развращает умственно, он может его приучить к небрежности, привычке в случае проблем не головой думать, а F8 (или еще что-нибудь) тыкать.

CC>>Какие высокие слова.
CC>>Инструментарий надо знать и уметь им пользоваться всем. А то это получается как "оператор += приводит к раку мозга, вшам и диарее блаблабла, надо только x = x + ...".

M>Так я разве против знания инструментария? Вот только должна быть и определенная последовательность в обучении. Прежде чем ездить на пятой передаче стоит научиться это делать на первой.

Искать ошибку только по исходнику это совсем не 1я передача. Для этого уже надо багаж знаний иметь.

M>Пусть для начала научится писать на Си простые программы без проблем с памятью, многие из которых, кстати, весьма плохо выявляются отладчиком. Вот после этого этапа можно и отладчик давать.

Зато некоторые — прекрасно. Например пошагово идём и смотрим в каком месте в определённой памяти оказывается нагажено. Локализовываем ошибку а дальше смотрим что там уже в коде понакручено.
А там и Refactor Find Reference может понадобится и callstack и прочее и прочее.

CC>>Я про то, что отказываться от отладчика на ранних этапах, когда обучаемый ещё не накопил опыта совершения и осознания ошибок попросту неэффективно. Чем быстрее он найдёт ошибку, тем быстрее он в ней разберётся и поймёт.

M>Да даже, чтобы правильно искать ошибку уже надо иметь некоторый опыт. Даже в педагогических целях полезно помучиться при поиске ошибки — лучше запоминается тогда. Не чрезмерно, конечно.
И потом получаются оригиналы, которые вместо того, чтоб один раз пройти отладчиком и найти ошибку начинают воскуривать километры кода. А масштаб то уже не учебный нифига.

CC>>Когда поведение кода зависит от кучи параметров ты в уме все эти параметры к конкретной точке ни в жизнь не просчитаешь. Посмотреть что именно творилось в переменных в данной точке программы отладчиком куда удобнее чем нашпиговывать в прогу debug output.

M>В уме — нет, на бумажке можно и просчитать.
Отладчик лучше бумажки (т.е. человека) в том, что он не ошибается. Т.е. он показывает то, что в реале произошло, тогда как код на глаз должен был сделать совсем другое. Такие ошибки на бумажке можно дооолго ловить.
Или например есть у нас ошибка, которая проявляется после нетривиальной обработки пары десятков метров данных. Сколько коробок бумаги и человеколет надо чтобы методом "бумажки" найти где баг?

M> Не повредит даже имеющим опыт И это не ретроградство, а реально иногда бумага — самое удобное средство для выражения мыслей.

Строго субъективно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[7]: С - зло... :)
От: FR  
Дата: 17.01.11 15:49
Оценка: -1
Здравствуйте, The Lex, Вы писали:

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

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

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


Скорее да чем нет, хотя бы в том же объеме что впихнули в D чистые функции и
полноценные лямбды.
Re[8]: С - зло... :)
От: FR  
Дата: 17.01.11 15:55
Оценка:
Здравствуйте, alpha21264, Вы писали:

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


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


Питон для многих сишников обладает наркотическим эффектом
Re[9]: С - зло... :)
От: CreatorCray  
Дата: 17.01.11 16:10
Оценка: -1
Здравствуйте, FR, Вы писали:

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

FR>Питон для многих сишников обладает наркотическим эффектом
Схожий по эффекту с приёмом подогретой смеси спирта, димедрола, касторового масла и марганцовки.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: FR  
Дата: 17.01.11 16:13
Оценка:
Здравствуйте, alpha21264, Вы писали:

A>Ну например в чистом финкциональном программировании нет разрушающего присваивания.

A>То есть например i++ написать нельзя.

Вообще достаточно чистоты функций, то есть результат функции зависит только от параметров,
а что там происходит внутри неважно. Вот тут http://www.digitalmars.com/d/2.0/accu-functional.pdf
D'шники все неплохо объясняют.
Re[8]: С - зло... :)
От: Мишень-сан  
Дата: 18.01.11 08:10
Оценка:
Здравствуйте, CreatorCray, Вы писали:

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


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


TL>>>Угу. Я, например, вот только сегодня нашел (в смыле: свежая статистика — опыт-то старый, не умеют давно... никогда не умели...), что "контейнерами и обертками" никак не умеют пользоваться "выросшие на контейнерах и обертках программисты" и хак — (char*)std_string_value.c_str() — для передачи строки в качестве буфера — "нормальное" дело.


B>>вот это трындец... это в промышленном коде такое творится?

CC>А всё потому, что кто то когда то не подумал как бы std::basic_string удобно заюзать для получения строк из сишных функций.
CC>Вот народ и выкручивается чтоб не делать лишние буфера с копированием.

std::vector<char> buf(BUFFER_SIZE); ?
Re[9]: С - зло... :)
От: CreatorCray  
Дата: 18.01.11 09:05
Оценка:
Здравствуйте, Мишень-сан, Вы писали:

B>>>вот это трындец... это в промышленном коде такое творится?

CC>>А всё потому, что кто то когда то не подумал как бы std::basic_string удобно заюзать для получения строк из сишных функций.
CC>>Вот народ и выкручивается чтоб не делать лишние буфера с копированием.

МС>std::vector<char> buf(BUFFER_SIZE); ?

Это и есть лишний буфер.
Потому как дальше с полученной строкой надо работать как со string?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[10]: С - зло... :)
От: Мишень-сан  
Дата: 18.01.11 09:43
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Мишень-сан, Вы писали:


B>>>>вот это трындец... это в промышленном коде такое творится?

CC>>>А всё потому, что кто то когда то не подумал как бы std::basic_string удобно заюзать для получения строк из сишных функций.
CC>>>Вот народ и выкручивается чтоб не делать лишние буфера с копированием.

МС>>std::vector<char> buf(BUFFER_SIZE); ?

CC>Это и есть лишний буфер.
CC>Потому как дальше с полученной строкой надо работать как со string?

Ну тут уже не попляшешь особо... ЕМНИП по стандарту внутреннее представление basic_string не обязано быть ни одним блоком, ни null-terminated.
А ещё некоторые особо одарённые С-функции даже не позволяют узнать, сколько же им буфера надо. Примеров, правда, сейчас не приведу, но пару раз натыкался.
Re[11]: С - зло... :)
От: CreatorCray  
Дата: 18.01.11 10:59
Оценка: +2
Здравствуйте, Мишень-сан, Вы писали:

МС>Ну тут уже не попляшешь особо... ЕМНИП по стандарту внутреннее представление basic_string не обязано быть ни одним блоком, ни null-terminated.

Это минус исключительно в зубы стандарту.
Вроде как в 0х это поменяли.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: С - зло... :)
От: opener  
Дата: 20.01.11 07:41
Оценка: +1 :)
Здравствуйте, LaptevVV, Вы писали:

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


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

LVV>"Любая случайная последовательность символов является корректной С-программой"...
LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!
LVV>

Плохому танцору яйца мешают.
С — язык, который создавался профессиональными высококвалифицированными программистами для своих нужд и под себя.
Зачем профессионалу защита от ошибок, если он и так не ошибается? Соответственно, новичкам в С делать нечего. Есть хороший язык, предназначенный специально для обучения программированию — Паскаль. Прививает хороший стиль. А мне лично в С не хватает деструкторов и многих других вещей, которые есть в плюсах. Я лично на С-ях писать не очень люблю по той причине, что не хватает деструкторов и многих других вещей, имеющихся в плюсах. После С++ очень обрезано и неудобно.
Re: С - зло... :)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.02.11 06:44
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


Да просто надо сразу приучать к несколько иному написанию сравнения. Первым аргументом всегда писать константы. И будет всем счастье.

 if ( 0 != counter ) {
Re[2]: С - зло... :)
От: igna Россия  
Дата: 01.02.11 09:32
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Да просто надо сразу приучать к несколько иному написанию сравнения. Первым аргументом всегда писать константы. И будет всем счастье.


KP> if ( 0 != counter ) {


А если это сравнение на больше-меньше, тоже?
Re[3]: С - зло... :)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 01.02.11 09:36
Оценка:
Здравствуйте, igna, Вы писали:

I>А если это сравнение на больше-меньше, тоже?


Если с константой, то да, тоже. Если с не константой, то тут уже этот трюк не поможет.
Re[2]: С - зло... :)
От: CreatorCray  
Дата: 01.02.11 13:54
Оценка: +3 -2
Здравствуйте, kaa.python, Вы писали:

KP>Да просто надо сразу приучать к несколько иному написанию сравнения. Первым аргументом всегда писать константы. И будет всем счастье.


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


ИМХО это жуткого вида костыль.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re: С - зло... :)
От: jazzer Россия Skype: enerjazzer
Дата: 01.02.11 14:17
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV> if (counter =! 0 ) {

LVV>И смешно, и смеяться — не хочется. Ибо на скольких аналогичных граблях спотыкаются начинающие — УЖОС!

Вижу, обсуждение всё еще продолжается, видимо, ещё не все это видели:
http://www.rsdn.ru/forum/cpp/4116499.1.aspx
Автор: jazzer
Дата: 14.01.11

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[4]: С - зло... :)
От: igna Россия  
Дата: 03.02.11 12:58
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Если с константой, то да, тоже. Если с не константой, то тут уже этот трюк не поможет.


То есть к примеру так?:

    if (5 <= i && 10 >= i)
Re[5]: С - зло... :)
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 03.02.11 13:05
Оценка:
Здравствуйте, igna, Вы писали:

I>То есть к примеру так?:


I>
I>    if (5 <= i && 10 >= i)
I>


То есть к примеру так. Некрасиво, не привычно скорее, но потенциальных ошибок меньше.
Re: С - зло... :)
От: ArtyomR0Bot  
Дата: 04.02.11 05:42
Оценка:
Здравствуйте, LaptevVV, Вы писали:

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


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


Сам писал сначала на Паскале, и допускал таки ошибки типа

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


Но теперь на всех немногих известных мне языках пишу правильно, даже переходя от одного к другому.
А дабы не спотыкаться об ошибки, нужно писать программу пошагово и хорошо структурировать её. Так, проверил корректность на данном этапе, а под подозрение могут попасть только недавно добавленные цикл и условие. Их проверить на наличие ошибок несложно. Тем более, такие ошибки в конце концов перестаёшь допускать.
Re[2]: логично :)
От: Фанатик Ад http://vk.com/id10256428
Дата: 07.02.11 04:11
Оценка:
D>я видел много делфистов которые переседая на С писали

D>
D>if (counter = 0 ) {
D>


D>а потом искали ошибки


сишники в подобных случаях пишут

begin
if (counter == 0)
  CallFunction();
end


Я сам когда пересаживаюсь с шарпа на TSQL и обратно путаюсь в синтаксисе. А делать это приходится часто.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: С - зло... :)
От: Vamp Россия  
Дата: 09.02.11 15:23
Оценка:
if (counter = 0 ) {


Баян. Современные компиляторы предупреждают.


Comeau C/C++ 4.3.10.1 (Oct 6 2008 11:28:09) for ONLINE_EVALUATION_BETA2
Copyright 1988-2008 Comeau Computing. All rights reserved.
MODE:strict errors C++ C++0x_extensions

"ComeauTest.c", line 4: warning: use of "=" where "==" may have been intended
if (counter = 0)

Да здравствует мыло душистое и веревка пушистая.
Re: С - зло... :)
От: Vamp Россия  
Дата: 09.02.11 16:17
Оценка: +1
LVV>На винграде обнаружил замечательный образчик кода на С, который замечательно демонстрирует, что начинать учиться программировать на С, не имея за плечами пару-тройку более простых языков, — сильно не рекомендуется.

А на самом деле — с точностью до наоборот. Потому что гораздо правильнее учиться на языке, который каждый раз стреляет тебе в ногу — и запоминать на уровне синапсов, как можно писать и как нельзя — и потом, если вдруг жизнь пересадит на что-то более миролюбивое, спокойно работать, чем наоборот — привыкнуть к языкам, прощающим ошибки, а потом посадить в баг код для ядерной электростанции.
Да здравствует мыло душистое и веревка пушистая.
Re[9]: С - зло... :)
От: Vamp Россия  
Дата: 09.02.11 16:32
Оценка:
CC>Waning as error — наше всё!
О, не всегда, не всегда.
Как сейчас помню, был у меня в какой-то разновидности автомата state в enum. И имелся dummy концевой элемент — чтобы считать количество допустимых стейтов, и еще для чего-то.
Ну и был там красивый такой switch с разнообразными значениямию. Так gcc давал мне ворнинг — мол, одно из значений enum не используется в switch. Причем возможности отключить конкретно этот ворнинг я не нашел — только со всей пачкой. Ну и нафиг мне не компилирующаяся программа?
Да здравствует мыло душистое и веревка пушистая.
Re[10]: С - зло... :)
От: dilmah США  
Дата: 09.02.11 17:02
Оценка:
V>О, не всегда, не всегда.
V>Как сейчас помню, был у меня в какой-то разновидности автомата state в enum. И имелся dummy концевой элемент — чтобы считать количество допустимых стейтов, и еще для чего-то.
V>Ну и был там красивый такой switch с разнообразными значениямию. Так gcc давал мне ворнинг — мол, одно из значений enum не используется в switch. Причем возможности отключить конкретно этот ворнинг я не нашел — только со всей пачкой. Ну и нафиг мне не компилирующаяся программа?

ну такой код должен выглядеть так:
switch (x) {
  case A:
    ....
  case B:
    ....
  case X:
  default:
    assert(0);
}


что касается оптимизации, то компилятор должен уметь распознавать ассерты.
Re[11]: С - зло... :)
От: Vamp Россия  
Дата: 09.02.11 17:14
Оценка:
D>ну такой код должен выглядеть так:
Кому должен? А если у меня дефолт — не делать ничего, и он не нужен в свитче?
Да здравствует мыло душистое и веревка пушистая.
Re[10]: С - зло... :)
От: CreatorCray  
Дата: 09.02.11 23:52
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Как сейчас помню, был у меня в какой-то разновидности автомата state в enum. И имелся dummy концевой элемент — чтобы считать количество допустимых стейтов, и еще для чего-то.

V>Ну и был там красивый такой switch с разнообразными значениямию. Так gcc давал мне ворнинг — мол, одно из значений enum не используется в switch. Причем возможности отключить конкретно этот ворнинг я не нашел — только со всей пачкой. Ну и нафиг мне не компилирующаяся программа?
Ну это уже самодеятельность компилера. Такие warnings надо делать remark.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.