Re[3]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 27.07.09 21:55
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Без дебаггера, простым запуском, видно, что программа делает именно то, что заявлено в описании.

V>hostame $ ./a.out
V>1, 1, 2, 3, 5, 8, 13, 21
V>hostname $

У Вас тоже проблемы с чтением?
"Попробуйте скомпиллировать данный код в VC++ любой версии и запустить. "
Re[2]: Модульные тесты и "безопасные" языки - хорошо.
От: Хвост  
Дата: 27.07.09 22:28
Оценка: 1 (1) +2 -2 :)
Здравствуйте, criosray, Вы писали:

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



C>Попробуйте скомпиллировать данный код в VC++ любой версии и запустить.

C>Сразу скажу, что код корректен.

C>Попробуйте без дебагера угадать в чем проблема. Удачи.


Сейчас скажу грубо, но как говориться троллю троллево:

Я тебе и без дебаггера скажу в чём проблема, проблема в том что ты не знаешь что такое триграфы. Ещё проблема в том что ты нихрена не писал на С++ как заявляешь, либо у тебя настолько ороговение мозга что я даже не знаю последствием какой травмы это может являться. Пиши на C# родной, забей на С++, очевидно что этот язык не для тебя.
People write code, programming languages don't.
Re[4]: Модульные тесты и "безопасные" языки - хорошо.
От: Sheridan Россия  
Дата: 27.07.09 23:16
Оценка:
Hello, criosray, you write:

c> У Вас тоже проблемы с чтением?

c> "Попробуйте скомпиллировать данный код в VC++ любой версии и запустить. "

Спасибо что открыл мне глаза на микрософтовский компилятор.
avalon 1.0rc2 rev 279 (Втр Июл 28 02:41:26 MSD 2009 (in develop)), zlib 1.2.3
Matrix has you...
Re: Модульные тесты и "безопасные" языки - хорошо.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.07.09 23:32
Оценка:
Здравствуйте, criosray, Вы писали:

C>(подсказка: бесконечный цикл)


Двойка за апелляцию к тому, чего толком не знаешь. Произойдёт UB. Остальные тезисы... Ну, ты понял.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Модульные тесты и "безопасные" языки - хорошо.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.07.09 23:40
Оценка: +2
Здравствуйте, criosray, Вы писали:

C>Напишет.


C>
C>void myFoo(int *arr, int length)
C>{
C>    for (int i = 0; i < length; i++) { 
C>        arr[i] = 0;
C>    }
C>}
C>...
C>int *arr = new int[length];
C>...
C>length++;
C>...
C>myFoo(arr, length);
C>


Ты уж дай волю фантазии, пусть твой C++-ник напишет так:

length *= 10;


Целовать — так королеву, обнулять память — так подчистую!

V>>Ну и в последних, писать итеративные циклы в С++, где есть for_each, bind и lambda — каменный век.

C>В std есть lambda? С каких пор?

А что, на std свет клином сошёлся?
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[7]: Модульные тесты и "безопасные" языки - хорошо.
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.07.09 23:51
Оценка: +1 :)))
Здравствуйте, criosray, Вы писали:

CC>>Имплементация С++0х не есть самодеятельность.

C>Пока С++0x draft — есть самодеятельность.

Тут ещё нужно топнуть ногой.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 06:40
Оценка: +1
Здравствуйте, Хвост, Вы писали:

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


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



C>>Попробуйте скомпиллировать данный код в VC++ любой версии и запустить.

C>>Сразу скажу, что код корректен.

C>>Попробуйте без дебагера угадать в чем проблема. Удачи.


Х>Сейчас скажу грубо, но как говориться троллю троллево:


Х>Я тебе и без дебаггера скажу в чём проблема, проблема в том что ты не знаешь что такое триграфы.

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

Х>Ещё проблема в том что ты нихрена не писал на С++ как заявляешь,


Х>либо у тебя настолько ороговение мозга что я даже не знаю последствием какой травмы это может являться.
А это уже неприкрытое оскорбление. Вы не волнуйтесь, с мозгом у меня все в порядке, а вот у Вас явные проблемы с адекватным восприятием других людей.
Х>Пиши на C# родной, забей на С++, очевидно что этот язык не для тебя.
И уж тем более не для Вас.
Re[2]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 06:43
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

