Последние темы Поиск
Общие форумы
Форумы поддержки портала iXBT.com
Специализированные форумы
ПроцессорыРазгон и охлаждениеСистемные платыМодули памятиВидеосистемаКриптовалюты, майнинг, blockchain-технологии, NFTИскусственный интеллект: технологии, практика, развитиеTV- и FM-тюнеры, видеовход, видеовыходЦифровое видео: захват, монтаж, обработкаМониторы и другие устройства отображенияЦифровое фотоБеспилотные летательные аппаратыЦифровой звукProAudio: Профессиональное звуковое оборудованиеСтереосистемыДомашний кинотеатр: проигрыватели и источники сигналаДомашний кинотеатр: аудиосистемаДомашний кинотеатр: ТV и проекторыМагнитные и SSD накопителиОптические носители информацииСетевые носители информацииПериферияКорпуса, блоки питания, UPSСети, сетевые технологии, подключение к интернетуСистемное администрирование, безопасностьСерверыНоутбуки, нетбуки и ультрабукиПланшеты и электронные книгиМобильные телефоны, смартфоны, кпк, коммуникаторыМобильные гаджетыОператоры и технологии мобильной связиТелефония, телекоммуникации, офисные АТСБытовая техника
Программы
Игры
Авторские форумы
Прочие форумы
Архивы конференции
Архив "О Конференции"Архив "Процессоры"Архив "Разгон и охлаждение"Архив "Системные платы"Архив "Модули памяти"Архив "Видеосистема"Архив "Видеозахват"Архив "Мониторы и другие устройства отображения"Архив "Цифровое изображение"Архив "Цифровой звук"Архив "Периферия"Архив "Корпуса, блоки питания, UPS"Архив "Коммуникации: сети и сетевые технологии"Домашний интернет, модемы (архив)Архив "Системное администрирование, безопасность"Архив "Мобильная связь"Программы Microsoft: Windows, Office, Server, Windows LiveАрхив "OС и системное ПО"Архив "Программы: Интернет"Архив "Программирование"Форум прикладных программистовАрхив "Электронные устройства и компоненты"Архив "Околокомпьютерный Флейм & Общий"Архив "Полемика (Злобный Флейм)"Околоавтомобильный ФлеймФорум ремонтниковВопросы компании IntelФотокамеры SamsungФорум о магазине приложений RuStoreФорум по продукции компании Huawei
Справка и сервисы
Другие проекты iXBT.com
Кураторы: Konstantin Mironovich, dozen
Страницы:Кликните, чтобы указать произвольную страницу123456139140141далее
Sign: Немного оффтоп (насчет юмора) или перлы программирования
Локальные Правила Темы

0. Данная тема является специализированной темой форума "Программирование" и, поэтому, регулируется специальными правилами.

1. Здесь рекомендуется размещать забавные примеры кода, веселые случаи из программистской жизни и тому подобное.

2. Так как обсуждение ляпов и забавных историй есть дело живое, неформальное и по сути своей нестрогое, то здесь в умеренных пределах разрешен оффтопик и флуд. "Умеренными пределами" ведают модератор форума и кураторы темы. Проще говоря - не засоряйте тему мусором, не имеющим отношения к "юмору и перлам программирования" и у вас не будет проблем.

3. Не разрешается размещать здесь анекдоты и истории не относящиеся к программированию.

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

Во всем остальном руководствуйтесь правилами форума и общими правилами конференции.
Sign
Member
Автор темы
289/452 ответов
22 года на iXBT, с сентября 2002
2 фото на iXBT.photo
Чаще пишет в "Общий" (41%)
Инфо Ответить
S
Sign MemberАвтор темы
20 лет назад / 14 октября 2004 23:18
Как программист без пива, так и программист без чувста юмора IMHO - это не программист
Насмотревшись в свое время реальные программы, предлагаю поделиться "достойными" фрагментами.

