sab123: (Default)
[personal profile] sab123
Недавно интервьюировал индийского человека, и он собственно задание решил при некоторых подсказках (задачка достаточно сложная, пока что ее решили до конца двое). Но решил очень п.здецким способом, и по ходу дела пытался делать очень п.децкие вещи - типа, создать здоровый вектор из пустых строк. Исходя из статистики, такое ощущение, что это у людей из Индии не случайно, а это настоящая тамошнаяя школа программирования:

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

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

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

Date: 2018-06-15 12:16 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
О да. Не далее как сегодня: в коде было нечто вроде
bool foo = cond1() || cond2();


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

if (!foo) {
    foo = cond3();
}


Вот так и живём.

Какая разница

Date: 2018-06-15 12:50 am (UTC)
From: [personal profile] malobukov
Оба варианта компилируются в идентичный ассемблерный код:
~/tmp$ cat point.cpp
int cond1();
int cond2();
int cond3();
int foo() {
  bool foo = cond1() || cond2() || cond3();
  return foo;
}
~/tmp$ cat counterpoint.cpp
int cond1();
int cond2();
int cond3();
int foo() {
  bool foo = cond1() || cond2();
  if (!foo) {
  	foo = cond3();
  }
  return foo;
}
~/tmp$ g++ -O3 -S point.cpp
~/tmp$ g++ -O3 -S counterpoint.cpp
~/tmp$ diff point.s counterpoint.s
1c1
< 	.file	"point.cpp"
---
> 	.file	"counterpoint.cpp"

Re: Какая разница

Date: 2018-06-15 01:03 am (UTC)
spamsink: (Default)
From: [personal profile] spamsink
Я знаю. Но мозги человеческие зачем мучить?

Это как раз понятно

Date: 2018-06-15 01:34 am (UTC)
From: [personal profile] malobukov
Оптимизирует затраты своих мозговых усили. Так ему не надо совсем думать об уже написанном коде, только о своём, который он добавляет.

А что потом читать будет сложнее - так это ж не ему, а кому-то другому читать.

Хуяк-хуяк - и в продакшн

Date: 2018-06-15 04:42 pm (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
То есть в индийской программистской культуре - делается упор на быстрое создание прототипов и игнорируется long term maintainability of the system.

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

Re: Какая разница

Date: 2018-06-15 02:17 am (UTC)
From: [personal profile] rezky
Я немного попридираюсь и напомню, что перегруженный || не всегда bool и никогда не short-circuit.

Date: 2018-06-15 02:26 am (UTC)
From: [personal profile] malobukov
Предположение про язык программирования было моё. Вполне возможно, что в оригинале был какой-нибудь C99, где нет перегрузки операторов.

Re: Какая разница

Date: 2018-06-15 04:46 pm (UTC)
dennisgorelik: 2020-06-13 in my home office (Default)
From: [personal profile] dennisgorelik
Длинная цепочка || вычислений - вряд ли будет перегружена, пока эти сравнения однородны и записаны в виде списка.
Для дальнейшего улучшения читабельности, я рекомендую отформатировать так:
bool foo =
	cond1()
	|| cond2()
.....
	|| condN();
Edited Date: 2018-06-15 04:47 pm (UTC)

Тем не менее

Date: 2018-06-15 12:57 am (UTC)
From: [personal profile] malobukov
GSLV летает, собственное ядерное оружие есть, выпускники IIT на равных с зарубежными коллегами из лучших вузов, Вишванатан Ананд продолжает в шахматы уже много лет как, в списке авторов Photoshop каждое второе имя индейское и так далее.

Ну а что не все на этом уровне, так везде не все.

Задачу в студию!

Date: 2018-06-15 03:18 am (UTC)
From: [personal profile] provokatorz
Давай лучше задачку в студию, а то так и помрем без знания, на чем в гуглях валят. ))

Троллинга ради

Date: 2018-06-15 03:29 am (UTC)
From: [personal profile] provokatorz
понятно. Я уж подумал, что она для мозгов, а она для измерения "тыкскыть". :)

Date: 2018-06-15 06:29 am (UTC)
vit_r: default (Default)
From: [personal profile] vit_r
Достаточно посмотреть на пантеон их божеств... :-)

June 2025

S M T W T F S
1 2 3 4 567
8 9101112 1314
15 16 171819 2021
22 2324252627 28
29 30     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 2nd, 2025 06:58 am
Powered by Dreamwidth Studios