C>>(подсказка: бесконечный цикл)


ГВ>Двойка за апелляцию к тому, чего толком не знаешь. Произойдёт UB. Остальные тезисы... Ну, ты понял.

Вот именно, что делает подобные ошибки во сто крат хуже, так как результат такой ошибки непредсказуем.
Re[5]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 06:44
Оценка:
Здравствуйте, Sheridan, Вы писали:

c>> У Вас тоже проблемы с чтением?

c>> "Попробуйте скомпиллировать данный код в VC++ любой версии и запустить. "

S>Спасибо что открыл мне глаза на микрософтовский компилятор.

А с ним все в порядке. Поспрашивайте вон у Хвоста что такое триграфы.
Re[8]: Модульные тесты и "безопасные" языки - хорошо.
От: CreatorCray  
Дата: 28.07.09 11:31
Оценка: +1
Здравствуйте, Vamp, Вы писали:

V>
V>  for_each(v.begin(), v.end(), _1 = 0);
V>

V>Весьма наглядно.

Так нагляднее:
foreach(it,v)
{
 it->foo();
}

Вот нафига тут лямбды?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Re[8]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 28.07.09 13:58
Оценка:
Здравствуйте, criosray, Вы писали:

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

угу, именно поэтому я сразу сказал, что приведенный код — это говнокод.
На такого рода шаблоны со временем глаз уже настраивается. Заводишь массив — размер задаешь РОВНО в одном месте, в остальных — через sizeof или иначе (я обычно константу задаю, потом ее использую). Когда перебор элементов, то в условии ВСЕГДА знак <, и никак не иначе. Ну и так далее. Чисто опыт со временем.

C>А ведь вместо обычного целочисленного аккумулятора по тому адресу на стеке вполне мог быть, скажем, адрес zero-terminated строки и вот мы его затерли и он стал указывать совсем другой участок памяти... И еще очень хорошо будет, если тут же выскочит segment fault, а не что похуже...

Угу, один из способов взлома программ — это переполнение стэка. Принцип действия точно такой же.

И ведь сколько лет известна проблема, а все еще можно применить. Не далее как пару месяцев наза внутрях мозиллы чинил подобный вот код.....
Re[2]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 28.07.09 14:02
Оценка:
Здравствуйте, criosray, Вы писали:

C>Попробуйте скомпиллировать данный код в VC++ любой версии и запустить.

C>Сразу скажу, что код корректен.

C>Попробуйте без дебагера угадать в чем проблема. Удачи.

поскольку ругань закончилась, спрошу: и что там не так? Визуалки под рукой нет. Про триграфы только слышал в детстве, так и не осилил их запомнить
Re[9]: Модульные тесты и "безопасные" языки - хорошо.
От: Vamp Россия  
Дата: 28.07.09 14:27
Оценка:
CC>Так нагляднее:
...
Во первых, лично мне запись в одну строчку нагляднее. Но у на свобода — если тебе так нагляднее, найди себе компилятор, который поддерживает такую запись, и пиши так.
Да здравствует мыло душистое и веревка пушистая.
Re[3]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 14:32
Оценка:
Здравствуйте, March_rabbit, Вы писали:

C>>Попробуйте скомпиллировать данный код в VC++ любой версии и запустить.

C>>Сразу скажу, что код корректен.

C>>Попробуйте без дебагера угадать в чем проблема. Удачи.

M_>поскольку ругань закончилась, спрошу: и что там не так? Визуалки под рукой нет. Про триграфы только слышал в детстве, так и не осилил их запомнить
Из-за триграфа first=second не компилируется, поэтому результат 1 1 1 1 1 ... 20, а не 1 1 2 3 5 ... 21
Re[4]: Модульные тесты и "безопасные" языки - хорошо.
От: March_rabbit  
Дата: 28.07.09 16:21
Оценка:
Здравствуйте, criosray, Вы писали:

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


C>>>Попробуйте скомпиллировать данный код в VC++ любой версии и запустить.