1.
1MessageBox(NULL, "Вы действительно хотите удалить выделенный объект?", "Внимание", MB_OK |MB_ICONQUESTION);
2.
1CBaseObj* pObj = GetObj();
2pObj->MyFunc();
3if(!pObj)
4   return;
3.
1if(pObj==0xcdcdcdcd) return;
to moderator: надеюсь, это не противоречит правилам форума, т.к. является своеобразным обменом опытом

Исправлено: Sign, 15.10.2004 02:41

Komarik
unregistered
Ответить
K
Komarik unregistered
20 лет назад / 15 октября 2004 00:31
Это имху не смешно...
Тут плакать надо.
ndemia
Member
1265/1843 ответов
24 года на iXBT, с декабря 2000
Чаще пишет в "Программирование" (68%)
Web-страница
Инфо Ответить
n
ndemia Member
20 лет назад / 15 октября 2004 02:21
Sign
#1 - а точно не MB_TASKMODAL?
#2 - не-виртуальный метод так вызывать вообще-то можно. В нём даже можно будет написать if(!this) DebugBreak();
#3 - ну проверка, а чего? Всякие debug tools этим сплошь и рядом занимаются...
SGD
Member
57/1575 ответов
23 года на iXBT, с августа 2001
Чаще пишет в "Ноутбуки" (24%)
Инфо Ответить
S
SGD Member
20 лет назад / 15 октября 2004 02:31
Sign
2. A что здесь такого? pObj и pOj - разные ведь идентификаторы
Sign
Member
Автор темы
290/453 ответов
22 года на iXBT, с сентября 2002
2 фото на iXBT.photo
Чаще пишет в "Общий" (41%)
Инфо Ответить
S
Sign MemberАвтор темы
20 лет назад / 15 октября 2004 02:50
SGD
Подправил

ndemia
#3 - ну проверка, а чего? Всякие debug tools этим сплошь и рядом занимаются...
товарищ проверял указатель-член структуры на неинициализированное значение, начитавшись в MSDN раздел "Memory Management and the Debug Heap"
Kid_Deceiver
Moderator
6452/6688 ответов
25 лет на iXBT, с декабря 1999
Чаще пишет в "Программирование" (94%)
Инфо Ответить
K
Kid_Deceiver Moderator
20 лет назад / 15 октября 2004 07:49
Ну что ж, типичные ошибки и забавные казусы - это тоже одна из сторон программирования. Однако хочу предупредить, если хотите сюда запостить "юмористический случай", позаботьтесь о том, чтобы:
  • он действительно был интересен и поучителен;
  • он был достаточно понятен - не стесняйтесь снабжать собственными комментариями;
  • он не был тривиальным ("а посмотрите, этот ламер пишет a = 2 / 3; и не знает, что получит 0");
  • не создавать здесь флуд и флейм;
И тогда ветка будет жить.
OXPEHOMETP
Member
325/334 ответов
22 года на iXBT, с февраля 2003
Чаще пишет в "Программирование" (97%)
Инфо Ответить
O
OXPEHOMETP Member
20 лет назад / 15 октября 2004 09:11
Внесу свои пять копеек - пополнять буду редактированием сообщения :)))

1. "Педантичность" программиста в отладочной версии:
1ASSERT(closesocket(...)!=SOCKET_ERROR);
(Наблюдалась масса аналогичных примеров "ASSERT vs. VERIFY", в релизе утечка ресурсов)

2. На ту же тему "грамотного" использования макросов:
1STDMETHODIMP C<SomeName>Impl::Initialize() {
2    ...;
3    return HRESULT_FROM_WIN32(RegCreateKeyEx(
4        HKEY_CURRENT_USER,......,&m_hKey,...));
5}
(Выловил такое каким-то ликтрэйсером. Пояснение: макрос HRESULT_FROM_WIN32
вычисляет аргумент несколько раз, и получается утечка ресурсов)


3. Особенности использования STL или "буду краток":
01// class Schedule {
02//  ...
03// public:
04//  class Entry {
05//      ...
06//  public:
07//      Entry(...);
08//      ...
09//      void SetSchedule(...);
10//  };
11// };
12// ...
13// class ScheduleMap
14// : public std::map<...,Schedule::Entry,...>
15// ...
16  
17//  ScheduleMap m_mapEntries;
18   ...
19    m_mapEntries.insert(Schedule::Entry(...)).first->second.SetSchedule(...);
(Речь идёт о последней строчке кода - комментарии излишни)

4. Нежелание придумывать названия "на ходу" (точная копия!):
1void CBlah::OnBlah(IBlah::EBlah blah, ErrorID idError) {
(Я это увидел, подошёл к автору и получил ответ: "потом переименую всё")

5. Assembler, MS-DOS, печать hex-числа. Вообще-то не смешно.
01; eax = number to dump
02    mov  cx,28
03hex_dump_loop:
04    push eax
05    shr  eax,cl
06    and  al,0Fh
07    aam
08    db   0D5h,11h
09    add  al,30h
10    int  29h
11    pop  eax
12    sub  cx,4
13    jnc short hex_dump_loop
(Обращу внимание на команду "aam" и следующую строчку, в которой используется команда "aad" с нестандартным основанием (17). Эти две строки выполняют действие "if (al>9) al+=7" для того, чтобы после прибавления 30h (т.е. ASCII-кода '0') сразу получить циферку)

--== to be continued ==--

Исправлено: OXPEHOMETP, 15.10.2004 10:08

~wildwind~
Member
219/246 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "OС и сист. ПО" (26%)
Россия, Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР…
Инфо Ответить
w
~wildwind~ Member
20 лет назад / 15 октября 2004 11:25
OXPEHOMETP
IBlah::EBlah -
Так и хочется прочитать через "я"

Насчет UI. Сейчас работаю с одной системой; код не видел, но выглядит так: выводится MessageBox с вопросом и кнопками Да, Нет и Отмена. Если нажать Отмена, система проявляет чудеса галантности: "Пожалуйста, выберите Да или Нет".
FUKS
unregistered
Ответить
F
FUKS unregistered
20 лет назад / 15 октября 2004 13:22
Вот перед сном напьёшься воды от избытка вдохновения, спишь, а изнутри "внутренний будильник" теребит, не то чтобы гонит в атаку, но поспать нормально не даёт, приходится с ним бороться, противодействовать, сдерживать, в результате не высыпаешься. А я придумал способ: форкаешься, дочерний процесс сдерживает "внутренний будильник", а родительский тем временем спокойно спит.
Softwarer
Member
486/514 ответов
23 года на iXBT, с августа 2001
Чаще пишет в "Программирование" (76%)
Web-страница
Инфо Ответить
S
Softwarer Member
20 лет назад / 15 октября 2004 13:24
Насчет UI.
У одной дамы, с которой я работал, была забавная привычка. В сообщении об ошибке, помимо иконки и собственно сообщения, была единственная кнопка: "Yes".
~wildwind~
Member
220/247 ответов
21 год на iXBT, с февраля 2004
Чаще пишет в "OС и сист. ПО" (26%)
Россия, Р В Р’В Р РЋРЎв„ўР В Р’В Р РЋРІР…
Инфо Ответить
w
~wildwind~ Member
20 лет назад / 15 октября 2004 13:40
В сообщении об ошибке, помимо иконки и собственно сообщения, была единственная кнопка: "Yes".
А почему же без восклицательного знака?
Useroff
Member
79/449 ответов
23 года на iXBT, с августа 2001
20 фото на iXBT.photo
Чаще пишет в "Общий" (48%)
Инфо Ответить
U
Useroff Member
20 лет назад / 15 октября 2004 21:24
1#define MAX_SIZE 255 // Максимальная длина буфера 64
Sign
Member
Автор темы
291/454 ответов
22 года на iXBT, с сентября 2002
2 фото на iXBT.photo
Чаще пишет в "Общий" (41%)
Инфо Ответить
S
Sign MemberАвтор темы
20 лет назад / 16 октября 2004 00:10
OXPEHOMETP
Кстати, об идентификаторах. Мне попадались такие экземпляры:
1int nVsegoCount;
или
1long nLongValueAssociatedWithTheAddedString; // Надо называть вещи своими именами
переменные цикла (мне понравился подход к названию):
1for(int i ...) {
2   ...
3   for(int ii ...){
4       ...
5       for(int iii ...)
6       ...
7   }
8}
Ulin
unregistered
Ответить
U
Ulin unregistered
20 лет назад / 16 октября 2004 00:30
Sign
код:
for(int i ...) {
...
for(int ii ...){
...
for(int iii ...)
...
}
}


А что - интересная фишка, точно не запутаешься какая переменная из какого уровня

long nLongValueAssociatedWithTheAddedString; // Надо называть вещи своими именами

А это напоминает классику:

ДлинныйМнемоническийИдентификатор1, ДлинныйМнемоническийИдентификатор2

Исправлено: Ulin, 16.10.2004 00:59

zzf
Member
20/27 ответов
21 год на iXBT, с ноября 2003
Чаще пишет в "Программирование" (93%)
Инфо Ответить
z
zzf Member
20 лет назад / 16 октября 2004 01:43
Сообщение для пользователя:
"Для продолжения выберите любую клавишу и введите ее"
Lemur
unregistered
Ответить
L
Lemur unregistered
20 лет назад / 16 октября 2004 02:02
Sign:
1for(int i ...) {
2   ...
3   for(int ii ...){
4       ...
5       for(int iii ...)
6       ...
7   }
8}
Так как раз пишут хорошие программисты. Довольно распространенный приём.
Konstantin_Mironovich
Member
253/3597 ответов
22 года на iXBT, с мая 2002
Чаще пишет в "Общий" (25%)
Инфо Ответить
K
Konstantin_Mironovich Member
20 лет назад / 16 октября 2004 02:07
век учись. мне iii понравилось.
правда всегда ijknm как-то хватало.
и потом у меня пунктик насчет одинакой длины переменных, встречающихся по соседству..
XE-XE
unregistered
Ответить
X
XE-XE unregistered
20 лет назад / 16 октября 2004 07:18
OXPEHOMETP
4. Нежелание придумывать названия "на ходу" (точная копия!):
Еще из той же оперы (сразу прошу прощения за содержание - сохранен оригинальный синтаксис):
1UPDATE rdb$exceptions 
2SET rdb$message=:E 
3WHERE rdb$exception_name='EX_ZALUPA0'
4EXCEPTION EX_ZALUPA0;
Цифра 0 наталкивает на мысль что где-то есть еще 1, 2 и т.д
БУзер
Member
1/14 ответов
21 год на iXBT, с ноября 2003
Чаще пишет в "Общий" (45%)
Инфо Ответить
Б
БУзер Member
20 лет назад / 16 октября 2004 15:19
забавные комменты в sdk half-life
1//No platform specific code in vgui\lib-src\vgui dir. Code in vgui\lib-src\vgui should
2//only include from vgui\include or standard C includes. ie, if I see windows.h included
3//anywhere but vgui\lib-src\win32 I will hunt you down and kill you. Don't give me any crap
4//that mfc is platform inspecific.
1// this is the most hacked, evil, bastardized thing I've ever seen. kjb
1// set eye position
2SetEyePosition();
1// UNDONE: blah, this is bad, we should use a stack but I'm too lazy to code one.
2for (i = 0;...
1// What the hell are you doing?
2pMonster->ReportAIState();
1//!!!KELLY - here's a cool spot to have the talkmonster talk about the dead
2   player if we want.
3// "Oh dear, Gordon Freeman is dead!" -Scientist
4// "Damn, I can't do this without you." -Barney
1float m_frictionFraction;   // Sorry, couldn't resist this name :)
Mikle Ilyin
Member
131/381 ответов
23 года на iXBT, с ноября 2001
Чаще пишет в "Программирование" (34%)
Инфо Ответить
M
Mikle Ilyin Member
20 лет назад / 16 октября 2004 17:07
В бейсике иногда пишут:
DO
.....
LOOP WHILE FALSE
Sign
Member
Автор темы
292/455 ответов
22 года на iXBT, с сентября 2002
2 фото на iXBT.photo
Чаще пишет в "Общий" (41%)
Инфо Ответить
S
Sign MemberАвтор темы
20 лет назад / 16 октября 2004 19:55
Вот, еще попалось (самому мне такое просто не придумать)

Здесь чувствуется почерк человека, который не любит очевидных решений:
01int DelRightSpace(char* str) // удаление правых пробелов в строке
02{
03   int LenStr;
04   char BufStr[513];
05    
06   LenStr=strlen(str);
07   if(LenStr==0) return 0;
08    
09   strcpy(BufStr,str);
10   strrev(BufStr);
11   for(int count=0;count<LenStr;count++)
12   {
13     if(BufStr[count]!=' ')
14     {
15       strncpy(str,&BufStr[count],sizeof(char)*(LenStr-count));
16       str[LenStr-count]='\0';
17       break;
18     }
19   }
20    
21   if(count==LenStr) str[0]='\0';
22   else strrev(str);
23    
24   return 1;
25}
Представьте себе лицо пользователя числа этак 1-2 января, у которого нижеприведенная процедура вернет "ложь":
01BOOL GetMyComp(void)
02{
03  CString MyStr;          // Имя открываемого файла
04  MyStr.Format("c:/windows/system/vips.cpl");
05  OFSTRUCT Info_File;          // Служебная информация о файле
06  HFILE hf = OpenFile(MyStr, &Info_File, OF_READ);
07  if (hf < 0 )
08  {
09    MyStr.Format("Не узнаю свой компьютер");
10    MessageBox(NULL, MyStr, "Внимание!", MB_OK | MB_ICONHAND);
11    _lclose(hf);
12    return NO;
13  }
14  _lclose(hf);
15  return YES;
16}
Konstantin_Mironovich
Member
254/3599 ответов
22 года на iXBT, с мая 2002
Чаще пишет в "Общий" (25%)
Инфо Ответить
K
Konstantin_Mironovich Member
20 лет назад / 17 октября 2004 01:07
Mikle Ilyin
LOOP WHILE FALSE
в C++ еще чаще. операторные скобки позволяют избежать goto не используя try-throw-catch
OXPEHOMETP
Member
328/337 ответов
22 года на iXBT, с февраля 2003
Чаще пишет в "Программирование" (97%)
Инфо Ответить
O
OXPEHOMETP Member
20 лет назад / 17 октября 2004 09:06
Кстати, о длинных идентификаторах - посмотрим в творения M$.
Про CoMarshalInterThreadInterfaceInStream и CoGetInterfaceAndReleaseStream уже, наверное, многие тут знают. Следующая пара "рекордсменов" мне попалась при знакомстве с Windows DDK. Это KeAcquireInStackQueuedSpinLockAtDpcLevel и KeReleaseInStackQueuedSpinLockFromDpcLevel. Но всё-таки WinAPI - вещь гораздо более необъятная, чем я думал; "рекордсмен на сегодняшний день" оттуда: AccessCheckByTypeResultListAndAuditAlarmByHandle (советую посмотреть в MSDN доку по этой функции, в частности обратить внимание на количество параметров и т.п.). Конечно, если глянуть в некоторые M$-овские COM-компоненты, там и повеселее можно обнаружить. Ну, а у нас один товарищ (перлы авторства которого я ещё повспоминаю) выдумал классу следующее название: CChangesCacheListOperationAcknowledgementElement. Это ещё не самое смешное. Подходим как-то к его тачке (вчетвером) что-то обсудить. Видим строчку:
1CChanges...Element * pElement = new CChanges...Element(...,...);
(название сократил) и - чуть ли не хором - спрашиваем: "а почему pElement, а не pChanges...Element?".

Вышенаписанное к перлам не относится, поэтому в сообщение выше вписывать не стану.

Добавление от 17.10.2004 09:28:

Вот ещё хорошо известный пример от M$:
01BOOL AllocateAndInitializeSid(
02  PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority,
03  BYTE nSubAuthorityCount,
04  DWORD dwSubAuthority0,
05  DWORD dwSubAuthority1,
06  DWORD dwSubAuthority2,
07  DWORD dwSubAuthority3,
08  DWORD dwSubAuthority4,
09  DWORD dwSubAuthority5,
10  DWORD dwSubAuthority6,
11  DWORD dwSubAuthority7,
12  PSID* pSid
13);

Исправлено: OXPEHOMETP, 17.10.2004 09:36

Добавление от 17.10.2004 09:38:

Фраза моего знакомого о страдающих длинными идентификаторами: "они бы их ещё по-немецки называли"...
Mikle Ilyin
Member
132/382 ответов
23 года на iXBT, с ноября 2001
Чаще пишет в "Программирование" (34%)
Инфо Ответить
M
Mikle Ilyin Member
20 лет назад / 17 октября 2004 10:05
Konstantin_Mironovich

Это понятно, я и сам так пишу, но выглядит прикольно.
Добрый Ээх
Member
119/1424 ответов
22 года на iXBT, с декабря 2002
Чаще пишет в "Общий" (52%)
Инфо Ответить
Д
Добрый Ээх Member
20 лет назад / 17 октября 2004 10:36

Из ветки про индусский код на rsdn (если кто вдруг не видел)
1if( myVar == true)
2    return true;
3else if( myVar == false )
4    return false;
5else
6    return !true && !false;
psg
unregistered
Ответить
p
psg unregistered
20 лет назад / 17 октября 2004 15:59
IMHO тоже неплохой вариант
1for i := 0 to 100 - 1 do ...
Penizillin
unregistered
Ответить
P
Penizillin unregistered
20 лет назад / 17 октября 2004 16:46
psg
100-1 это кто-то цикл тьюнил
namesoft
unregistered
Ответить
n
namesoft unregistered
20 лет назад / 17 октября 2004 20:45
"++i-- - операция подергивания" (с) где-то из этого форума
Koko
Member
477/2291 ответов
24 года на iXBT, с января 2001
Чаще пишет в "Общий" (25%)
Россия, Москва
Инфо Ответить
K
Koko Member
20 лет назад / 17 октября 2004 21:07
нашел комментарий интересный

sbr TEMP2_INT, (1<<TOV0) ;обязательно сбрасываем флаг,
out TIFR, TEMP2_INT ;иначе - беда!
Softwarer
Member
489/517 ответов
23 года на iXBT, с августа 2001
Чаще пишет в "Программирование" (76%)
Web-страница
Инфо Ответить
S
Softwarer Member
20 лет назад / 18 октября 2004 11:21
А почему же без восклицательного знака?
Потому что дама умела пользоваться только MessageDlg

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

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

Короче говоря, программисты садятся в строчном порядке пихать такие вопросы буквально во все места. Настроение соответствующее. И приходит мысль - отыграться.

В итоге, чтобы выйти из программы, требовалось ответить на пять или шесть подтверждений. Причем отвечать требовалось как "да", так и "нет" без явной системы.
Dmitriy M. Reznitskiy
unregistered
Ответить
D
Dmitriy M. Reznitskiy unregistered
20 лет назад / 18 октября 2004 12:11
Хех...
я видел индусский код - winnt сервис, написанный на vb с MessageBox'ами внутри.
Ваш ответ:

Нет значка Нет значка Вот тут! Лампочка Восклицание Вопрос Класс! Улыбка Злость Огорчение Поговорим? Краснею Подмигивание Ругаю ОдобряюBIUdelSxsupxsuboffsp spoilerqurlimgvideo• list1. list1 codeprecenter-hr-rusQWE→ЙЦУ
файлыочистить
Ваше имя: Авторизуйтесь Предпросмотр В полную форму
вставить выделенную цитату в окно ответа
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Если Вы считаете это сообщение ценным для дискуссии (не обязательно с ним соглашаться), Вы можете поблагодарить его автора, а также перечислить ему на счет некоторую сумму со своего баланса (при отзыве благодарности перечисленная сумма не будет вам возвращена).
Также вы можете оценить сообщение как неудачное.
В течение суток можно 20 раз оценить сообщения разных участников (купите Premium-аккаунт, либо оплачивайте оценки сверх лимита).
Страницы:Кликните, чтобы указать произвольную страницу123456139140141далее