C>>>Сразу скажу, что код корректен.

C>>>Попробуйте без дебагера угадать в чем проблема. Удачи.

M_>>поскольку ругань закончилась, спрошу: и что там не так? Визуалки под рукой нет. Про триграфы только слышал в детстве, так и не осилил их запомнить
C>Из-за триграфа first=second не компилируется, поэтому результат 1 1 1 1 1 ... 20, а не 1 1 2 3 5 ... 21
вероятно, триграф выглядел как-то так: <??/> ?
еще когда наткнулся на них, подумал, что это — зло.
Re[3]: Модульные тесты и "безопасные" языки - хорошо.
От: midcyber
Дата: 28.07.09 16:59
Оценка:
Здравствуйте, Хвост, Вы писали:

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


Х>Я тебе и без дебаггера скажу в чём проблема, проблема в том что ты не знаешь что такое триграфы. Ещё проблема в том что ты нихрена не писал на С++ как заявляешь, либо у тебя настолько ороговение мозга что я даже не знаю последствием какой травмы это может являться. Пиши на C# родной, забей на С++, очевидно что этот язык не для тебя.


Проблем еще несколько, во-первых, этот этюд
Автор: Iso
Дата: 27.07.09
уже был на RSDN,
во-вторых, какой нормальный программист напишет в комментариях "так ведь ???" да еще оформлять их слешами в конце?..
Re[4]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 17:07
Оценка:
Здравствуйте, midcyber, Вы писали:

Х>>Я тебе и без дебаггера скажу в чём проблема, проблема в том что ты не знаешь что такое триграфы. Ещё проблема в том что ты нихрена не писал на С++ как заявляешь, либо у тебя настолько ороговение мозга что я даже не знаю последствием какой травмы это может являться. Пиши на C# родной, забей на С++, очевидно что этот язык не для тебя.


M>Проблем еще несколько, во-первых, этот этюд
Автор: Iso
Дата: 27.07.09
уже был на RSDN,

M>во-вторых, какой нормальный программист напишет в комментариях "так ведь ???" да еще оформлять их слешами в конце?..

Вы будете сильно удивлены, когда узнаете ЧТО программисты пишут в комментариях.
Re[4]: Модульные тесты и "безопасные" языки - хорошо.
От: Vamp Россия  
Дата: 28.07.09 17:12
Оценка:
C>Из-за триграфа first=second не компилируется, поэтому результат 1 1 1 1 1 ... 20, а не 1 1 2 3 5 ... 21
Инструментом, который ты пользуешься, надо владеть. Вот и все.
Да здравствует мыло душистое и веревка пушистая.
Re[5]: Модульные тесты и "безопасные" языки - хорошо.
От: criosray  
Дата: 28.07.09 17:37
Оценка:
Здравствуйте, Vamp, Вы писали:

C>>Из-за триграфа first=second не компилируется, поэтому результат 1 1 1 1 1 ... 20, а не 1 1 2 3 5 ... 21

V>Инструментом, который ты пользуешься, надо владеть. Вот и все.
Совершенно верно: знать и всегда помнить обо ВСЕХ подводных камнях.
Но в природе человека ошибаться. Поэтому язык, который допускает такое количество проблем, есть очень плохой язык. В то время, как современное программирование вплотную подходит к мультипарадигмам с чрезвычайно высоким уровнем "безопасности" программирования (строгая типизация, декларативность, минимизация побочных эффектов за счет применения функциональных парадигм, минимизация использования объектов с изменяемым состоянием и т.д. и т.д.), С++ по прежнему болеет все теми же детскими болезнями, которыми болел в 70х-80х... Грустно.
Re[5]: Модульные тесты и "безопасные" языки - хорошо.
От: midcyber
Дата: 28.07.09 17:45
Оценка: +1
Здравствуйте, criosray, Вы писали:

M>>во-вторых, какой нормальный программист напишет в комментариях "так ведь ???" да еще оформлять их слешами в конце?..

C>Вы будете сильно удивлены, когда узнаете ЧТО программисты пишут в комментариях.
Ну, удиви меня.
ИМХО именно этот этюд — надуманный и высосанный из пальца.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.