Personnel Management
IT career
Comments 1579
+18
Сильно.
Как js разраба раздражает что даже на senior позицию присутствует обязательный вопрос «что такое замыкание?»
+8
И просят реализовать приватную статическую переменную с его помощью.
+5
Я вот как .net разработчик, не так давно начал применять js/ts в разработке. У меня уже был сахар для этого. Я конечно знаю, как это реализовать, но только потому, что сумасшедшие фронтендеры в необъяснимом в восторге от этой реализации, что мне ни раз и показывали. Понимаю ли я, как работают замыкания? Чёрт, да, я отлично это понимаю. Придёт ли мне в голову, что для реализации приватной статической переменной мне понадобиться фигачить самовызывающуюся функцию? Придёт, но не за минуту.
-3
— Чёрт, да, я отлично это понимаю.
К сожалению, хоть вы и понимаете, как работают замыкания, но не поняли их главного назначения — это не «самовызывающиеся функции», это — объекты (функции первого порядка), которые замыкают в себе некоторый контекст, который в зависимости от языка может содержать в себе определенный набор переменных и областей.
То, что вы можете реализовать статическую переменную, опираясь на эти свойства, учитывая при этом все особенности JS/TS/.NET, говорит о вас как о хорошем разработчике, способном видеть архитектурные концепции за простым кодом, что как раз и вызывает восторг у знающих коллег.

И еще — нет, не придется, потому что обычно находятся более элегантные решения, чем использование статических переменных.
-2
— что для реализации приватной статической переменной мне понадобиться фигачить самовызывающуюся функцию
в этом моменте.
+2
Тут я говорю, что самовызывающаяся функция нужна для реализации приватной статической переменной. Я нигде не говорю, что замыкания — это самовызывающиеся функции
-5
Ну если уж пошло за буквоедство, то я тоже нигде не указываю, что это именно вы сказали. Кроме того, что это за термин такой — «самовызывающиеся функции» — что это за зверь? Типо сидишь себе и тут — хряк — откуда ни возьмись — функция вызвалась, сама по себе.

Или это как в квантовой механике — самовызов — функция считается одновременно вызванной и нет до тех пор пока программист не скомпилирует код?

Я конечно, понимаю, .Net имеет свою терминологию, возможно, это что-то из специфического, но ни в руби, ни в пхп, ни в яве, и даже в C# я такого зверя не встречал, будьте добры пояснить за вашу Senior терминологию.
+1

Очевидно, функция которая сама себя вызывает, т.е. рекурсивная ;). (на самом деле, наверное, module pattern)

0

Вообще это называется iife (immediately-invoked function expression) :)

-1
Вызов анонимной функции? И что же тут «самовызывающего», если вы сами ее вызвали, написав () в конце?

Это видимо какой-то особый .net нейминг, с теорией программирования не связанный.

Ну или кто-то сеньор только своей голове, а не в реальности, тут не совсем понятно.
+3
Это не ".net нейминг", а устоявшийся перевод термина IIFE (immediately-invoked function expression).
-1
Гугл транслейт почему-то переводит это как «немедленно вызываемые», что куда ближе к правде, чем «самовызываемые» (self-invoked).
Ирония всего происходящего в том, что самозванец, называющий себя «Senior full stack developer», кричит о том, что «хватит подозревать разрабов в самозванстве».

Для меня это звучит как «Платите мне сеньорские за знания слабого миддла». Это просто смешно.
+1
Гугл, самовызывающаяся функция, About 1,600 results.
По ссылкам реальные люди говорят это реальное, может быть сленговое, название. Или, типа, редкий сленг = самозванец?
0
Гугл, «немедленно вызываемая функция javascript» — 30 тысяч результатов. Может у вас есть еще вопросы к гуглу?
+2
И что это доказывает? Вы утверждали что так никто не говорит, я показал что так говорят. Про то что более популярно а что более правильно разговора не было, я в этом вашем js ни в зуб ногой и такие разговоры вести не компетентен.
-3
Это показывает, что даже академический термин в разы популярней вашего терминологического изобретения. И я не удивлен, что в интернете нашлось еще полторы тысячи человек, использующих слова, сути которых они не понимают.

Кстати, если изучите кто пользуется этим термином, поймете, что среди них не так уж много профессионалов, что говорит о том, в каких кругах это слово распространено.
+1

2018 год, а многие всё ещё верят выхлопу гуглтранслейта. Чтобы не быть голословным: по partitioning нет ни правильного «секционирование», ни «партиционирования» от людей не знакомых с теорией.
Соглашусь, что «немедленно вызываемые» передают суть, а «самовызываемые» намекают на непонимание происходящего в коде.

+1
Я предлагаю отныне их называть «функции-самозванцы» ибо это короче чем «самовызываемые», так же неправильно и позволяет закольцевать тему в мире метафор.
-1
понадобитЬся… типичная гиковская грамотность, увы. Только об этом шла речь.
0
Конечно. Вот я не понял даже смысла этой просьбы. Что такое, вообще, «статическая переменная»? Это что-то из Си?
0
Статические переменные или методы есть почти во всех языках. Стоит рассматривать эту фичу в рамках пространства имен, как группировку функциональности под одним классом.
0
В Си (и в плюсах) слово static означает три разные вещи — внутри функции, внутри структуры/класса, и на внешнем уровне. Какой из этих трёх смыслов вкладывается в понятие «статической переменной»?
0
Что тут непонятного?

У Кернигана и Ритчи в учебнике по Си есть целая глава «статические переменные» («static variables»), думаю про это автор и писал.
0
Не единственное, но обсуждаются то статические переменные, а не само слово static, разве нет?
+7

imho, все-таки есть минимально необходимый уровень знаний матчасти. Математик может не использовать таблицу умножения, занимаясь тензорной математикой, но ответить сколько будет 2*2, кмк обязан.

+8

Все мы люди и модет на небольшое время "забыть" от волнений или по другим причинам даже 2*2. Думаю почти все сталкивались когда понимаешь о чем речь, но слова забываются.

+10
Не должно такого быть. Если тот же математик что-то забывает, то он должен уметь это вывести. А если он забывает аксиоматику, то какой он тогда математик? Я в лекциях Савватеева наблюдал момент, когда по ходу лекции он забыл формулу нахождения корней квадратного уравнения (а это д.ф.-м.н. между прочим). Он слегка смутился, но тут же ее вывел и доказал.
+9
оно не должно случатся, но а если случается в этом нет ничего страшного.
Если у человека есть опыт, и бывает так что опыт человека которого собеседуют выше опыта интервьюера, то да, интервьюер легко скажет что он нам не подходит
0
Для предотвращения подобных ситуаций, хорошо бы чтобы наймом сотрудников занималась сторонняя HR компания имеющая при этом штат технических специалистов, которые будут проводить беспристрастную оценку уровня знаний соискателя… Но видимо это пока только мечты(
+5
Зачем вообще об этом мечтать? Люди не роботы, и человек может что-то знать, но совершенно не подходить под конкретную команду и\или проект. Собеседование это не экзамен и не соревнования по вольной борьбе, это поиск подходящего человека в команду. Если в команде все используют наследование и много виртуальных методов, а человек не помнит это слово и возможно (как он и сам признался) не любит наследование и избегает его, то зачем его брать в команду? Тут же конфликт подходов на лицо, будет борьба за неформальное лидерство и постоянные конфликты на этой почве. Потом кто-то да уволится.
0
Отчасти согласен, но иногда в команду требуется лид, который априори должен быть сильнее всех имеющихся членов команды (иногда даже вместе взятых), и естественно в большинстве случаев, команда не утвердит никого из действительно подходящих кандидатур, в особенности если команда на основную массу состоит из говнокодеров… как быть тогда, видимо извечный вопрос…
+2
Было дело, я работал над проектом, писал бек на шарпе, а нужен был фронт на пхп, да с общением с WCF да через https. Тот человек что писал фронт, особой прытью не обладал, да и сайт был простой, он проблему решить не мог, я поискал готовые решения — их не оказалось. Вроде как все есть — но либа не работает, и нужно было найти хорошего ПХПшника, допилить либу. Приходилось собеседовать по сути обладая знаниями джуна в пхп, сина. Я так и спрашивал в конце собеседования — как решить эту задачу, каждый бил себя в грудь и говорил — да элементарно! Ни чего сложного! По началу я злился, начал думать что они все самозванцы… Но проблему нужно решать и человека искать… Начала давать час на раздумья. Если через час я слышал все то-же «да это элементарно» и ни какой конкретики — то прощался.
0
Это все конечно хорошо, и история думаю интересная, но я говорил не о разных стеках технологий, а о том, что бывают конторы, где все команды и их члены уровнем ниже чем специалист, которого они ищут.
0
Такие компании к сожалению только добавляют гемора всем, в Новосибирске есть такое агнество, так вот два раза попробовал с ними работать, и чет как то стороной теперь подобные конторы обхожу, у них задача продать разработчика компании.

А решается это все просто, нужно чтобы собеседование проводили или несколько людей с разных проектов, или несколько технических интервью, тогда будет более менее честная оценка
0
HR-специалисты зачастую и не особо понимают чем занимается компания и какие работники нужны. Это при том, что сам отдел находятся «внутри», а работники за соседней дверью. А с вашим предложением вообще полный атас будет. Да и подобные идеи уже давно реализованы кадровыми агентствами, чья функция свелась к простому «иди туда-то и спроси того-то».
+1
Если у человека есть опыт, и бывает так что опыт человека которого собеседуют выше опыта интервьюера, то да, интервьюер легко скажет что он нам не подходит


И в некоторых случаях будет прав.

Два раза натыкался на проблемы при найме сотрудников на наукоемкие позиции. Приняли сотрудника, а потом от него постоянные (обоснованные!) жалобы на неграмотную постановку задач и на то, что его никто не понимает (и это тоже правда). А у других сотрудников — мысли «а этот человек вообще занимается чем-то полезным?». Т.е. не могут отличить от самозванца.

Если берешь overqualified специалиста, обязательно вдобавок к тому, что написано в вакансии, проверяй преподавательские навыки и думай, как будешь проверять и оценивать его работу. Если не можешь проверить и нет денег на одновременный найм двух кандидатов — вакансия невалидна.
0
должно ли случаТСя, что программисты, кроме 100500 языков и технологий выучат, наконец, родной язык?
0

Замечательный коментарий, но мне кажется это дело каждого и к теме никак не относится

+1
Если разработчик не может выучить тся/ться, может он и virtual со static путает? ;)
+10
Немного про волнение: то на экзамене в вузе, преподаватель по терверу понял мою ошибку, когда я ее еще не осознавал. Задавал много наводящих вопросов, и в конце концов попросил меня нарисовать на оси две точки 1 и 1,5. Посмотрев на мой рисунок, он сказал: «вы знаете мой предмет на отлично, но впредь, чтобы вы знали, что 1,5 больше 1, я поставлю вам четверку без права пересдачи» и выставил меня в коридор.
+1
O_o, нифига себе. У меня было похожее, только на экзамене по цифровой обработке сигналов.
Преподаватель видела, что я в принципе разбирался в теме, но переволновался. Попросила нарисовать какой-то график, нарисовал. Спросила, что больше: 1/4 или 1/2(1/4 у меня было больше). Тут до меня дошло, она посмеялась и поставила 4))
+1
Таких преподов обычно ненавидят. И правильно делаю, учитель должен мотивировать ученика, а не наоборот.
+3
А разве он его не мотивировал? Он признал, что ученик действительно с мозгами и шарит в предмете. Признание это и есть уважение. Какая хрен разница какая оценка? Если бы ученику нужен был бы красный диплом, он бы сказал «Ставьте два. Буду пересдавать» и проблемы в этом нет. Препод все сделал грамотно!
+6
Смотивировал? Чувака который знал его предмет на отлично поставил четыре без права пересдачи? На что он его смотивировал, из окна выйти? Это, вполне, если чувак интроверт, шел на красный диплом и т.п
+1
Нет понятия «Без права пересдачи». Вот ни одного случая не припомню, когда человеку реально запретили пересдавать. Вот ни одного! Чтобы не говорил преподаватель и какой бы ядовитой слюной он не брызгал, но пересдача будет, если студент этого хочет. Просто надо сидеть не в позе «Мне препод запретил, значит дело труба». А надо поднимать мягкое место и пробовать другие способы решения проблемы «Начну с похода к декану, может он поможет, а потом буду думать, что дальше».
0
Когда человек волнуется настолько что забывает где 1 а где 1.5, пересдача его не очень-то радует, и обучение через постоянное наказание не добавляет этой радости.
0
На отлично человек не знал.
Отлично — это знание, ставшее отсутствием ошибок. Причём неважны причины тут… хочешь пересдавать (говори, что оценка 4 без пересдачи тебя не устраивает) — готовься лучше, и пересдавай.
Без ошибок.
Если мне на заводе инженер напортачит, я что — буду смотреть на то, что он в принципе всё знает?..
Тут экзаменатор как раз поступил очень корректно.
0
хочешь пересдавать (говори, что оценка 4 без пересдачи тебя не устраивает) — готовься лучше, и пересдавай.

Здесь ничего не смущает?
+3
Ничего тут нет противоречащего. Потому что это уже организационный вопрос.
Я сам находился в таком качестве (причём и на месте сдающего, и принимающего).

Экзаменатор формирует очередь пересдачи (самому себе, как правило), и не хочет туда включать сдающего. Он уже оценил его уровень, и оценивает на 4-е (и я его понимаю). Сдающий понимает, знает предмет, но допускает ошибки, и довольно глупые. Успеет ли он до пересдачи справится с причинами, приведшими к ошибке? Не знаю, тут уже рядом сидеть нужно. Но там ещё за тобой народ, потому здесь и сейчас — 4-ка.
Уровень, условия включения на пересдачу «спускаются свыше». Деканатом, как правило. И эта очередь да, зависит от оценки. Ибо только её обычно и видит деканат в реестре. Если 4-шников включать в списки на пересдачу, будет уже беседа деканата с экзаменатором. С какого ты его на пересдачу-то?! У него же «хорошо».
Ибо время экзаменатора — принадлежит не ему.
Он должен обосновать требование пересдачи перед контролирующим органом (деканатом).
Но ученик может возразить.
Это его право.
Как правило, экзаменатор на требование «да не нужна мне 4-ка без пересдачи!» пожимает плечами, и ставит оценку, которая автоматом направляет на пересдачу (там, где я учился, хотя бы 3-ка нужна, чтобы не разбираться потом с деканатом).
Никаких проблем в 99,9999% случаев.
Потому что эта оценка до пересдачи уже ничего не значит.
Подготовишься на отлично — получишь отлично.
0
Сейчас есть такая штука, как ФЗ «Об образовании в Российской Федерации». Они подзаконные акты чётко говорят, что в случае «неуд'а» в течении календарного года есть право 2 раза пересдать экзамен. При этом финальная пересдача предполагает сдавать уже комиссии. Если оценка выше, то тут для пересдачи необходимо согласие преподавателя. В случае, когда он упрётся и не захочет принимать, то только тогда в дело может вступить зав.каф. или декан, чтобы или назначить другого, более лояльного преподавателя (ну или чтобы принять пересдачу самому). НО! Преподаватель формально может и не отказываться от пересдачи, чтобы собственноручно «похоронить» надежды студента на «отлично» в стиле: «я же говорил, что выше 4 ты не получишь». Хотя такое встречается реже.
0
Вы тоже из тех, у кого на отлично знает бог а на 4 препод? Или из тех, у которых железные нервы, а потому и у всех остальных должно быть?
Люди ошибаются, всегда и постоянно, и ничего ты с этим не поделаешь.
0
Если мне на заводе инженер напортачит

Если у вас на заводе инженера работают в постоянном стрессе сравнимым с экзаменами в ВУЗе, то у меня плохие новости для вашего бизнеса)
+1
Экзамены в ВУЗ-е вы считаете стрессом по сравнению с работой?!
Мило. За свою многолетнюю карьеру (пара стран + несколько предприятий) я такого сравнения не встречал. Работа (причём повседневная, не считая авралов) намного превосходит по требованиям психологической устойчивости такую простую штуку, как экзамен.
Собственно, именно потому за неё платят деньги.
За свой экзамен (его можно сравнить скорее с интеллектуальным удовольствием) — платите вы.
0
Работа работе рознь. Вам платят за устойчивость к стрессам. Кто-то (я в том числе) предпочитает получать деньги за квалифицированное решение задач бизнеса в комфортных условиях.
За свою многолетнюю карьеру (пара стран + несколько предприятий) я такого сравнения не встречал.

А у меня наоборот. Тоже много лет опыта, несколько стран (> двух), несколько компаний, разные сферы бизнеса и т.д. и т.п… Везде работа была комфортной и не стрессовой, хоть иногда и весьма интеллектуально сложной.
0
Я не говорил, что платят за стресс.
Я писал о требовании психологической устойчивости. Это сильно разные понятия.
Психологическая устойчивость — это готовность успешно справляться со стрессом, но не сам он.
Меня вообще удивляют эти высказывания, что на экзамене — стресс. Я к своим экзаменам в университете даже не готовился ни разу! И закончил с красным дипломом, кстати. Если вы учитесь, не спустя рукава, и учёба вам в радость, то экзамен — это просто один из способов пообщаться с экзаменатором, продемонстрировав ему (подтвердить) свои знания.
Что тут стрессового?
Я, конечно, понимаю, что может мне так повезло с университетом, но может, как раз если для вас экзамен — стресс, то вы не там, или не на того учитесь?..
А последующая работа — это уже ответственность.
И не перед собой, и вашей дальнейшей судьбой (не нужно переоценивать свою персону), а уже перед другими и за других.
Которой нет, не должно быть на экзамене.
Инженеры, которые у меня работают — отвечают за бизнес, большие деньги. Некоторые — за безопасность других людей.
Сравнивать это с экзаменом, где решается только твоя судьба (причём с возможностью пересдачи) — неадекватно, имхо.
0
А последующая работа — это уже ответственность.
И не перед собой, и вашей дальнейшей судьбой (не нужно переоценивать свою персону), а уже перед другими и за других.

Не поймут Вас, увы. Хотя написано-то все очень правильно. Хотя для меня экзамен все же был стрессом, толика эгоизма — это нормально :)
+1
Работа (причём повседневная, не считая авралов) намного превосходит по требованиям психологической устойчивости такую простую штуку, как экзамен

Интересно, кем же вы работаете?)
Я инженер-программист, мне моя работа приносить удовлетворение и не только материальное, а часто даже радость, когда получается красиво решить задачу. И уж конечно не приносит стресс.
Я просто уверен, что инженер в состоянии стресса, кроме костыля ничего не может придумать. И вообще, в моей профессии если ты довел дело до стресса (в большинстве случаев это банальный срыв сроков), то ты свою работу делаешь плохо.
+1
Я выше написал подробнее.
Я писал, ещё раз, о требовании психологической устойчивости, требуемое в работе в степени, несравнимой с такой простой вещью — как экзамен (если вы учитесь нормально, конечно).
Я тоже раньше был программистом, теперь архитектор, и руководитель проектов, но область в принципе понимаю.
Моя работа не стрессовая, но иногда, изредка — бывает такой.
И требования к психологической устойчивости (не сам стресс, но готовность справится с оным) тут определяет несравненно большее, чем то, что решается на экзамене.
0
Если брать ИТ сектор, то большинство вообще не испытывает стресса от работы, даже от срыва сроков. Даже шутка есть. Большинство проектов заканчиваются провалом. Большинство проектов превышает сроки и бюджет. Всегда остаются баги, которые находит клиент. После 5 лет в индустрии это понимает почти каждый и парится перестает совершенно.
На рабочих профессиях — все еще проще в плане отношения к результатам труда. Даже врачи в массе не переживают о качестве своего лечения и размере «персонального кладбища», конечно хорошие врачи — переживают.
Но если брать обобщение — то человек переживает в ключевых точках. Например в точке оценивания, как-то прием на работу или экзамен, или ожидание отзывы с прошлой работы. А между этих точек — фаза расслабления, «меня уже взяли, можно и расслабится».

Так-что вы не правы. Если для вас, напряжение от экзаменов было ниже, повседневного напряжения на работе — значит вы не предавали экзаменам важности, возможно и диплому в целом. А речь идет о людях, которым диплом важен, и оценка важна, они верят что это повлияет на их последующую жизнь. И стресс от экзамена — выше стресса от первого собеседования на очень желанную работу. Ведь работу можно и другую найти, а экзамен он один.
+1
Если для вас, напряжение от экзаменов было ниже, повседневного напряжения на работе — значит вы не предавали экзаменам важности, возможно и диплому в целом
Я не придавал в обучении важности оценкам, это так. Хотя по результатам обучения и был в череде лучших потока.
А после, некоторое время будучи преподавателем, понял окончательно, что оценка — это больше для учителя, а не ученика.
Не нужно путать, смешивать результат обучения, и его формализованную оценку.
Мне вообще, судя по обсуждению, как-то повезло, для меня университет был одной большой радостью, безо всякой примеси даже возможности стресса.
Последующая работа у меня также — не стресс (ну, изредка, но бывает и такое).
А всего лишь постоянная готовность к оному.
Ответственность. Перед другими, и за других.
Которой неоткуда взяться на экзамене, где ты — только сам за себя (если не считать третьими лицами родных, которым это тоже важно).
И тогда возникает закономерный вопрос — может, если для тех, у кого учёба (или экзамен) была стрессом — может у них как раз что-то неправильно было?..
0
За других говорить не могу, лишь за себя. Учеба мне была в кайф и работа то-же, как и вам. При этом стрессы бывали и в учебе и на работе, и готовность к ним так-же есть. Стресс и радость не противоречат друг другу, скорее даже они почти всегда ходят рядом с друг другом. Там где нет и намека на стресс обычно, все безразлично, возникает скука, и ни какой радости.

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

Тут скорее вопрос исключительно в моменте перехода от «беззаботного детства» к «ответственному взрослению». У вас этот переход случился на работе, на работе вы стали ощущать ответственность перед другими и за других. У меня он случился около 8го класса и я ходил и испытывал постоянный стресс от кучи негативных вариантов исходов моей жизни, думал о том кем я хочу быть, кем работать, и как при этом обеспечить будущую семью, и где жить, и стоит ли мигрировать или нет. Другими словами — нас (людей) напрягают ВОЗМОЖНЫЕ факапы (та самая готовность к стрессу). Но начинают они нас напрягать внезапно, в какой-то момент жизни. После этого момента, ты начинаешь «парится за все». И чем меньше остается «возможностей обосраться», тем меньше этих переживаний. Т.е. окончив нормально универ — перестаешь переживать что ты дебил. Женивщись — что ты не женишься. Родив детей — что забудешь их родить. И стресс с возрастом снижается, т.к. цена ошибки падает. В юношестве мне казалось что провалив первую сессию, я не смогу получить красный диплом, и моя жизни станет в 5 раз сложнее и не предсказуемей. Сейчас мне кажется что в случае провала проекта, я через неделю найду новую работу.

Ну или вы просто ощущали себя в безопасности от «плохого диплома». И такое бывает, например родители гарантируют помощь. Или есть примеры саксес стори с плохим дипломом, которые есть силы повторить. У меня не было ни того, ни другого.
0
Какие-то очень странные у вас причины для переживаний, мне их не понять.
0
А я понимаю и вас, и u010602 — у меня страхи были один-в-один, и, как ни странно, именно на них я и выехал в «люди», не спился, не с курился (всякими веществами). Мои же страхи дали мне силы осваивать абсолютно не знакомые мне области.
Уже позже это и переросло в «не люби себя таким, какой есть — сегодня лучше чем вчера, завтра лучше, чем сегодня».
Но и вас я так же прекрасно понимаю — у людей опыт разный (и это хорошо ведь).
+1
Экзамены в ВУЗ-е вы считаете стрессом по сравнению с работой?!
Это достаточно известный факт между прочим. Экзамены и собеседования — типовой сценарий в исследованиях поведения человека в стрессовой ситуации, это наиболее известные, легко воспроизводимые и универсальные ситуации. Ключевое слово здесь — универсальные. Практичес��и для любого человека экзамен — сильный стресс. Если лично для вас не так — значит вы либо сильно выделяетесь, что конечно возможно и я искренне за вас рад, либо не осознаете до конца что такое стресс. Я могу попытаться найти исследования на эту тему если интересно.
0
Знание «на отлично» предполагает отсутствие ошибок, тем более детских. А именно такая была насколько я понял, про вероятность равной 1,5.
Не очень верная аналогия, но если в боксёрском поединке спортсмен А победил спортсмена Б, то это означает, что спортсмен Б слабее. Даже если на тренировках он показывал отличные результаты и был всеобщим фаворитом.
0
Вот именно что неверная аналогия. Мы не про спорт, а про будущих инженеров. А им не обязательно в стрессовой ситуации рассказывать наизусть таблицу умножения. А то что человек знал предмет на отлично, прямо следует из обсуждаемого поста.
0
Давайте приведу другую. Выходит ученик рассказывать стишок и ни слова не произносит. Получает двойку. Приходят родители, мол как же так, дома он отлично рассказывал. Вполне вероятно, но что из этого следует? Что знание ученика настолько непрочное, что исчезает вне «тепличных условий», когда это знание нужно применить он не может этого сделать.
По мне реальная работа это бОльший стресс и напряжение нежели экзамен. И если даже на экзамене в голове пусто, образно говоря, то уж извините.
Да и знание таблицы умножения это не зубрёжка, а элементарные навыки счёта. В пределах 100, замечу. По мне странно, что то, что наши дедушки-бабушки-родители знали и успешно учили в 7 лет, вдруг оказывается недоступно выпускнику вуза (ну не верю я в истории про гениальных математиков/инженеров/программистов, которые не могут умножить 5 на 5).
Конкретно в этом случае… если на самом деле так сказал, мог быть 5 поставить, с минусом) Или другое задание дать.
0
Ммм… Люди некоторые в обморок на экзамене рухнуть от волнения могут. Если для вас работа больший стресс чем экзамен — скорее всего вы просто по каким то причинам не особо на экзамене волновались.
0
Не, ну кто-то и из окон прыгает не получив желаемую оценку, но таких, к счастью, мало.
0
По мне реальная работа это бОльший стресс

Меняйте работу, а то умрете молодым.
+5
А разве он его не мотивировал? Он признал, что ученик действительно с мозгами и шарит в предмете. Признание это и есть уважение.

Пфф, представьте руководителя обращающегося к вам: «работу ты проделал отличную, заказчик остался очень доволен, но премии в этом месяце мы тебя лишаем, потому что твой код плохо отформатирован».
Ну как, уже почувствовали всплеск мотивации?
+4

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

+1
А навыки переговоров у чувака есть? Навык «Уметь дать сдачи» всегда был полезным!
Если ко мне так руководитель подойдет, то уверяю, что у него возникнет желание извиниться передо мною.
0
А почему вы думаете, что навык переговоров исключительно приобретенный и не зависит от врожденных возможностей? Некоторым так-же сложно вести переговоры, как другим решать матан. Размышлять в стиле «вот слабак! я бы на его месте зарешал!» не продуктивно. Люди все разные, у всех есть слабости, не все слабости можно превозмочь, не все навыки можно приобрести. Некоторые навыки так-же сложно приобрести — как подрасти на 10 см усилием воли. И мы(как человечество) хотим создат�� условия комфортные для большинства, а не только для бетменов, что-бы каждый человек, не смотря на свои недостатки, могу ��аскрыть свои сильные стороны. Задачи выведения супер-солдата без недостатков — не стоит. Попытки были — можете почитать, чем они закончились.
-1
А почему вы думаете, что навык переговоров исключительно приобретенный и не зависит от врожденных возможностей?

Я ни слова не сказал о том, переговорный навык приобретенный или врожденный. Не надо говорить то, чего нет в словах других людей. ОК?

Да. Люди разные. Но мир такой какой он есть и надо либо играть по его правилам, либо сам виноват! Мы же не приходим в футбол и не говорим «А я вот хочу клюшкой играть».

Мне тоже, если что, даются переговоры в чем-либо и с кем-либо и как следствие из-за этого прокрастинурую над задачами, где надо переговорить. Но! Абсолютно не важно что у меня это врожденное или не своейственное мне иногда надо просто взять и сделать! И точка!
0
Иногда да, а иногда можно пойти и сделать хоккей с клюшкой. Итого, кто будет насмехаться над новым, не таким как все и тд — будут называть шовинистом. Современный мир борется с шовинизмом и пытается снизить важность навыка социализации. Сделать общение эмоционально проще и доступнее для некоторых людей. Вы же оправдываете преподавателя в стиле «молодец! проучил, показал что мир жестокое место!» А вы не думаете, может готовя детей к жестокости мира, мы делаем мир более жестоким, чем он может быть? Т.е. где грань между подготовкой, и созданием обиды на всю жизнь, которую потом человек будет выражать в агрессию над следующим поколением? Как с дедовщиной — есть части где она есть, а есть части где ее нет. И когда она есть, новый призыв пройдя через унижения, решает что потом они должны вернуть баланс, и унизить следующих. И это затягивает. Такие циклы бывают как продуктивные, так и нет. Уверен преподавателя то-же так кто-то проучил, и он решил нести это дальше в массы. Но насколько он успешен что-бы нести свои психоустановки в массы? Кто дал ему право, не только учить, но и воспитывать? Проф пригоден ли он для этого?

Мое мнение — нет. Воспитанием должны заниматься одни, а обучением — другие.
UFO landed and left these words here
0
А причем тут хамство?
Есть 2 типа руководителей:
1. Мудак. Который считает, что раз он\она начальник, то все должны слушаться и такие люди как правило живут по принципу «Есть мое мнение и неправильное». Но тут уже к работнику вопрос, нахера он себя так низко ценит работая под таким руководством
2. Адекватный. Это человек знающий что нужно бизнесу и как решаются задачи. Этот человек действует профессионально и свое мнение учитывает исключительно в рамках рабочего процесса.

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

Адекватный всегда поймет что к чему и извинится. Более того он подобной ситуации посторается недопустить. Максимумум что от таких людей можно услышать «Ты допустил ошибку. Она влечет за собою… Это выражается в потерю… рублей и возможностей… ». Если подобное слышишь в свой адрес, то обижаться не стоит. Не продуктивно
UFO landed and left these words here
0
Но надо учитывать, что есть ещё 10 промеждуточных стадий между м** и адекватным. А также принимать во внимание, что и адекватные иногда встатют не с той ноги, а м**** «по жинзи» может оказаться компетентным в конкретном вопросе по собиранию бычков и подробно объяснить свою позицию.
0
Если ошибка человека вылилась в потери и тд — то начальнику стоит бить себя в лоб. Ибо выстраивание процессов так, чтобы ошибка одного человека не рушила бизнес — его прямая обязанность.
0
четверку без права пересдачи»

Если бы ученику нужен был бы красный диплом, он бы сказал «Ставьте два. Буду пересдавать»

?!
Вроде, только в МедВУЗе невозможно получить Красный Диплом имея хоть одну пятёрку.
Кроме того, студент идущий на красный диплом, где-то на пятом курсе, может пересдать несколько предметов улучшив по ним оценки.
+2

За что ненавидить? Глупые обиды какие-то.
Преподаватели разными способами (наводящими вопросами и др.) подсказывает, но так получилось что это не помогло. В результате человек получил 4, но навсегда запомнил.
В системе тестирования или у другого преподавателя, нет решения = нет положительного результата, на пересдачу. Так лучше?

+1
Вспоминается история с израильским F-16 перевернувшимся при полёте над Мёртвым морем из-за того, что высота стала отрицательной.
Должно быть, писавший эту авионику тоже психовал, из-за распухшего ЧСВ, когда ему указывали на совершённые ошибки.
0
Я бы психанул не из-за ошибки, ошибки нужно исправлять. Здесь же в истории было явное наказание «без права пересдачи». Вопрос в стиле «что мне теперь ставить вам 4?» вызвал бы у меня достаточно стресса, что-бы я это запомнил на всю жизнь. Я считаю поступок преподавателя — чрезмерно жестоким.

А относительно ЧСВ и Ф-16 — если система создания ПО уязвима к ЧСП одного из членов команды — то она явно подобрана не правильно. Там где от софта зависят жизни людей — там человеческий фактор должен быть сведен к минимуму.
0
В ВУЗ-е не бывает оценок «без права пересдачи», при желании можно оспорить любую оценку.
+1
В мою бытность, этого ни кто не знал, пересдать можно было только 2.
0
Программисты не пишут авионику в одно лицо… Хотя я недолго в этой сфере проработал, но у нас шансов налажать практически не было. Программисты всего лишь реализовывали логику, очень подробно описанную инженерами, причем все разбито на мелкие модули. А потом другие люди покрывали каждый модуль юнит-тестами на 100%. В таком проекте один псих ничего не поломает.
+1
Так никакой проблемы — просишь 2 и на пересдачу. Или потом требуешь пересдачи у другого/комиссии.
Тут другое — человек не знал на твердую 5, а зыбкая 5 из рук ускользнула.
+4
Оценка — это мера знаний ученика, а не понтов преподавателя. Если препод уверен, что его ученик знает предмет на отлично, он должен ставить отлично. Что дала эта четверка ученику? Он на всю жизнь запомнил что 2*2=4, он это и так знал. Что у другого преподавателя из-за особенностей своей памяти, он тоже может столкнуться с тем же, не факт, другой преподаватель может быть более вменяем.

А какой урок это ему дало для реальной жизни? Что любой самодур может ему испортить жизнь только потому, что он не умеет завязывать галстук?) Тут есть здравое зерно. Но такой опыт он может получить от кого угодно. Преподаватели, а тем более в ВУЗах должны учить своих учеников чему-то все-таки большему, не так ли?
+7
А какой урок это ему дало для реальной жизни?

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

+1
Советую почитать (всем лайкнувшим в т.ч.) про «право на ошибку» и его влияние на не зрелую психику, тема хорошо изученная. Если коротко — сильно жесткое наказание за ошибки убивает желание вообще что-либо делать. Получаем на выходе человека без амбиций.
+1
Я решительно не понимаю с какого перепуга оценка 4 — сильно жесткое наказание за ошибку.
+2
А это когда родители за четверку наказывают хуже, чем за убийство. Сталкивался я с такими людьми — могут и суицид из-за четверки сделать.
0
И такое бывает, но я не из тех, ни когда за оценки не ругали, и в школе полно четверок имел.
0
С тех пор как 5 стало наградой. За нею гонятся, и обижаются если ее не получают.
Интересно, а не ломает ли психику, факт, что в послешкольной жизни твои оценки никому не нужны?
-1
Советую почитать (всем лайкнувшим в т.ч.) про «право на ошибку» и его влияние на не зрелую психику, тема хорошо изученная.

Человек — студент, какая незрелая психика? Хватит уже этого инфантилизма. Он к реальной работе готовится, к ответственности, а не в детский сад пришел.

+1
Скажу лично за себя — в моем окружении (и я сам) — лет до 20 никто не знал кто что и зачем будет в будущем делать. А в вузы все поступали просто от армии откосить в основном, так как ни проф. ориентации, ни мозгов своих ни у кого не было.
0
Так то я до сих пор, в 26, по течению плыву и только год назад начал трепыхаться и по сторонам смотреть)) Так что возможно я просто еще не способен оценить полноценно)
0
Лол, я на год старше, и как раз где-то пару лет назад начал переставать понимать, что делать дальше.
0
Коллега, позвольте пожать вашу мужественную руку. Мне 30.8 и… аналогично.
0
Сколько вам лет?
Я в начале 90-х поступал уже зная кем я хочу стать и чем заниматься по окончании ВУЗа.
0
Я в начале 90-х поступал уже зная кем я хочу стать и чем заниматься по окончании ВУЗа.


Из моих знакомых те, кто работает по первой вышке — исключения.

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

Ну так и следовало бы их всех отчислить.

0
Человек зреет после 30. Задолго после первой работы, первой жены и первого ребенка. А студенты — дети. Хотя конечно это так не воспринимается — когда тебе меньше 30, а уж тем более меньше 25. Мои дети в 3 года уже говорят что они взрослые :)
0
Человек зреет после 30.

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

И в те времена это не было особо удивительным (удивительным является только степень распространенности его учения и как оно прошло через тысячелетия). Мужчина тогда считался мужчиной в 15.

А современные люди — какое там учение, они, оказывается, после 30 дозревают еще (как вино, что ли)

P.S.:
А если серьезно — то да, современные люди более инфантильны (можно почитать про особенности поколения Y).

Но раз на раз не приходится. Всех грести под одну гребенку — некорректно.

У меня есть знакомые: одна уехала из родительского дома в 15 лет учиться и с тех пор живет самостоятельно, обеспечивает родителей; другая уехала в 18 и родители вообще не помогали и не помогают (у них конфликт), моталась по съемным квартирам, как-то зарабатывала сама; другая в 40 лет сидит на шее у родителей, не работала и не работает (здорова, с вышкой), полагаю, и не будет (родители не олигархи, обычные).

+1
И вот уже 2 тысячи лет вся европа расплачивается за его незрелые действия)
+2
По поводу Христа есть стандартный ответ что Илья Муромец в 33 впервые с печи поднялся.
А так — как-то несерьезно сравнивать чисто биологическое взросление из древности (мужчина и сейчас в 15 может и детей заделать, и по физическим габаритам не кардинально отличается от взрослого) и более сложное социальное и профессиональное взросление. Вроде как Моцарт прославившийся еще подростком как композитор и тогда считался гением и скорее исключением, чем правилом, а в основном реального профессионально зрелыми люди и тогда становились после 20 (учебу никто не отменял же), думаю, часто сильно после.
+1
Зрение зрению рознь. Самостоятельность — не зрелость. Один из факторов — но не единственный. Еще например эмоциональная стабильность. Эти ваши зрелые того времени воевали, убивали и изменяли. Да так часто — что им нужен был злостный бог карающий то за онанизм, то за злые мысли.

А если вы не хотите грести под одну гребенку — зачем вы идете за дипломом государственного образца? Ведь это фактически и есть гребенка, учащийся ее добровольно выбрал, а потом начинается «я особенный». Особенный — не иди в универ, сам себе диплом выпиши, какие проблемы :)
0
Человек зреет после 30. Задолго после первой работы, первой жены и первого ребенка. А студенты — дети.

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

0
Он и учится. В том числе на работе. Благо что люди умеют слушаться более опытных товарищей и благо что есть полно работы не требующей особой ответственности.
+1
Ну почему любой, вон на ракете «Протон» кто-то поставил датчик вверх ногами… а, ну да…
0
Ну как бы это оценка не только знаний ученика, но и способности их применять. Вот в конкретном случае ученик не смог, не важно, от волнения, просто запамятовал, а другой смог. Им обоим ставить отлично? Но они же на разном уровне справились с задачей.
0
Ну так и система оценивания не 1000 бальная, и оценку ставят не за «выполнение задания», задача экзамена выявить итоговый уровень знаний и умений ученика в конце курса. На лабораторке вполне нормально ставить 4 за такую ошибку. А экзамен это инструмент преподавателя, похожий на собеседование. Задача преподавателя разделить учеников на 5 категорий. Каждая категория детально описана в рекомендациях министерства образования, ведь диплом у нас государственного образца, а не образца «Ивана Федоровича»?
Конечно каждый ученик — личность и выполняет задание не как другой. И вы могли-бы подумать что 5 это 100% идеальное знание предмета в стиле Бетмена, но это не так. 5 это примерно 80% и более усвоения материалов и навыков.
На практике обычно 5 обозначает — «ученик понял суть предмета и его принципы», а не стал матерым специализстом за пол года с набитой рукой. Например на вопрос «чем прямое преобразование Фурье отличается от обратного», отличник ответит «Прямое преобразует сигнал в спектр, а обратное по спектру восстанавливает сигнал.» А хорошист начнет цитировать определение сначала первого, потом второго. Т.е. хорошист запомнил, выполнил все что нужно было, но ни чего не понял, «вы хотели чтоб я это знал — я знаю». А троечник как хорошист, но не смог все запомнить. НО это грубо и мое мнение, министерство расписывает лучше.
0
хорошист запомнил, выполнил все что нужно было, но ни чего не понял
Честно говоря на мой взгляд это какой-то мутный хорошист. Но таки да, это тоже мое, вполне вероятно неверное мнение. Я действительно считаю что 5 — это прям как Бетмен. Просто на мой взгляд сейчас оценки в целом воспринимаются слегка странно. Что-то типа двойка это не «плохо», а просто отсутствие знаний, тройка — ну где то-там что-то есть, четверка — половину материала выучил. Все остальное — пять. На мой вкус при этом пятерка несколько обесценивается. Хотя конечно все зависит от конкретных мест, и это также мое субъективное мнение.
-1
Конечно обесценивается, но так и мотивация учащихся падает и их способности. 5 это значит — годный студент фактически, интересуется предметом, интересуется учебой. Если у человека 4 и 5 в дипломе — то он нормальный и адекватный, можно брать. Если везде одни 4 — ну значит он прилежный болван, делает что говорят, в суть не вникает. Если значительное количество 3 по профильным предметам и при этом есть и 5 и 4, значит эмоционально не стабильный, не дисциплинированный и своенравный. Может работать шикарно месяц, потом месяц бухать или прокрастинировать. А через год пошлет всех матом, скажет у вас технологии скучные\не правильные — я ушел.

Те кто хотят найти юного Бетмена — те смотрят на вне дипломные титулы, всякие участия в олимпиадах, хакатонах и прочем. Задача обычного образования — давать обычных специалистов, не брильянты и не Бетмены, просто обычных нормальных инженеров.
Посему для меня 4 — это как плевок в лицо и факт профнепригодности. Осилить элементарную программу стандартного государственного курса — не сложно. И т.к. я учился по собственному желанию, сам выбирал направление и ВУЗ — для меня было очень важно пройти обучение полноценно. Т.е. если получил 4 — значит предмета не понял, недоработал, упустил время и шанс. И ни когда не нагонишь, потому что статистически маловероятно, что ты будешь получать второе образование по тому-же профилю или повторно посещать тот-же курс.

А насчет 2 — ну в университете это значит что ты идешь в армию. А вот 3 — это считает нормальная оценка для «стоящих в очереди за дипломом». Посему получить 3 это ваще жутко стыдно для меня, это как напиться по молодости и попасть в таком состоянии в телевизор, и потом всю жизнь тебя будет так вспоминать при каждом трудоустройстве (при условии что диплом смотрят).

Кстати в локальных контора — на дипломы у нас смотрят и на ту его часть где есть оценки. Но только у молодых специалистов, потому уже опыт, портфолио и так далее. А вот первые несколько лет — банально больше не почем судить человека. Даже если он отлично прошел собеседование и написал тестовое — это не полное покрытие важных качеств личности. Нужно же понимать насколько он стабилен. Проработает ли он год или месяц или пока ты его не уволишь? Будет ли он легко осваивать новые технологии или будет жестко навязывать привычные себе и сопротивляться всему остальному?

Из рассказов про иностранные ВУЗы — там важность оценок намного выше. Там получается соревновательный принцип везде. Т.е. программа не фиксированная, есть разные преподаватели по каждому предмету, и разные предметы на выбор. И если ты хочешь попасть к лучшим преподам и на самые интересные курсы — у тебя должен быть высоких бал за прошлый семестр. В итоге если отличник и старается — то он реально учился в Гарварде, а если троечник, то ходя в тот же Гарвард — учился у всяких аспирантов, и ни чем не лучше «местного колледжа».

Если брать всякие курсы и сертификаты — то там два состояния — сдал или не сдал, дали или не дали. Фактически 2 и 5. А что такое 4? Пол сертификата? Полу специалист?

Если брать политику бесплатного и платного образования. Если у тебя бал 4.75 и выше — тебя госво поощряет гривной. Если у тебя бал 4 и выше — то ты имеешь право получить образование бесплатно. А если ниже 4 — это значит что фактически государство считает что с тебя не будет ни какого толку, ты бесполезно тратишь свое время на этой специальности, но ты имеешь право — плати деньги и ходи. Вопрос насколько этично продавать дипломы, а выдавать дипломы тем у кого средний бал даже 4.0 — это фактически продать бумажку, «не специалисту», которому это дело не интересно и который знаний не имеет. Я считаю — не этично, кто-то считает что это либерально и финансово выгодно, троечники — содержат отличников.
+1
Столько писанины про бумажку, которую забудут спросить при опыте в пару лет. Хотя вот меня забыли спросить даже когда я устраивался начинающим.
0
+1, на первом, оно же текущее, месте работы вкладыш с оценками вообще не спрашивали. Больше того, я его даже не забирал. Хотя признаюсь честно — там, особенно на первых курсах когда связался с «плохой» компанией да и не было своего компьютера (а соответственно и навыков использования как и знаний в профильных дисциплинах), просто куча трояков. Самый обидный по какой то математике, предмет знал и спокойно мог сдать на отлично, благо математику всегда любил, но из за просроченного курсача по экономике удалось попасть только на пересдачу где мне и еще одному гаврику поставили трояки за то что помогли жалюзи повесить. И да, это даже по меркам моего города был далеко не самый топовый вуз)
0
Я показывал один раз, когда устраивался на завод, но там брали всех подряд. После этого работал только программистом, а диплом вообще по другой специальности, поэтому не показывал его больше никому.
+1
5 это значит — годный студент фактически, интересуется предметом, интересуется учебой.

На практике у каждого преподавателя свое мнение о семантике оценок и его надо просто принимать. У меня например у преподавателя по матану было мнение из разряда канонического "на 5 знает господь бог, на 4 — я, а вы — на все остальное", с-но иногда никто из потока не мог сдать с первого раза хотя бы на 3 :)

0
Бывает, и это плохо. Есть стандарт и ему нужно соответствовать и ученику и преподавателю. Если преподаватель хочет, он может открыть свой «кружок» и унижать там учеников, за их деньги.

0xd34df00d Единичные оценки — не важны для анализа. По ним систему не построишь. Не вы первый, не вы последний, вступивший в конфликт с преподом. Думаю все это понимают.

ApeCoder я вроде так и написал. Оценивать нужно не знание фактов, и преподы оценивают не знание фактов. На одном экзамене у меня было вообще так. Я пришел тянуть билет, препод взял методичку(которую я не видел до этого), открыл на рандомной странице, показал схему ака ПИД регулятор, но звеньев было больше. Тыкнул в один из них и спрашивает — зачем он здесь. Я ответил буквально в 7 слов — получил 5 и ушел. Хотя мне рассказывали что он жутко валит и так далее. На самом деле ему было плевать на точность заученных определений, а «большинство» этого не понимало. Они старались вызубрить как можно точнее.
0
Это даже более гранулярно.

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

ЧСХ оно так только на линале матричном анализе, на матане он не фачит.
0

У меня у единственного на факультете трояк по многопроцессному программированию у препода, у которого трояк невозможно получить (ниже хора не ставит), и я обстоятельствами получения этого трояка даже немножко горжусь. Ну и притом, что писать многопроцессорно я немножко умею.

0
Т.е. если получил 4 — значит предмета не понял, недоработал, упустил время и шанс. И ни когда не нагонишь, потому что статистически маловероятно, что ты будешь получать второе образование по тому-же профилю или повторно посещать тот-же курс.

Это подразумевает, что оцениваетя именно понимание, а не знание кучи фактов, и информацию можно получить только прослушав какой-то курс в университете.

0
Им обоим ставить отлично?

Именно так, если преподаватель уверен что и тот и другой знают предмет на отлично. А это у нас в «Дано». А если вдруг препод засомневался, просто посадил бы «затупившего»на 5-10 минут собраться с мыслями. Тот бы успокоился и ответил, или не ответил если он действительно не знает. Вот и все.
+3
Вот смотивировал, в сложных расчётах не забывать, что 1/2 больше 1/4. В физике народ вот постоянно палиться на том, что результат в 10 раз больше или меньше. Казалось бы небольшая ошибка, а на самом деле можно такой расчёт отправить в помойку, если он на порядок расходится. И рассчитать «на глазок» с ошибкой 10-20%.
0
Интересно, что мотивировать должен учитель, а говорите вы таки о преподавателях.

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

В российском-то, т.е. сразу после школы? Ну-ну.
0
Ну так «в абстрактном российском вузе» и «в Физтехе» — это две очень большие разницы.
+1
Личность становится зрелой — пожив жизнь. Пройдя определенные этапы, и семейные и бытовые и рабочие. Т.е. это тупо зависит от времени жизни. И не нужно путать интеллект и самоконтроль — со зрелостью личности. Личность становится зрелой примерно к тому времени, когда разрешено баллотироваться на президента. И то не всегда! Яркий пример очень одаренного, но не зрелого, человека показан в фильме «Good Will Hunting», и там как раз аналог Физтеха.
-1
Это да. Бывает.

Я когда 18 лет назад писал «олимпиадную» как бы предварительно вступительную работу по математике в МГУ решил 5 задач из 6ти.
В одной чуток налажал. Сложная стереометрия, я рассмотрел 3 случая из 4х. 4ый вырожден, но я не написал об этом. Ок. Минус.

Но другая задача… До сих пор обидно. Две страницы вычислений и в конце:
… = 8+6 = 10
Ответ: 10

И минус за задачу. 3 за работу — не прошел. Правильный ответ был 14.
Так что пришлось поступать летом.

PS. Еще. Более эпичесский фейл. Сдавал ГосЭкзамен. Где то в ходе одного доп. вопроса нарисовал касательную и доответил на вопрос. А экзаменатор такой: «Ну, хорошо. Это вы знаете. Давайте напоследок выведете мне уравнение касательной и закончим на этом.».
Я такой радостный — 5 за Гос уже у меня, что там эта касательная, я ее в 10 классе мог вывести. И… ступор. Не выводится. Так порисовал — не выводится.
Эдак попробовал — фигня получается(я ж помню формулу!).
Результат — 4 по госу из-за этой касательной. Вышел — все вывелось устно.
0
На самом деле сейчас в наших вузах активизировалась дискуссия против устных экзаменов, как раз примерно по таким причинам.
0
Нда.
Очевидно, продолжая логику — надо отменить письменные из-за моего первого случая…
+1
Экзамены вообще нужно отменить, а то получит бедный студент с неокрепшей психикой (24 года всего — жизни ведь не повидал еще совсем) оценку 4, а не 5 и совершит роскомнадзор.
0
Сейчас в МГУ арифметические ошибки трактуются в пользу абитуриента.
Сейчас такое было бы плюсом с точкой.
0
Да? Даже на МехМат\физмат\ВМиК?
Даже не знаю как к этому относиться.

Хотя… если одновременно усложнить задачи, то думаю и норм.
+1
А зачем делать из студента калькулятор? Ладно, на физических факультетах это может и важно, но на математическом уже в первый месяц начинаются темы где арифметика в принципе практически не нужна и чем дальше, тем больше. У нас на матмехе в СПбГУ большинство преподов арифметические ошибки замечало, но на оценку они не влияли в 99 случаях из 100. Это даже не было поводом задать доп вопрос, разве что студента потролить, да и то не всегда.
+3

Не все можно вывести. А забывать могут все, причем понимание есть, а слов нет судя и по случаю с Савватеевым. Это нормально.

+4
А если он забывает аксиоматику, то какой он тогда математик?

Ну, аксиоматик много разных, математика — это не про заучивание аксиоматик.

Хотя формулу нахождения корней действительно стоит уметь выводить.
+2
А теперь представь, что времени вывести и доказать нет. И д.ф.-м.н выглядит профаном
+1
Я в лекциях Савватеева наблюдал момент, когда по ходу лекции он забыл формулу нахождения корней квадратного уравнения (а это д.ф.-м.н. между прочим). Он слегка смутился, но тут же ее вывел и доказал.


Я вы часом не помните название? Может, сохранили ссылку, буду весьма признателен.
+1

На самом деле пример не совсем честный, т.к. вывод формулы корней квадратного уравнения — не какой-то особый, это техника, которая очень много где применяется. Если бы вопрос был какой-то специфичный, он бы вполне мог и залипнуть. Например, я сомневаюсь, что можно так быстро оп! и вывести формулы Кардано, если их не помнить или не помнить соответствующую базу (например прям как раз недельку назад теорию Галуа повторил, кек).

0
Я этим примером лишь проиллюстрировал, что незнание некоторых фактов компенсируется знанием некоторых принципов. Но, если ты не знаешь принципов в той области, в которой как бы сеньор, то тут уже ничто не поможет. Конечно судить о человеке по одному неверному ответу минимум глупо. Но. Я сам довольно много собеседовал людей, приходящих на сеньорские позиции, с огромным стажем (судя по резюме), но при этом не способных внятно ответить на базовые вопросы, которые должен знать любой джун. Может все дело в перегретом рынке предложений и завышенной самооценке отдельных представителей профессии?
+2
Есть вероятность что данный сеньор уже давно не трогал вещи которые должен знать тот же джун на зубок. Например когда ты поставленные задачи решаешь уже на автомате и в принципе уже не задумываешься о способе решения, т.к. у тебя уже наработанная практика и все ушло на уровень рефлексов. А тут на собеседовании ты включаешь голову (у тебя же стресс) и у рефлексы благополучно задавливаются.
+2
Кмк, перед собеседованием можно было бы и потрогать. В конце концов, уж если цель продать свое время подороже (в хорошем смысле), то уж товар надо представить как можно лучше. В самом начале у меня тоже были мягкие фильтры, но, когда я стал терять по полдня на разные собеседования «сеньоров», фильтры ужесточились практически автоматом — сперва ответы на листочке и, если порог пройден, то личная беседа.
(offtop 25 минут на редактирование комментария; видно я что-то пропустил, но это круто).
0
Для формулы кардано не нужна теория Галуа. В Википедии вывод достаточно простой и специфических знаний не требует. Но просто так без подготовки вывести, да, трудно.
+1
Для формулы кардано не нужна теория Галуа.

Не нужна, но если вы накануне повторяли теорию Галуа, то, скорее всего, сможете сами получить вывод формул Кардано, не зная его наперед.


В Википедии вывод достаточно простой и специфических знаний не требует.

Открытие сейфа тоже не требует специфических знаний — это ведь не сложно, влево-вправо крутить :)


Смысл в том что в случае формул Кардано вывод не строится на использовании каких-то известных и общеприменимых методов, он выглядит как: "сделаем хитрое преобразование, потом еще одно, потом хитрую замену, и еще хитрое преобразования — и получим формулу!".
И вот эти преобразования взять неоткуда, они не являются типовыми. Именно по этой причине они и появились на несколько тысяч лет позже, чем формулы для квадратных :)

0
Да, приходиться хитрые преобразования применять. Но до методов Галуа дошли ещё позже, они намного сложнее и использовать их для формулы Кардано, что как вызывать экскаватор для копания ямы в огороде.
-1
Да, приходиться хитрые преобразования применять.

лучше бы нехитрые методики для правильного написания окончаний «тся» и «ться» применяли
0
Это не окончания. "-тся" — это обрезок окончания и суффикс, "-ться" — два суффикса. Исключаю вас из рыцарей ордена Дитмара Эльяшевича.
0
Но как математик ты можешь например сходу не ответить сколько существует суръекций между множествами. Я думаю подобных вопросов можно много накидать.
0
Или там арифметика кардиналов-ординалов, сколько будет омега в степени омега умножить на омега там, например.
+1
Да, похоже учителем математики в школу Савватеева бы после такого не взяли.
UFO landed and left these words here
+1
на небольшое время «забыть»

Я не очень представляю, как Senior JS разработчик может забыть, что такое замыкание)
+3
А какие проблемы грамотно пользоваться инструментом, но не знать назубок его академического определения?

По себе сужу, у меня опыта в программировании больше 20 лет и, но скажем, над определением переменной я вполне могу задуматься. А дальше зависит от того, чего хочет собеседующий, если его устроит объяснение на пальцах расскажу, в этот момент может всплыть какое нибудь определение которое я на заре карьеры мельком прочитал, если же вопрошающий явно пытается меня на чём то подловить… диалога не получится.
+1
«Академическое определение» требуют примерно нигде (ибо канона нет, какой такой букварь цитировать?), но если человек на понятийном уровне не может слов подобрать и ему требуется лезть в какие-то там чертоги сознания (гугол), чтобы вспомнить достаточно активно используемые фичи языка — это дурной знак. Дутых сеньоров в наше время тоже достаточно.
0
Я бы сказал, при прочих равных, это слабый знак, если человек решил тестовое задание, ответил на много вопросов, и слился на одном, этот вопрос не должен быть последним.

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

Опять вы впадаете в крайность. Зачем?
0
Если человек решил тестовое задание без наблюдения и слился на элементарном вопросе, то с высокой вероятностью его делал кто-то другой. Весомая причина дальше испытывать собеседуемого на других базовых вопросах.

И хватает людей разной степени нелюдимости, которые просто решают поставленные задачи.

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

С таким не сталкивался. Впрочем, есть же испытательный срок, и по крайней мере у нас решение о найме принимается коллегиально.

Есть разница между выполнением задач и выполнением их в хорошем качестве.

Разница есть, по моему скромному опыту, выполнение задач в хорошем качестве и то, насколько хорошо у человека подвешен язык коррелирует слабо. Может конечно, нужно джедаем найма быть, но по мне проверить человека «в бою» надёжнее.
+3
есть же испытательный срок

А если у вас уже есть на примете несколько человек без таких сомнительных историй? Нельзя всех взять вне штата, а потом устраивать чемпионат на вылетание.

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

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

В комментарии ниже этот момент затронул.

Если у человека есть знания, но нет возможности это выразить, то как он с командой общаться будет? С заказчиком?

Вопервых сам человек привыкает, потом команда тоже к человеку привыкает. Заказчик, конечно, не виноват, но это вопрос уже к руководству фирмы, а не к работнику.

А если кандидат говорливый, то проверить его как раз проще. Хорошие говоруны, кмк, проходят из-за недостатков интервьюера.

Мой хороший друг в таких случаях обычно отвечает, что все мы немного лошади. В том смысле, что никто не идеален.

Можно спорить о подходах к интервью. Думаю что подход, когда человека на интервью спецом заваливают, имеет право на жизнь. Например при найме в какой нибудь отдел продаж. В случае с программистами работающими с прикладными задачами, думаю он не тех людей пропустит.
0
Может конечно, нужно джедаем найма быть, но по мне проверить человека «в бою» надёжнее.

Надёжнее, но намного дороже в случае его неуспеха.

А дальше каждая компания для себя решает, какую цену она готова доплатить за сокращение false negatives при найме.
0
У меня, конечно, есть лукавство. Если есть два кандидата, которые в целом одинаково проходят интервью, то быстрый из развёрнутый ответ на такой вопрос прибавит ответившему баллов. Но именно прибавит тому кто ответил, а убавит баллов у второго.

Разница между прибавит и убавит существенная. Т.к. при очередном раунде найма, мы второго пригласим.
0
Может кандидат просто быстрее соображает? Уж убавить ему это никак не должно.
А если интервьюер позволяет оценкам одного человека влиять на другого — это его трудности в профессии. Это тоже непростой скилл, которым нужно уметь владеть.
0
Вижу у меня «не» потерялось. Предложение должно звучать так:
Но именно прибавит тому кто ответил, а не убавит баллов у второго.


А если интервьюер позволяет оценкам одного человека влиять на другого — это его трудности в профессии. Это тоже непростой скилл, которым нужно уметь владеть.

А тут мы упираемся в эффект Даннинга — Крюгера. Особенно если проведение интервью это не основная работа, а то, что приходится делать время от времени.

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

Зачем вы говорите об академическом определении? Зачем вы возводите в абсолют мои слова? Я нигде не говорил об определении. Я говорил вообще о понятии. Вы можете представить, что человек забыл, что такое переменная? Не забыл ее определение, а вообще забыл, что такое переменная. Вы ему говорите слово «переменная», а он смотрит на вас как баран на новые ворота и для него это совершенно новое слово
-1
Значит я вас не так понял. Вы же допускаете, что тот, кого вы собеседуете тоже может вас не так понять?

> а он смотрит на вас как баран на новые ворота и для него это совершенно новое слово
Например он недавно из института и привык к преподавателям, которые требуют определение в соответствии «с тем самым учебником».

Вопрос в дальнейшей реакции вас, как интервьюера.
0
Например он недавно из института...

… и собеседуется на сеньора? :-)

+2
Моя история, кстати.

И да, мне было немножечко грустно, когда у меня всё CV в гитхабе и прошлых местах работы лет на 9 с десятком разных проектов, от самописной in-memory-БД для геокодинга до всякого natural language processing и коллаборативной фильтрации, а меня спрашивают определение R-squared и почему конструктор не может быть виртуальным.
-3
Например, у него проблемы с электропроводкой в квартире, и он весь вечер перед собеседованием пытался разобраться, почему выключатель не работает. Скажут ему «замыкание», и он будет вспоминать, что же там такого есть в JavaScript, что можно сравнить с неправильным соединением проводов.
0
<зануда мод>Ну почему же сразу неправильным? В замыкании проводов как таковом ничего неправильного нет — это нормальная практика. А в словосочетании «короткое замыкание» про «неправильность» та часть, которая «короткое»</зануда мод>
+2

Несогласным хочу напомнить, что влияние контекста достаточно известная вещь в психологии, а человеческое мышление работает на ассоциациях, и без соответствующих ассоциаций можно не сразу вспомнить то, что нужно.
А Senior мог на предыдущей работе называть это исключительно словом "closure", и потому в данный момент слово "замыкание" у него ассоциируется в первую очередь с электричеством, и он может замяться на какое-то время, вспоминая правильное значение.

+6
Я с 1991 года программирую, я не могу себе представить ситуации, чтобы я не смог сказать, что такое замыкание. Ну или virtual (хотя я уже лет десять не писал на языках, где это есть). Я допускаю, что могут быть случаи разные, но это такая дикая редкость, что шанс с такой ситуацией столкнуться мизерно мал.
+5

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

0
Был во второй категории, но сейчас скорее в средней. Просто понял что неправильно запоминал все это. Хотя может все эти замыкания и прочие термины запоминаются потому что выглядят интересно и часто мелькают в описаниях технологий/статьях?
0

Возможно были во второй, возможно не были. Чтобы понять нужен опыт, если вы сегодня можете выучить стих наизусть за час а завтра только помнить о чём он в общих чертах, то это одно, если вы не помните его один раз прочитав — это другое.
p.s. у меня ребёнок пример фантастической (по моим меркам) памяти, ему один-два раза читаешь стих на пару страниц, и он без проблем его рассказывает через день :)

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

Для меня вы из категории не понимающих как такое возможно.
Уточню, когда вам говорят а расскажите про "название" вы просто не помните про что оно :)
p.s. и да уточнить не проблема, проблема в том что вторая сторона делает однозначный вывод руководствуясь своим опытом и верой в то что если не может сходу ответить то не знает.

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

А вы, как первая сторона, на чем основывались, делая этот вывод?
0

В том числе на общении с теми кто ищет людей, у меня в принципе очень мало собеседований было(не любитель менять место работы) но подобный способ оценки людей иногда встречаю и в других ситуациях.

0
Уточню, когда вам говорят а расскажите про «название» вы просто не помните про что оно :)


Тут нюанс же есть, в направлении вопроса. Спрашивают же не «как называется вот эта красная лопата по-научному», а «как выглядит пожарная лопата».

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

А во втором варианте… Кхм, это не «подзабыл слово», а просто «не может с ходу вспомнить, как оно выглядит». Вот это тревожный звоночек же.

Как бы, вспомните правильный термин, подходящий под определение — это да, вопросы не для собеседования, а, скорее, для кроссворда. А вот «объясните термин» — вроде, норм.
0
Со школы была главная проблема в геометрии и стереометрии: вспомнить по названию текст конкретной теоремы (собственно только это шпоры и содержали).
Проблемы доказать теорему — не стояло, даже не запоминал варианты из учебников, поэтому постоянно доказывал чуть по-своему.
А по факту решал практику быстрее и правильнее всех. Зато они могли определение наизусть сразу рассказать…
Вот в статье ровно об этом же… «Объясните термин», а про что он? Ведь все термины и слова в мире имеют исключительно одно значение и не объясняются парой параграфов на кучу разных случаев. А все толковые словари примерно так наполняются: «Стол — это стол».
Это совсем не значит автоматом, что в практике эти задачи не решались сотни раз успешно и там какие-то проблемы есть у человека, вот вообще
-2
p.s. у меня ребёнок пример фантастической (по моим меркам) памяти, ему один-два раза читаешь стих на пару страниц, и он без проблем его рассказывает через день :)

вы уверены что он его не запомнил по первым строчкам и не нагуглил в итоге, чтобы выучить?
0
А зачем запоминать определения дословно? При наличии понимания о чем речь определение можно сочинить на ходу используя ту самую логику в которой есть преимущество.
+4
Глупо отрицать что существуют интервьюэры пытающиеся почесать свое ЧСВ на собеседованиях. Но надо помнить что собеседование процесс двухсторонний. Если вы видите что компания вам не подходит, скажите спасибо, за то что они об этом честно рассказали и двигайтесь дальше. Хуже когда на собеседовании врут про то что будет скрам и передовые технологии, а после выхода на работу оказывается что везде code-and-fix на фреймворке который уже вышел из поддержки, но для этого и дален испытательный срок. Он, как и собеседование, тоже работает в обе стороны.

И еще, мне кажется что если вы волнуетесь на собеседованиях, то вам еще рано называться senior :)

0
Насчет собеседования согласен, а вот в случае увольнения работника после испытательного срока у следующего работодателя могут возникнуть вопросы, а если таких увольнений несколько то нужно быть весьма убедительным, чтобы обратить эту ситуацию в свою пользу. У меня в трудовой есть запись что я проработал в фирме чуть более года, на двух собеседованиях про этот момент спрашивали, хотя и мельком.
0
Если могут возникнуть вопросы, то нужно иметь на них ответы.

Если ситуация повторилась не один раз, да еще и подряд, то возможно надо что-то в консерватории поправить.

У меня в «трудовой» есть запись о том что меня уволили во время испытательного срока. И ничего страшного в этом не вижу. С радостью рассказываю какие работодатели бывают чудаки.
+22
Проблема с аргументами от аналогий в том, что аналогия должна быть корректной, то есть принципальные моменты в ситуации и ее аналогии должны совпадать, а противоречия должны отсутствовать. Так вот термин — это факт, который ни с чем не связан, это просто название, которое нельзя «вывести», его можно только запомнить. Это не «сколько будет 2×2», а то, что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта. Человек может прекрасно понимать математику, физику, программирование, свободно владеть инструментарием, но именно из-за этого не помнить какой-то терминологический момент, которым никогда не пользуется. А надежно помнят все эти термины только те, кто либо зубрит, либо просто вчера из учебного заведения, либо учат этому, либо вот такие собеседователи, которые делают из терминологии фетиш и святыню. У разработчиков экономического и бухгалтерского софта точно также спрашивают план счетов. И тоже аргумент «это должно от зубов отскакивать». Нет, не должно. Это, как раз, именно то, что можно всегда «подсмотреть». А должно оно «отскакивать от зубов» тогда, когда человеку кроме фактической памяти работодателю предложить нечего.
+22
Плюсану мануально, так как по-другому не могу. Для меня все эти вопросы на «память» — полный бред. Этак скоро начнут собеседовать как-то так: «Какого числа, какого месяца и какого года Страуструп придумал C++? Аааа, не знаешь! Ну так говно ты, а не C++ разработчик».

В какой-то мере виновато школьное образование, когда в большинстве случаев «отличником» будет тот, кто тупо запоминает дату битвы при Бородино, или вызубрит наизусть стих Пушкина, без понимания что там за настроения были в Европе при Наполеоне и что за личность была у Александра Сергеевича. Культ карго во всей красе.
UFO landed and left these words here
UFO landed and left these words here
+8
Потому что никому не интересно что бы вы сделали если бы у вас была карма. Ограничения отрицательной кармы вообще-то задумывались как наказание, а не как индульгенция на оставление мусора.
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
0

Думаю, если бы вы более внятно изложили свою мысль (развернули, чем вам так понравился коммент и почему, а не просто тыкнули +1), то вас бы не минусовали.

UFO landed and left these words here
+1
Вам доставляет удовольствие высказывать своё мнение тем, кто ясно даёт понять, что не хочет его слушать? Ну ок.
UFO landed and left these words here
+12
Это как очень стого и серьёзно спрашивать детишек день, месяц и год октябрьской революции, отмены крепостного права, взятия Бастилии, начала и конца 1 и 2 мировых, не донеся до них в течение года даже наличия у этих событий связей, причин и следствий.
+6
Я сам через это прошёл: в школе ненавидел историю, потому что она сводилась к зубрёжке имён и дат; и только после вуза понял, что у исторических событий, оказывается, есть причины, следствия и взаимосвязи, а не только хронологическая последовательность.
0
Все сильно от учителей и преподавателей зависит. У меня школа и вуз оставили ровно противоположные впечатления.
В школе я сначала жутко разочаровалась в истории. Моя мама историк и она мне всегда очень интересно умела рассказывать про взаимосвязи событий (а даты она сама плохо запоминает), про исторических личностей. Я ожидала от школы чего-то в этом духе, но мы просто переписывали параграф в таблички. С моим представлением о том, что историю нельзя упихнуть в эти таблички, было тяжко. В старших классах плюнула на таблички и сдавала вместо них эссе. Учительница пару раз писала замечания, но в целом была довольна тем, что как раз понимание есть, поощряла доклады, рефераты и эссе, в которых видно, что ученики думали головой, а не переписывали учебник или википедию.
А вот в университете опять все свелось к заучиванию дат, а мой реферат про народное ополчение 1812 года (с использованием источников из архивов, с чем вряд ли на факультете ИТ кто-то сильно заморачивался) был жутко раскритикован за то, что я не упомянула в нем кого-то из партизан, хотя это вообще разные вещи. А экзамен свелся к распечатке методички для кафедры.
0
Ну год и месяц октябрьской революции помнить надо (день ИМХО не обязательно), чтобы в ноябре не смотреть «парад в честь парада 7.11.1941». По крайней мере в нашей стране, по крайней мере ближайшие лет 100.

Но в принципе согласен. Знание того, какая именно полубригада штурмовала южные флеши в 8 утра 26 августа — информация для массового обучения лишняя. Важно что в этом бою сражалась буржуазная армия объединенной Европы с феодальной армией РИ и что в его итоге понесла поражение (стратегическое, а не тактическое). И то, что не смотря на поражение в войне буржуазная идея спустя 200 лет цветет и пахнет.
+4
Это не «сколько будет 2×2», а то, что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта

Замыкание — это такой базис, что более подходящий пример, что 2×2 — это термин «умножение». Может ли математик забыть термин «умножение»? Для этого необходимо зубрить?
0
Может ли математик забыть термин «умножение»

А программист?

Для математика аналогом «замыкания», скорее, будут термины: «поле», «кольцо» и т.д.
0
А для того чтобы полноценно ответить про умножение нужно знать и теорию групп, и теорию множеств, и линейную алгебру, и тфкп.
Натуральными и вещественными числами умножение таки не ограничивается.
+1

Какое-то у вас странное представление об умножении, если честно.

+1
Не, ну почему, можно начать перечислять все возможные умножения в более-менее распространённых ветвях математики.
+2
А что, если сеньор всю жизнь читал статьи про кложур и рекуршен, а замыкание – это термин из электротехники?
-1
Ок. Какие свойства умножения Вы знаете? Хотя бы своими словами. Чур не копипастом из вики.
0
Я не математик же ж) Сходу вспомнил два — от перестановки множителей результат не меняется и при умножении любого числа на ноль получится ноль.

А если спросить у Senior-математика. Он должен знать ответ на этот вопрос? Или тоже может забыть?
0
Я к тому, что тоже вроде примитив, но senior-математик знает об этой простой операции столько, что может проболтать всё собеседование (как раз упоминавшиеся поля, кольца и свойства умножения на них). А может сказать, «ну эта, а чего про него рассказывать», при
этом не задумываясь применяя эти свойства на практике.

Помнить формулировку из учебника и уметь применять — не одно и тоже.
+2
senior-математик знает об этой простой операции столько

Так какой ответ вы ожидаете от человека, который пришел на собеседование на позицию «senior-математик»?
Вы ожидаете, что он расскажет, что такое умножение, расскажет свойства, поля, кольца и все остальное?
Или ожидаете, что он скажет в духе автора статьи: «ну чо вы прицепились с определениями? я может и пользовался, но термин такой забыл»
0
Чуть ниже найдете ответ 0xd34df00d.
Возможно не стоит ожидать такого развернутого ответа на такой вопрос, но однозначно стоит ожидать его в случае наводящих вопросов в стиле «а всегда ли существует обратный элемент?».
+3
Вот с ходу, относительно предыдущего поста. TheShock с ходу сказал «от перестановки множителей результат не меняется». Вот тут человек, это совершенно очевидно, отлично умеет применять, но не помнит термин «коммутативность». При этом есть очень ненулевая вероятность услышать эту же формулировку в ответ на «Что такое коммутативность в умножении».

«Забыл точное слово» — это не вспомнить термин «коммутативность», и это может произойти от волнения и пофиг вообще чего. Не ответить «что такое коммутативность» для «сеньор-математика» непозволительно.
0
от перестановки множителей результат не меняется

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

при умножении любого числа на ноль получится ноль

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

Вот аксиомой является, что умножение на единицу не меняет объект, причём что умножение слева, что справа. Это, собственно, определение единичного элемента по умножению.

А если спросить у Senior-математика. Он должен знать ответ на этот вопрос? Или тоже может забыть?

Алгебраист гарантированно должен. Любитель теорий типов, наверное, тоже. Матстатистик совершенно не обязан.

Математика большая.
0
Только если умножение коммутативно в этой структуре.

Вы можете перестать подозревать меня в самозванстве и начать лучше собеседовать? Я senior-алгебраист, а вы у меня определения базовых терминов (о которых я уже забыл) спрашиваете.
0
Это следует из дистрибутивного закона и обратимости сложения.

x*0 = x*(1-1) = x — x = 0
0
Я что-то туплю.

Обратимость даёт вам право написать, что 0 = 1 + (-1). Дистрибутивность даёт вам право написать, что x * (1 + (-1)) = x * 1 + x * (-1). Что даёт вам право написать, что икс умножить на обратный по сложению к единице элемент даёт обратный по сложению элемент к иксу?
0
В общем, вы меня с панталыку сбили.

Не зная, что x * 0 = 0, доказать, что x * (-1) = -x, у меня даже с бумажкой за пару минут не получилось, так что я искомое утверждение стал доказывать по-другому.

Пусть x*0 = k     (1).
Тогда x*0 + x*0 = k + k.
Тогда x*(0 + 0) = k + k (дистрибутивность).
Тогда x*0 = k + k (единица по сложению).
Тогда k = k + k (по предположению (1)).
Тогда k + (-k) = (k + k) + (-k) (существование обратного по сложению элемента позволяет написать -k).
Тогда k + (-k) = k + (k + (-k)) (ассоциативность сложения).
Тогда 0 = k + 0 (обратный элемент же).
Тогда 0 = k (снова ноль единица по сложению).
ЧТД.

Что-то многовато.

Ну и бонус-вопрос: чем обоснован самый первый переход от x*0 = k к x*0 + x*0 = k + k?
0

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


x0 = x0 + 0 = x0 + (x0 — x0) (обратимость сложения)
= (x
0 + x0) — x0 (ассоциативность сложения)
= x(0+0) — x0 (дистрибутивный закон)
= x0 — x0 = 0

0
Алгебраист гарантированно должен. Любитель теорий типов, наверное, тоже. Матстатистик совершенно не обязан.


Но вы же согласны, что ни один из них на вопрос «что такое коммутативность» не может сказать «да я все это знаю, только слово подзабыл»?)
0
Да ну, без знания термина для концепции замыкания нельзя программировать, как нельзя вообще заниматься математикой без того, чтобы знать, что такое умножение? Не выдумывайте. Еще одна некорректная аналогия.
0
Я не верю, что senior-математик может сказать «я забыл, что такое умножение», точно так же, как я не верю, что senior-javascript-developer может сказать «я забыл, что такое замыкание»
0
Вы какой-то абсурд сейчас написали.
Я утверждаю, что степень «элементарности» и «фундаментальности» терминов «умножение» для математики и «замыкание» для программирования различается на порядок. Программировать (и даже использовать саму концепцию), не зная термин «замыкание» — можно сколько угодно. Заниматься математикой без умножения и знания этого термина — нельзя.
А вы мне возражаете так, будто я сказал, что это вещи одного порядка, но обе — не важны. Предлагаю вам внимательнее читать аргументацию прежде чем выдвигать абсурдные контр-аргументы на то, чего ваш оппонент не утверждал.
+3
Программировать (и даже использовать саму концепцию), не зная термин «замыкание» — можно сколько угодно.


Но только не на «сеньорской» должности.
0
Ещё 8 лет назад сеньорам на плюсах вполне было норм без понятия замыкания.
+1
В контексте JS никогда не было норм без понимания замыкания.
0
habr.com/company/oleg-bunin/blog/424393/#comment_19174213
0xd34df00d
Полнота по Тьюрингу не является чем-то заведомо хорошим. Например, полные по Тьюрингу системы типов имеют очевидные проблемы.
Можете, пожалуйста, пояснить про проблемы?
И привести пример полной по Тьюрингу системы типов (не очень себе представляю, что это по отношению к типам).
0
Предположим, я готов с вами согласиться именно в плане утверждения о сеньорской должности. Но для этого мне нужно услышать аргументацию, чего конкретно принципиально не может сделать senior developer, не зная этого термина.
Хотя, на самом деле, «замыкание» — это всего-навсего частный (пусть и иллюстративный) пример. А речь-то, вообще-то, о том, на сколько влияет на производительность senior developer-а незнание произвольных отдельных специфических терминов.
0
Скажем так, даже если сеньор — узкоспециализированный специалист в языке, в котором замыкания, например, не имеют широкого применения, знать, что это за механика лучше, чем не знать.

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

Сеньор должен знать практики, паттерны, какие-то концепции за пределами устаканившихся в его экосистеме вещей, вероятно. Наработка практик в узкой специализации — это вопрос опыта, доступный миддлу. Мне кажется, что сеньор от миддла должен отличаться, например, знанием, в каких случаях от этих самых «лучших практик» можно отойти. Иначе чем он от миддла отличается?

А речь-то, вообще-то, о том, на сколько влияет на производительность senior developer-а незнание произвольных отдельных специфических терминов.


В контексте беседы целиком обсуждается а) может ли C#-сеньор не знать о виртуальном наследовании, б) может ли JS-сеньор не знать о замыканиях. Ни то, ни другое, произвольными отдельными специфическими терминами в контексте обсуждения считаться не может. Ну вот никак.
+2
Но для этого мне нужно услышать аргументацию, чего конкретно принципиально не может сделать senior developer
Не может быть senior developer.

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

производительность senior developer
Производительность — единственное качество, необходимое для Senior Developer?

незнание произвольных отдельных специфических терминов.
Вот тут самая главная ошибка. Не «незнание произвольных отдельных специфических терминов». А «незнание базовых концепций языка». Вот представьте, что C++ Senior Programmer забыл термин «Компиляция». Подумаешь, какой-то специфический термин. Или Java Senior Programmer забыл термин «Garbage Collector». Знание произвольных отдельных специфических терминов не нужно для senior-программиста!

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

Суть в том, что если на собеседование приходит человек, который утверждает, что он senior-программер, а на деле не слышал о основных концепциях его языка — возникает обоснованное сомнение в его чесности.
0
Вот представьте, что C++ Senior Programmer забыл термин «Компиляция». Подумаешь, какой-то специфический термин. Или Java Senior Programmer забыл термин «Garbage Collector». Знание произвольных отдельных специфических терминов не нужно для senior-программиста!
И это даже имеет описание
Или можно вспомнить анекдот:
В институте идет экзамен. Профессор спрашивает студента:
— Скажите, как называется хранилище для воды?
— Презервуар!
— Ну вы знаете, в принципе правильно, вот только без буквы «П»…
Студент (подумав):
— Резерватив?
+1
Ну под «забыл» имеется ввиду «забыл, что значит этот термин». Вот говоришь ему «компиляция», а он не может понять о чем ты
-1
Вы опять путаете не знать о чем это и когда что-то вылетает из головы:
Компиляция:
1) Сочинение, представляющее собой сводку и изложение уже обнародованных трудов, без самостоятельной обработки источников.
2) Составление таких работ.
И таких определений в вашей голове — тысячи и десятки тысяч. Каждое на пару абзацев.
Вот если вы наводящие вопросы начинаете задавать, а человек не понимает — тогда да.
А так, у всех по разному память работает, и ее сбои — не редкость.
Это все равно, что утверждать, что если человек не сможет подробно описать любой день своей жизни — значит ему нельзя доверить ничего важного вообще.
0
И таких определений в вашей голове — тысячи и десятки тысяч.

То есть у Senior C++ программиста при слове «компиляция» сразу вспоминается тысячи определений кроме того, что связано с его языком?
0
А Вы можете подробно рассказать как прошел ваш день ровно 5 лет и 4 месяца назад?
Если нет, тогда к чему ваш вопрос?
Человекам свойственно ошибаться. Они не википедия, не гугл и не роботы. Банально даже от переутомления или стресса может разное происходить.
Сколько вам нужно привести ссылок, чтоб донести простую мысль — иногда у людей из головы вылетает самое очевидное? И что это — нормально, ибо люди — не идеальны?
Собственно на экзаменах нормальные преподы видя, что человек тупит на очевидном не ставят условные 2, а начинают задавать наводящие вопросы. Потому что при стрессовой ситуации когда тебе нужно вспомнить именно это — и не такое возможно. Хотя пару часов назад это определение от зубов само отскакивало. Чего уж говорить о том, что человек может знать, но редко использует ибо банально ему это конкретно было в явном виде не нужно (не про компиляцию, а про пример из статьи).
0
А Вы можете подробно рассказать как прошел ваш день ровно 5 лет и 4 месяца назад?

А вы можете сказать, кто был четвертой женщиной Александра Македонского? Хотите продолжить играть в игру «придумай глупую аналогию, которая не относится к теме»?

Дальше, Гипертимезия — вообще не в кассу, мы ведь не спрашиваем у человека, что он делал 5 лет назад. И Жамевю — тоже не в кассу. Даже дежавю встречает слишком редко (как много человек испытывают чувство дежавю именно на собеседовании? и я про настоящее дежавю, а не псевдодежавю похожих ситуаций, когда просто много собеседований сливается в одно). Так вот — Жамевю встречается еще значительно реже.
«На кончике языка» — тоже не в тему. Слово вспоминать не надо, его тебе называют. К примеру, «Компиляция». Вот и все «на кончике языка» уже не подходит.

Сколько вам нужно привести ссылок, чтоб донести простую мысль — иногда у людей из головы вылетает самое очевидное?

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

Хотя пару часов назад это определение от зубов само отскакивало

Та при чем здесь определение? Никогда никогда не требует книжного определения, не впадайте в крайности. Если у человека есть понимание, то он не забудет слово. Проблемы на экзаменах именно из-за зазубривания. Простите, но человек, который называется сеньйором я который не понимает, а зазубривает определения базовых терминов — не нужен команде

Чего уж говорить о том, что человек может знать, но редко использует ибо банально ему это конкретно было в явном виде не нужно (не про компиляцию, а про пример из статьи).

Для Senior JS Developer незнание понятия «Замыкание» недопустимо. По моему мнению, как и незнание понятия virtual для Senior C#-девелопера. Увы, я в этом языке далеко не senior, но я так считаю.
-1
Ну, очевидно, больше нуля ссылок по теме.
А вы любые назовете не подходящими, так как они не укладываются в ваше мировоззрение? Жамевю не в кассу, явно же потому, что противоречит. Приводишь примеры того, как систему глючит, а в ответ «у меня такая же голова и всё нормально, а значит у всех должно быть так»? А если не так, то я вам в ответ ссылок на танк тигр накидаю, ага. И типа победю.
Простите, но человек, который называется сеньйором я который не понимает, а зазубривает определения базовых терминов — не нужен команде
Мда, удобно чужие слова расчленять, вырвать кусок, переписать суть и после этого «победить».
И нет, вы опять пытаетесь доказать, что если у вас нога не болит — значит ни у кого болеть не может, борясь с примером глюков системы и демонстрации, что люди не роботы, википедия или гугл и доступ к памяти не редко глючит во время стрессов и т.п.
Для Senior JS Developer незнание понятия «Замыкание» недопустимо. По моему мнению, как и незнание понятия virtual для Senior C#-девелопера. Увы, я в этом языке далеко не senior, но я так считаю.
Кто сказал НЕЗНАНИЕ? Ещё раз, разговор о том, что человекам свойственно терять доступ к банкам памяти из-за несовершенства нейросети в вашей и любой другой голове.
Если вы спрашиваете «что значит замыкание» и у человека замкнуло, то это не означает, что он — не знает. Вот если вы обсуждаете как что-то сделать, а он вместо этого предлагает какие-то костыли — вот тогда проблема в понимании и знаниях.

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

Ну если вот он потерял в этот момент — значит, ему не повезло, извините. Ему бы еще кирпич на голову мог по пути на работу упасть.

0
Вы же сейчас приведете пример успешного математика, не знающего, что такое умножение?
0
Забавно, что два человека одинаково поленились понять мою аргументацию и выдвинули одинаково абсурдные контр-аргументы. Ответил выше.
-2
Надёжно помнят это не те, кто зазубривает, а те, кто это всё своими руками прощупал, осознал, проанализировал, покрутил в разных вариантах и в мозг положил в рабочий арсенал. То есть хорошие программисты. Вопрос в том, действительно ли на ту позицию был нужен такой вот хороший программист, или достаточно было бы обычного.
0
Надёжно помнят это не те, кто зазубривает, а те, кто это всё своими руками прощупал, осознал, проанализировал, покрутил в разных вариантах и в мозг положил в рабочий арсенал. То есть хорошие программисты.

Хороший программист — это в первую очередь тот, кто все это благополучно забудет, если не использовал сколько-нибудь продолжительное время. Допустим, замыкания в принципе — они теперь везде, тут забыть сложно, но к чему помнить особенности того, как в js работает this в замыканиях, если уже год на js не пишешь? Да ни к чему, это не знания — это мусор. А мусор надо убирать.

+4

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

+4
Понимаете ли какое дело, к программисту нельзя предъявлять таких же требований как скажем к слесарю. Ибо у него область компетенции порой просто необъятна. Взять последний мой проект. Железка — на верилоге. Тесты — на яве. Клиентская библиотека — на С++. Морда лица всего этого безобразия — джаваскрипт в броузере. Плюс схематика и разводка для железке делалась в eagle. И этот проект ещё далеко не самый сложный, на пару месяцев! И программёр я далеко не уникальный, так, крепкий сеньёр, не более. И всё перечисленное мне пришлось «пощупать руками» в ходе одного проекта… Не мудрено, что если меня будут спрашивать о каких-то пыльных углах какого-то из этих инструментов, я поплыву как нерадивый студент. Но если мне надо будет в этом разобраться, сделаю это очень быстро. Самый умный начальник, которого я в жизни знал, любил говорить так (за точность цитаты не ручаюсь, ибо было это 18 лет назад, но смысл сохранен) — «Мне не нужны те кто всё знает, ибо всё знать невозможно. Мне нужен тот, который ничего не знает, но дай ему задачу, через неделю принесёт пусть грубое, но решение».
0
Как бы вы выбирали, какого кандидата принять на работу если надо закрыть вакансию?
0
А так бы и выбирал, как мой самый умный начальник, респектище и уважуха ему во веки веков, аминь. Дал бы совершенно практическую задачку. Связанную с будущей работой, хотя и элементарную. И поглядел бы как чел справится. Впрочем есть вариант. Дать в качестве задачки полную херню и ахению, однако требующую серьёзной разработки своего собственного алгоритма. Поскольку задачка полная херня и ахения, в тырнетах чел решения явно не найдёт. Тем интересней будет ЧТО он придумает… Один раз мне такое попадалось. Во избежание косвенной рекламы, опущу подробности.
UFO landed and left these words here
+3
что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта
Нет, она называется уравнением Пауссона. Закон Бойля-Мариотта описывает изобарный процесс. Пара минут Гугла;)
+1

Или вы специально перепутали а я не понял подвоха?

+1
Логично предположить, что специально — очень наглядная демонстрация. Я, кстати, после всех лет физфака только сейчас (спустя почти 10 лет) узнал, что у уравнения адиабаты есть именное название=) Тоже хорошо иллюстрирует.
+1
Проблема в том, что много вещей невозможно «подсмотреть» если не знать как они хоть приблизительно называются.
0
Так вот термин — это факт, который ни с чем не связан, это просто название, которое нельзя «вывести», его можно только запомнить. Это не «сколько будет 2×2», а то, что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта.


Вот тут стоит признать, что вопрос был «что такое <термин>», а не «каким термином называется вот это». И вот тут ситуация начинает играть другими красками. Не «как называется формула, описывающая термодинамический процесс и т.д.», а «в чем суть закона Бойля-Мариотта». Разные несколько вопросы, не правда ли?
+3
а «в чем суть закона Бойля-Мариотта». Разные несколько вопросы, не правда ли?

Да одно и то же, можно прекрасно помнить закон и уметь его применять, но при этом в упор не помнить, что он Бойля-Мариотта. Любой человек, который матфак окончил, знает на подкорке кучу всяких лемм/теорем из первого курса матана, на уровне формулировки фактов и даже доказательства вам накидает. Но сомневаюсь, что вспомнит хотя бы для половины названия, или саму формулировку по названию. Вот если вы скажите о чем там в общем, другое дело.

+1
Плюсануть, к сожалению, не могу, но у вас один из самых толковых комментариев! Я учился дважды, но последний раз это было уже почти 12 лет назад, а первый 21. Я программирую с 1992 года. Многие определения я помню еще, но далеко не все. Можно еще в С++ спрашивать с какой версии в лямбдах происходит захват *this? Или с какого билда VS 2017 intellisense будет корректно отображать Structured bindings. Но это нужно только для ЧСВ. Кому надо это быстро нагуглят. Скажу честно, но меня ни разу не собеседовали по терминам или алгоритмам, и я, кстати, тоже! Какие-то определения можно спрашивать вчерашнего студента, у которого может не быть портфолио, но не сеньера…
+4
Как говорил мой препод 25 лет назад — зачем мне помнить определения/константы, если у меня есть справочник, в котором это всё написано? Мне надо знать КАК это работает.
+3
А так же это очень хорошая отмазка на любое незнание.
Поди со стороны разгляди.
+1
Есть только один способ выяснить что человек знает в какой-то области — заставить его сделать нужное. Дайте человеку тестовую задачу и посмотрите как он её решит. А потом ещё есть и испытательный срок. Я видел дофига людей точно оперирующих определениями (выучили, благо список вопросов и ответов в интернете на любой вкус), но нихрена не понимающих о чём вообще они говорят.
+1
Я тоже считаю правильным этот один способ.
Но. Представьте себя работодателем, и к вам раз за разом идут претенденты не выдерживающие затем испытательный срок.
А это ваши расходы и вы не меценат. Когда лопнет ваше терпение? И какие чудеса вы начнете творить на собеседованиях?
+2
Тут только один вариант — поменять место лова. Если приходят только неподходящие специалисты, то, возможно, вы выбрали не то болото для их поиска?
+2
Или болото то, но наживка мелковата и прикорма пожалели.
+2
Когда я ещё учился в школе в 10 классе, мы писали «контрольные» работы, которые засчитывались в определённом ВУЗе (договор был). В одной из задач по физике я забыл значание константы Больцмана. Я «решил» задачу и в качестве ответа вписал формулу, в которой фигурировала эта константа. И дописал «ответ не получен, так как преподаватель отказался сообщить значение константы».

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

Мораль: да, надо смотреть со стороны. Если «не знание» — это повод что-то не делать, то это — плохо. В противном случеае, «не знание» чего-то очень *конкретного* не означанет не знание предмета/задачи.
0
Эйнштейн как-то сказал что он намеренно забыл скорость звука тк может найти её в любом справочнике.
0

Эйнштейн был музыкантом ;)
Длина резонатора камертона чуть меньше 20см, это четверть длины волны при частоте 440гц, длина волны чуть меньше 0.8м, скорость звука чуть меньше ~350м/с, ему бы даже смотреть не пришлось :)

0
Но тогда ему надо помнить частоту a1 и размеры резонатора :) Но уменье пользоваться дополнительной информацией тоже признак профессионализма.
+1
Среди программистов чаще встречается «я не теоретик, я практик, мне все равно как оно называется, уж я-то все сделаю как надо». И это очень тревожный звоночек со стороны нанимателя. Нет, конечно сделает. Кто же спорит. Вот только хотелось бы поменьше костылей в проекте, больше общеиспользуемых решений и поменьше костылей…
0
От балды легче… ибо тензорный анализ напрягает умы упругих программистов.
0
Он может и забыть сколько будет 71x34. А третьекласник, владеющих искусством быстрого счёта его обгонит.
+34
Нормальный вопрос. Ну не может сеньор не знать что такое замыкание или virtual. И не важно какой религии он придерживается, такие вещи просто невозможно не знать. Если не сеньор, то кто же тогда?
UFO landed and left these words here
UFO landed and left these words here
UFO landed and left these words here
+10
Ну не может сеньор не знать
Эта фраза выглядит вполне правдивой в её тяжкой непреклонности, если бы не одно но. Что значит "не знать"?

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

А если автора оставить одного с чужим кодом в котором есть ключевое слово virtual и попросить код модифицировать согласно таске, он справится или нет? Я думаю ему и дня не понадобится, да что там, и часа. Даже если он запамятовал, 20-гуглинг с чтением коммента на стэковерфлоу заставит его хлопнуть по лбу «ах да, я же встречался с этим» и приступить к решению задачи. Думаю 20 секунд рабочего времени для начальника этого разработчика не такая уж большая цена за незнание?
Так ли сурово можно продолжать считать такого разработчика непригодным к работе сеньор сварщика кода?
+3
Ну, мне вот кажется, что с virtual вы немного лу��авите.

Даже если он запамятовал, 20-гуглинг с чтением коммента на стэковерфлоу заставит его хлопнуть по лбу «ах да, я же встречался с этим» и приступить к решению задачи.


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

В общем и целом, ваше «а вот virtual я не помню» говорит, с очень большой долей вероятности, о том, что лично вы его не применяете. С учетом специфики существующего кода вместо сеньор-разработчика, который будет выполнять поставленные задачи, вполне можно получить саботера, который будет вместо работы убеждать джунов/миддлов в том, что «виртуальное наследование — зло», и «за композицией будущее». Ну, либо человека с сеньорской зарплатой и отдачей на уровне миддла…
+1
Вот вы тут поучаете, а что такое «виртуальное наследование»? В С++ это особое наследование, со своей семантикой. И гуглить нужно в направлениие «Multiple inheritance» & «diamond of death»
+1
Если в вашей компании в коде много виртуального наследования, то, велика вероятность, что всем будет лучше, если соискатель туда не устроится (и особенно соискателю).
0
В своей жизни сталкивался всего несколько раз: один раз это было в году 96-98, тогда писали на Borland С++ и там была заморочка с наследованием от TObject, еще раз относительно недавно, когда делал code review для проекта, и это было меньшее из зол при уходе от void* на все что можно. Было еще пару раз, но уже и не вспомню. А вообще я не фанат виртуального наследования.
+4
Дорогой мой человек, вот и я же ровно о том же! Если человек, собеседующийся на позицию сеньора на С++, он должен знать, что такое «виртуальное наследование». Это базовая вещь языка, часть спецификации. И «я слово забыл» — хреновая отмазка. Вы вот прямо говорите «В С++ это особое наследование, со своей семантикой». Вот если вас при собеседовании на позицию сеньора спросят, как называется «особое наследование, со своей семантикой в С++», а вы сходу не вспомните слово «виртуальное» — это нормально, это просто слово подзабыл, вы красавец, а тот, кто собеседует — клинический кретин. Однако когда вас (опять же, помним, что вы на сеньора собеседуетесь) просят объяснить на пальцах, что такое виртуальное наследование, а вы «забыли формулировку» — брать вас на работу не стоит.

Вы же, предположительно, еще и в команде работать будете. Сеньоров, обычно, в вакуум не берут. Вам же еще и коммуникативные навыки понадобятся. Да и предполагается, что рядом могут сидеть миддлы или, простихоспади, джуны, которые за советом, в случае чего, пойдут, вероятно, к сеньору. Так ведь? Придет вот эдакий джун к вам-сеньору, и скажет, я тут виртуальное наследование намутил, а что-то не работает, помоги разобраться. А ты сидишь, эдакий сеньор-помидор, и ни слова не понимаешь в том, что тебе джун говорит, у тебя там своя личная устоявшаяся терминология. Ну и нафига ты такой красивый нужен?
0
Может я не совсем понял о чем речь… Для меня определение — это то что написано в «книжке». А вот если человек претендует на сеньера С++ и не знает таких вещей (хотя бы своими словами), то это не очень хорошо. Может мне по жизни везло, но мне не очень часто приходилось отвечать на вопросы: что такое класс. Или чем класс отличается от объекта. Восновном, если и был разговор по языку, то какие-то редко используемые вещи, ну или что-то не совсем очевидное. Если бы меня спросили такие вопросы, то я бы ответил, но в такой фирме работать не стал…
+2
Собственно, и я говорю о том, что человек, претендующий на позицию сеньора в C++ не может не ответить на вопрос, что такое «virtual». И нет никакой приемлемой отмазки, почему он на собеседовании не смог своими словами дать описание этой механики. Собственно, для джуна еще как-то может «прокатить», но даже для миддла не объяснить смысл этой механики на собеседовании — признак того, что и на «крепкого миддла» точно не тянет.

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

Ну ведь чушь же. Человек просто сам завалил собес, перевернул с ног на голову, и теперь пришел пожаловаться на «некомпетентность собеседующего».
+1
но даже для миддла не объяснить смысл этой механики на собеседовании

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

0
Погодите-погодите.

Прямо из статьи:
Senior full-stack .NET Developer

Что такое virtual?


Т.е. я правильно понял, что человек, собеседующийся на позицию senior с C#, каким-то образом не связал ключевое слово языка «virtual» с «известной ему механикой»?

надо чтобы обе стороны поняли, про какую именно механику задан вопрос


Вы искренне считаете, что на собеседовании по C# есть место двум разным пониманиям базового синтаксиса одного и того же языка? Т.е. собеседующий подразумевает, мол virtual void methodName(), а собеседующийся настолько заметался в выборе возможных для контекста беседы толкованиях virtual, что аж ни одного сформулировать не смог?
0
Т.е. я правильно понял, что человек, собеседующийся на позицию senior с C#, каким-то образом не связал ключевое слово языка «virtual» с «известной ему механикой»?

Гражданин упирает на то, что не использует наследование.
+1
Гражданин, претендующий на позицию сеньора в ООП-языке имеет право не использовать наследование, да. Но право указанного гражданина не знать/не помнить, что это такое — позвольте поставить под сомнение.

Он же, вроде, по специфике «сеньорства» не только писать код должен, но еще и читать. При этом не только свой — на то он и сеньор. А ключевые слова языка для него — алфавит. Вы же не станере брать ликтором человека, который «отлично весь алфавит помнит, а вот букву Ы подзабыл, но она не нужна, он все равно ее не использует».
-1
Гражданин, претендующий на позицию сеньора в ООП-языке имеет право не использовать наследование, да.

Погодите, погодите! А интерфейсы он тоже не использует? Ведь вызов реализованного метода интерфейса — он тоже виртуальный.

0

Это же и есть мой вопрос. При чем тут наследование, если речь была про virtual, а виртуальные вызовы используются и без наследования, при реализации интерфейсов?


То есть отговорка про "я не использую наследование" вообще нерелевантна, я про это говорил.

0
В каком именно языке? Именно ключевое слово virtual связано с интерфейсами?
0
Вот кстати мне лично интересно как вопрос задан был. Например спросили про «ключевое слово виртуал», или просто виртуал или же виртуал?
Тут стоить отметить что хоть и не по моей это специальности, но в первых двух вариантах я бы скорее всего правильно связал понятие со смыслом, а вот в последнем была бы вероятность что затупил бы.
0
Собственно, в тексте статьи написано «Что такое virtual?». Т.е. варианты с «не расслышал» и «недопонял из-за произношения», видимо, отметаем.
0
В таком случае полезно просто уточнить. Раз уж все равно не знаешь ответа вотпрямщас, спросить «а что ви таки имеете в виду?» не зазорно.
0
Т.е. я правильно понял, что человек, собеседующийся на позицию senior с C#, каким-то образом не связал ключевое слово языка «virtual» с «известной ему механикой»?

Не совсем. Человек в нестандартной ситуации, когда внимание отвлекается различными психологическими и информационными факторами, за отведенные ему несколько секунд не связал слово, произнесенное вслух звуками "виртуал", с известной ему механикой, которой он редко пользуется. Не успел выбрать из всего набора существующих в C# механик ассоциацию с переопределением метода. То, что он знаком с наследованием, следует из правильного ответа на вопрос "что такое protected internal".


Такими вопросами можно проверить только быстроту ассоциаций. Чтобы проверить умение пользоваться, надо дать задачу или попросить привести пример. Если на вопрос "Приведите пример переопределения метода в наследнике" человек напишет код со словом "virtual", значит он знает, зачем оно нужно, даже если его нет в вопросе.

0
Если на вопрос «Приведите пример переопределения метода в наследнике» человек напишет код со словом «virtual», значит он знает, зачем оно нужно, даже если его нет в вопросе.

Возьмём для примера C++. А если он переопределит метод без слова virtual, будет ли это значить, что он его не знает/не умеет использовать?
0

Зачем брать C++, если разговор про C#, и пример будет на нем? Давайте тогда PHP возьмем, там на virtual вообще ошибка синтаксиса будет.

0
Я C++ взял, так как думаю, что больше людей его понимают.
Хорошо, пусть будет C#. Вам это уйти от вопроса всё равно не позволит.
Сам вопрос:
А если он переопределит метод без слов virtual/override, будет ли это значить, что он их не знает/не умеет использовать?
+1
Насколько я знаю, в C# нельзя переопределить метод в наследнике, если в родителе он не объявлен как virtual.
0
Я, конечно, извиняюсь, но Вас бы на должность C# сениора (да что там, даже мидла), я бы не взял :(
0

А я и не позиционирую себя как C# разработчик, даже как джуниор.


Извиняться не надо, надо приводить аргументы. Но если вы имеете в виду такую программу:


class A {
    public int f() {  return 1;  }
}
class B: A {
    public int f() {  return 2;  }
}

то она выдает предупреждение
warning CS0108: "B.f()" скрывает наследуемый член "A.f()"
и работает не так, как с переопределением.

0
Извиняться не надо, надо приводить аргументы.

Аргумент то простой: вы не знаете, что функцию можно переопределить в наследнике и без virtual. И про ключевое слово new тоже даже не слышали, раз уж вопрос про предупреждение встал.
и работает не так, как с переопределением.

Для вас переопределение — это обязательно когда virtual? Если так, то я бы тогда вас и на вакансию C++-программиста тоже бы не взял :(
0
А я бы не взял вас. Потому что переопределение и сокрытие методов — это два сильно разных механизма и смешивать их нельзя ну вот совсем никак.
0
А вот это уже вопрос терминологии пошёл. В оригинале да, термины extend и hide. Но в русском переопределить не часто говорят в смысле extend. Чаще и в том и в другом, особенно в плюсах. Кстати, русскоязычный MSDN переводит их как разворачивание и скрытие.
В C# метод в производном классе может иметь то же имя, что и метод в базовом классе. Можно задать способ взаимодействия методов, воспользовавшись ключевыми словами new и override. Модификатор override разворачивает метод базового класса, а модификатор new скрывает его. В примере в этой теме показана эта разница.
0
Однако в конкретно указанном случае virtual/override и new — действительно разные механизмы.
0
Кстати, конкретно в этой статье, откуда я привёл цитату нет обычной пометки, что это машинный перевод. Да и сам текст высокого качества, что указывает на ручной человеческий перевод. Так что всё дело в привычке скорее всего.
0
Процитированный вами фрагмент я бы не понял если бы не знал о чем он и не видел перевода на английский.

Что значит «разворачивание» метода? Он как бы в базовом классе был свернут, а в производном его развернули? А можно ли метод развернуть два раза? Должен ли он быть для этого дважды свернут?
0
Эх, вроде писал комментарий, видимо как-то потерялся…

Мне этот термин тоже не нравится. В плюсах всегда использовали понятие «замещает», как нам завещал Страуструп (специально удостоверился в спец. издании C++ programming language) от override. Собственно в шарпах также обычно говорим.
0
В любом случае, никто сокрытие методов переопределением не называл, наоборот, это одна из главных новичковых ошибок. Русский термин — перекрытие, если мне не изменяет память. Совсем не то же, что переопределение.
0
Можно ведь открыть студию и убедиться, что поведение принципиально разное, а не показывать всем свою необразованность? А потом пойти и почитать почему оно разное.

Я вот на всякий случай сходил и проверил — gist.github.com/retran/9f4dc4c359d8e91d163e2452a642863c

Если вы так пишете код и считаете это переопределением — вас вообще на работу брать нельзя.
0
Я и без вас уже N лет знаю, что поведение разное. Зачем вы мне это говорите? Что вы хотите этим показать.
Если вы ещё до сих пор не поняли, что произошла терминологическая путаница, то извиняюсь, но вы глупы :(
Если вы так пишете код и считаете это переопределением — вас вообще на работу брать нельзя.

Ещё раз я знаю и использую и new и virtual/override. И да, я не считаю это переопределением, я считаю это extends (а кто догадался вообще extends перевести как переопределить?).
0
А можно источники вашей терминологии посмотреть?

Я, конечно, глупее вас, и первый раз слышу, чтобы extends употреблялось по отношению к методам в контексте наследования (и не extension method'ам, которые вообще про другое), а не классам.

UPD Я вот сейчас погуглил, нашел такую формулировку только в одной единственной статье про C# в MSDN.
0
Если вас интересует именно моя терминология, то я называю это «замещать» от override, как мы всегда называем это в плюсах и «скрывать» от hide (ну и «переопределить» (переопределить с замещением, переопределить со скрытием) применительно к обоим). Вроде как это общепринятые обозначения, других и не слышал никогда (если не считать «оверрайдит»). Если вам прямо нужен источник-источник, вот только что в другом комментарии отвечал, что так (override/замещает) написано в канонах C++ (C++ Programming language), пусть тогда это и будет источником.
Если вас интересует официальная терминология по C#, то она из шарповой документации, вы же сами ссылку на неё приводили. Откуда они придумали extends/расширяет и почему не взяли override/замещает — это к ним вопрос.
0
Господа, чтобы не замусоривать далее топик, я извиняюсь, что хотел «подколоть» уважаемого michael_vostrikov на тему того, что мне (будем считать что) показалось, что он не знает про hides. К сожалению, будем считать, что из-за терминологической путаницы, мы друг друга просто не поняли. И предлагаю дальше эту тему не развивать.
0
Собственно, new, вроде как, про перекрытие метода, а не про переопределение. Поведение будет разное. И, собственно, эти нюансы сеньор должен знать. Т.е. без знания того, что такое virtual/override, new (в контексте метода) и в чем разница на должность сеньора претендовать нельзя.
0
Давайте, что бы не было путаницы, скажем так:
Собственно, new, вроде как, про hide метода, а не про extend. ...
И полностью с вами соглашусь.
Так как первый раз в живую слышу, что кто-то вместо замещения метода(в С++) и расширения метода (в C#) говорил об этом как общее «переопределение». Уж, со сколькими людьми общался, и за пределами рабочего коллектива (за последние 2 месяца почти 40 людей только на интервью посмотрел), все как и обычное «скрытие», да и виртуальное замещение в плюсах называют просто «переопределил». А тут на тебе…
0
Ну, собственно, тут мы до «нюансов принятой в экосистеме терминологии» дошли уже. Тем более не вижу смысла спорить о формулировках, т.к. ни синьором, ни даже миддлом в C# не являюсь.

Просто я про то говорю, что раз уж даже мне, человеку весьма постороннему, навскидку видна разница между virtual/override и new, может ли человек, претендующий на «сеньорство» в области «забыть» или «затрудниться ответить». Вот и мне кажется, что нет.
0
Собственно, new, вроде как, про перекрытие метода, а не про переопределение.


Помню, как запутался в коде cms, в управлении плагинами. Методы были определены под именами: renew, refresh, reload, update… Там даже синьоры путались )
0
Аргумент то простой: вы не знаете, что функцию можно переопределить в наследнике и без virtual.

Это не аргумент, а необоснованное утверждение. Аргументом был бы приведенный вами пример такого переопределения.


Я знаю, что понятие "переопределение" в языке C# имеет вполне конкретное значение и задает вполне конкретное поведение кода, касающегося реализаций в родителе и в наследнике, и это поведение отличается от скрытия. Вы не сможете добиться, чтобы код без virtual во всех случаях работал точно так же, как с virtual.


Здесь описаны отличия, прочитайте и обратите внимание на примеры:
Knowing When to Use Override and New Keywords
Отличия переопределения метода от перекрытия


В следующий раз, прежде чем переходить на личности, потрудитесь изучить обсуждаемый вопрос. Если PHP-шник знает о C# больше вас, это повод подтянуть свои знания.

0
Вы не сможете добиться, чтобы код без virtual во всех случаях работал точно так же, как с virtual.


В том и вопрос, что вы должны знать, чем поведение «кода без virtual» от поведения «кода с virtual» отличается. Иначе какой вы сеньор?
0
Ну а я знаю, что «Я знаю, что понятие extends (а кто догадался вообще extends перевести как переопределить?) в языке C# имеет вполне конкретное значение и задает вполне конкретное поведение кода, касающегося реализаций в родителе и в наследнике, и это поведение отличается от скрытия (или перекрытия, как qrKot это называет?) hides.»

А приводить ссылку на статью, из которой я уже приводил цитату — это очень оригинально.

В следующий раз, прежде чем переходить на личности, потрудитесь изучить обсуждаемый вопрос. Если PHP-шник знает о C# больше вас, это повод подтянуть свои знания.

Ну как бы я пока не вижу, чтобы вы знали, что-то больше меня. Вижу, что мы говорили об одном и том же разными русскими терминами. Что для меня «переопределена» это когда функция просто переопределена (без разницы с замещением или со скрытием), а для вас этот же термин значит только тот случай, когда она замещена (от override).
И почему вообще повод? Я себя в шарпах даже джуном не считаю, я всё-таки плюсовик :) Когда есть время и возможность я и без повода что-нибудь на шарпах изучаю.
0
Перекрыть, вроде, можно.
public new void MethodName() {}

Собственно, про то, видимо, и вопрос был, чем переопределение виртуального метода от перекрытия в наследнике отличается.
0
То, что он знаком с наследованием, следует из правильного ответа на вопрос «что такое protected internal».


А знание модификаторов доступа к членам класса, простите, каким образом свидетельствует о том, что человек знаком с понятием «наследование»?
+1
Из этого определения следует, что человек наслышан о понятии «наследование». Мы же предполагаем, что человек уровня сеньора сможет не только сказать «наследование — зло», но и обосновать свою позицию, объяснить почему он так считает. А тут получается, что познания человека о наследовании заканчиваются на моменте «я слышал, что есть такая штука, но где-то в интернете читал, что так делать нехорошо». Странная позиция для соискателя на вакансию сеньора, вы не находите?
0
каким образом свидетельствует о том, что человек знаком с понятием «наследование»?
Из этого определения следует, что человек наслышан о понятии «наследование»

Наслышан — По слухам хорошо знаком с кем-чем-нибудь
Давайте не будем играть словами. protected связан с наследованием, это факт. Тем более что мы не знаем, насколько развернутым был ответ автора.


объяснить почему он так считает

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


В том и дело, что такие вопросы как в статье на самом деле не показывают умение пользоваться.

+1
Тем более что мы не знаем, насколько развернутым был ответ автора.


В том то и дело, что мы не знаем, насколько развернутым был ответ автора, можем только предполагать, что он что-то связное ответил (и где гарантия, что он не ответил заученной формулировкой с MSDN).

Что мы знаем (со слов самого автора), это то, что он «посыпался» на вопросе «Что такое virtual».

Т.е. в сухом остатке автор не смог ответить на вопрос, что такое virtual, в чем сам и признается. А это — неиллюзорный повод предположить, что в вопросе наследования автор плавает, что автоматически делает его слабым кандидатом на сеньорскую позицию.
+2
Однако когда вас (опять же, помним, что вы на сеньора собеседуетесь) просят объяснить на пальцах, что такое виртуальное наследование, а вы «забыли формулировку» — брать вас на работу не стоит.

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

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

Ориентироваться на спеку — ну такое. У меня есть сборник вопросов (причём, не совсем прям на зубрёжку спеки, а на понимание и комбинации), и на все из них гарантированно не ответит ни один из членов комитета по стандартизации С++, например.
0
Только виртуальное наследование — весьма редко используемая штука.

У вас ни в одном C++ проекте вообще нет никаких интерфейсов?

+1

а как связанны интерфейсы и виртуальное наследование?
может вы путаете виртуальный метод и виртуальное наследование?

0

Вы правы, да, я их спутал. Отличное получилось подтверждение слов 0xd34df00d.

+1
Для того чтобы за 20 секунд понять что означает ключевое слово virtual, надо знать как работает динамический полиморфизм. Понимать чем отличается статический тип переменной и класс объекта на который она ссылается.

И да, существуют программисты которые этого не знают и не понимают.
0
Да, существуют, это зависит от языка. Я в руби не задумываюсь о «динамическом полиморфизме». Да и вообще о полиморфизме. Применяю каждый день, но чтобы рассказать что такое полиморфизм — нужно лезть в гугл. Потому что я очень давно учил определения таких понятий.
0
Ну так при собеседовании на рубиста вас, скорее всего, и не будут об этом спрашивать…
+27

А когда на senior-позицию приходят полные нули, что делать? Знакомый фронтендер периодически собеседует людей на позицию senior-ов. Люди говорят/пишут, что у них 3-5-10 лет опыта, но они не знают концепции замыканий.
ИМХО, это очень хороший вопрос, чтобы быстро отсеять всяких неадекватов, при условии, что он задаётся не HR, и не ради самоутверждения.
К тому же, это ещё и хороший вопрос для отсеивания неадекватных работодателей: если после моего ответа начинают просить что-то там реализовать на бумажке, то начинаю задумываться, а надо ли мне тут работать.

+1
Ну, к слову, нужно уточнять про какие технологии речь идет. Например в нашем отделе (1с, многие код пишут уже по 5 лет, и по меркам 1с неплохой код и действительно крупные проекты) — когда я коллегам в чатик скинул свой краткий обзор плюшек дарта и флаттера — единственная реакция которой я добился (хотел заинтересовать, может кто со мной бы начал дома на них что то изучать и пилить) — это: что ты там написал? Что за замыкания? Что за вывод типов? Все. При этом, как я уже выше писал, в своей сфере мы считаемся пусть не топовой компанией, но не хухры-мухры.
+2

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


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

-32
Если в любом моем проекте, кто-то, хотя бы подумает использовать замыкание — сразу пойдет искать новую работу.

На счет промисов — тут есть конечно нюансы, ввиду синхронности js, но мое отношение к промисам также негативное (работу кончено не пойдет искать, но прослушает двухчасовую беседу о том, как разбивать задачи на мини��альные составляющие для обеспечения стабильности и прозрачности работы кода).

Но саму возможность использования промисов, в каких-то непонятных, внеземных проектах, я конечно не отрицаю. Как по мне, промисы в js придумал какой-то редкий м....., который ранее работал в глубоком бэкенде, на c++, с функциями асинхронного вызова и обработки данных без потоков, через медиаторы, в самих кодах классов.

Сидел он значит, изучал фронтенд (новое для себя дело) и встал в ступор — а почему нельзя в js через те же медиаторы и обертки событий, как было в классах на c++, обойти синхронность языка? Давай-ка я напишу это, чтобы и здесь реализовать мнимо-неблокируемый интерфейс, и назову всё это дело промисом!

А нужно-ли это во фронте?, или это создаст для работы кода еще больше проблем? — эт. дело десятое, главное мы из JS теперь сделаем крутой язык, приближающийся к бэку!
+14
Если в любом моем проекте, кто-то, хотя бы подумает использовать замыкание — сразу пойдет искать новую работу.

Т.е. в Вашем проекте на js нельзя писать на js? В нем же все функции образуют замыкания.

+12
Просто когда все живут в 2018, этот человек живет в 1999, где он крутой программист, знающий что замыкания кушают память в нетскейп навигаторе.
-7
В прошлом? В ПРОШЛОМ? ааа, жесть! Вы вообще хотя бы слегка представляете себе, как работает стек вызова всего вашего «будущего»? Какие системные функции затрагиваются при вызове ваших технологий? Какие проверки и со стороны каких процессов идут во фронтэнде? Всё это ваше «будущее», это устаревшая технология бэкэнда (80-ые по-моему годы, ну может девяностые – 5-я, или 6-я студия короче от майкрософта). Именно тогда бэкэнд языки были еще такими ущербными и там также приходилось применять обертки событий (EventLoop как тут кто-то в комментах писал, думая, что это круто — товарищ, это не круто, это смерть твоему проекту в продакте, если ты нагрузишь стек событиями и будешь ждать их окончания, не контролируя саму среду в которой выполняется твой код [браузер в данном случае]).

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

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

Не пытайтесь писать на фронтэнде то, что нельзя на нем писать, притащив в него устаревшие технологии из бэкэнда! Хотите работу приложения как в бэкэнде, да млина, — пишите на бэкэнде, а фронтэнд подгружайте в виде интерфейса только, а не для работы и вычислений (не умеете так? слишком сложно для вас? — учитесь, или заказывайте у тех, кто может, но не пытайтесь городить шнягу убогую на том, на чем её не следует городить).

Тоже самое тут про virtual dom кто-то писал в комментах, ну и у самого автора поста это как раз-таки вызвало бурю негатива — и да, я полностью его поддерживаю в этом. Бла-бла-бла Senior… — не знаешь вирутал? не, не сениор. А вот собеседующий сам в курсе, что даже не junior, а первый месяц изучающий любой язык джуниор, уже знает и всегда использует только виртуал дом? 10-20 лет назад, любой, кто начинал попытку использования в своем бэкэнде web интерфейса (подгрузив объект webbrowser, или создав из своей программы экземпляры штатного веббраузера системы) тут же, при первом опыте внедрения большого потока данных в реальный дом, сталкивается с тем, что без виртуал, его код не будет работать. Ибо, подвесив свой ПК таким обращением в реальный дом, он начинает анализировать, что же произошло и находит причину, что работа с прямым дом, контролируемым всеми и вся, так нагружает и тормозит пк — что работа с ним просто не реальна.

И он тут же изобретает свой виртуал дом и обрабатывает его штатными регэкспами в памяти, выгружая в файлы готовые куски кода, если их слишком много для работы из памяти напрямую, а затем уже использует эти куски в своем веб интерфейсе. О чудо, спустя 20 лет, кто-то изобрел то же самое и назвал это virtual dom — и это да, это важно, это только для senior-ов технология, только они в курсе, как это и для чего :( аааа, жесть просто, не хватает уже эмоций на таких вот чудо-профи — куда катится мир программирования? Что, никто больше не хочет думать? Все читают каких-то ущербных чудо-разрабов, чтобы самим стать такими же ущербными и писать всякую чушь к месту и нет? Кто-то читает вообще спецификации самих языков? Спецификации ОС и аппаратной части ПК? Чтобы понимать, как работает тот, или иной метод в реальности?

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

Все, кто тут отписался, считая себя суепр-профи знатоком, давайте эксперимент — скидывайте код, где вы считаете уместным замыкание, промис и т.д. Я переделываю его в свой код без всей этой чуши, и мы вставляем его в тело реальной страницы, нагруженной эффектами движения, графикой и прочим. Запускаем циклично тест этой (этих функций) и пишем видео с экрана работы этой страницы во время выполнения наших кодов, активно взаимодействуя с элементами страницы (скрлим, наводим мышь на элементы, выделяем текст, кликаем правой кнопкой мыши — в общем делаем все то, что делает пользователь на странице, просто не открывая новых вкладок).
По окончании работы теста, сохраняем данные использования памяти, CPU, GPU, время работы кодов (ну и выкладываем видео на общее обозрение, как ведет себя страница в браузере пока работает ваш и мой код — оба типа у каждого на ПК, чтобы было видно, как работает разный код на одном и том же ПК).
Вот тогда, мы и будем уже более детально обсуждать чудо-супер-пупер технологии на реальном примере, а не на сферическом коне в вакууме.
+2

Вот вам код:


fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed")
.then(x => x.json())
.then(x => console.log(x.hello))

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

0
Не ведитесь. Этот код без проблем переписывается под цикл и xmlhttprequest (да простят меня за то что я это вспомнил), и его можно сделать быстрее. Но промисы сделаны не для ускорения кода, а для удобства разработки и поддержки. Так что сравнение тут не корректное.
0
Зависит от кривизны. Можно и while(true), можно и setInterval, можно даже на requestAnimationFrame повеситься :) Но вообще согласен, все равное он будет в event loop проверяться.
-4
Да что ты будешь делать. Вот что вы читаете? Какой цикл вы где видите? Вы спецификацию xmlhttprequest читали вообще?

Весь fetch этого чудо-автора ниже джуниора, это регистрация промиса, резервирование состояний, объявление функций response и reject, запуск таймера опроса промиса для получения состояния исполнения, и, только затем, исполнение ТОГО ЖЕ КОДА ОТ xmlhttprequest:

function eH001(){
	if (this.status == 200)(x => x.json());
	(x => console.log(x.hello));
}
var XH001 = new XMLHttpRequest();
XH001.onload = eH001;
XH001.open('GET', 'https://www.mocky.io/v2/5185415ba171ea3a00704eed');
XH001.send();


То есть, такой вот чудо-разраб, который начитался таких же чудо-разрабов придумавших fetch, чтобы не писать код обработки XMLHTTPRequest, взял и на ровном месте в 3 раза увеличил нагрузку на ПК юзера, просто так, чтобы не писать пару лишних строк.

Ну, я могу понять, любишь ты короткие записи, напиши просто функцию обертку тогда, чтобы её вызывать вместо кода самого XMLHTTPRequest, и обзови там её myfetch(respose, reject) и вызывай — даже это будет в разищи быстрее и лучше, чем вызывать этот промис тормознутый и проблеммный.

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

Ваши сообщения — это какой-то сборник анекдотов. Откуда вы взяли, что существует какой-то таймер опроса?


Кстати, приведенный вами код не работает.

+8
Кроме того, что он не работает так еще и замыкания использует, поэтому придется SemaIVVV искать новую работу не у себя в проекте.

Пожалейте человека, сам себя уволил публично на хабре, а ему за шаред хостинг за 300 рублей оплачивать, придется же на ватрушках в столовке экономить.
-4
На счет таймеров — еще раз повторю, учите матчасть, или на курсы идите (я вас бесплатно образовываю, написав вам что делает ваш fetch в в вашем коде).

На счет не работает — откуда мне знать, что вы там вызываете своими объектами.
Запишите обработчик для проверки так, чтобы узнать в консоли работает или нет:
function eH001(){
if (this.status == 200){console.log('OK!')}else{console.log('NO!');}
}


>@b00taNik Кроме того, что он не работает так еще и замыкания использует,

Вы тоже не пишите больше, а идите учиться на курсы начальные — также ниже джуниора левел, который в принципе не знает что такое замыкания. (вам тоже бесплатный урок — назначение события, либо передача имени функции аргументом [без скобок], это не замыкание. Явное объявление функции, либо вызов в анонимном варианте [со скобками] внутри другой функции — вот что является замыканием в JS и что позволяет сохранять состояния переменных. В моем же коде, нет никаких замыканий, и в обработчике, this будет всем, на что в любой из функций повесят этот обработчик, и, как вы не извращайтесь, но он никогда не сохранит состояние предыдущего вызова если его вызвали повторно. Учите матчасть, поднимитесь до джуниора хотя бы. И не смешите народ и не позорьтесь — не пишите чушь больше здесь.
0

И это пишет якобы сеньор :-) Вроде бы стандартное API, доступное во всех современных браузерах — но нет, "откуда мне знать, что вы там вызываете своими объектами".

-1
Явное объявление функции, либо вызов в анонимном варианте [со скобками] внутри другой функции — вот что является замыканием


А вот википедия, например, считает что замыкание — это функция первого порядка (т.е. функция-объект, как, eH001), и которая использует внешние переменные, не являющиеся ее параметрами (как this.status, например).

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

PS: код не работает, потому что он синтаксически некорректно составлен, да и x не определен, если бы вы хоть немного понимали в JS, до вас бы это дошло.
+1

this не замкнут, это неявный параметр функции. А вот console — вполне себе.

0
Кстати, я на счет этого не уверен. Глобальные переменные тоже через замыкание поставляются или для этого есть отдельный механизм?
0
У функции есть внутренняя переменная [[scope]]. Она содержит ссылку на lexical environment родительской фунции. Поэтому, когда интерпритатор не находит переменную, он идет по цепочке scope-ов пока не выйдет на функцию определенную в глобальном объекте. А в глобальном объекте есть свойство console.

x = 4; 
function test(){console.log(x);} 
test(); // 4


y = 5;
function test() {
    const y = 17;
    return function () { console.log(y) };
}; 
test()(); // 17


y = 5;
function test() {
    // const y = 17;
    return function () { console.log(y) };
}; 
test()(); // 5


И интерпритатор точно знает что ему и откуда брать.
0
На таком обывательском уровне и я могу рассказать. Меня интересует, если ли какая-то особая обработка global переменной. То есть больше инфы, чем прочитать одну поверхностную (хоть и хорошую) статью на javascript.ru

функцию определенную в глобальном объекте

Тут вы крайне странно сформулировали.

Там не все так просто, как кажется на первый взгляд. Вот к примеру, вы говорите «пока не выйдет на функцию определенную в глобальном объекте. А в глобальном объекте есть свойство console». Так вот как именно это работает? Тут уже надо знать про BindingObject и все такое. Я вот не был уверен, что глобальный объект является частью этой цепочки скоупов до того, как специально залез в спецификацию и посмотрел (так впо��не могла быть отдельная (иная) обработка глобального объекта). И, на самом деле, есть определенныё исключения.

К примеру есть уникальный Lexical Environment, который называется «The Global Environment». И, иногда, особая работа с ним. Например, в спецификации есть прямые исключения:
Else if env is the environment record component of the global environment then


Более того, необходимо понимать такую важную вещь:
Lexical Environments and Environment Record values are purely specification mechanisms and need not correspond to any specific artefact of an ECMAScript implementation.


К сожалению я смог найти в спецификации, в какой момент присваивается для шапки цепочки Global Environment. Единственное, где это присутствует — это в пункте «15.3.2.1 new Function»:
Pass in the Global Environment as the Scope parameter and strict as the Strict flag.
.

В какой именно момент в начале цепочки становится Global Environment и становится ли такой вообще (или обрабатывается как исключение) в документации я не нашел(
+1
В общем вот что у меня получилось

Заголовок спойлера
8.2Realms

Before it is evaluated, all ECMAScript code must be associated with a realm.

Realm always contains
[[GlobalEnv]] Lexical Environment

8.1.2.5NewGlobalEnvironment ( G, thisValue )
When the abstract operation NewGlobalEnvironment is called with arguments G and thisValue, the following steps are performed:

Let objRec be a new object Environment Record containing G as the binding object.

So, GlobalEnv is Global Lexical Environment and has G as the binding object

When function called, it can access GlobalEnv with this steps:

9.2.1[[Call]] ( thisArgument, argumentsList ) —
9.2.1.1PrepareForOrdinaryCall

4. Let calleeContext be PrepareForOrdinaryCall(F, undefined)

9.2.1.1PrepareForOrdinaryCall ( F, newTarget )

8. Let localEnv be NewFunctionEnvironment(F, newTarget).

8.1.2.4NewFunctionEnvironment ( F, newTarget )

12. Set the outer lexical environment reference of env to F.[[Environment]].
...


Reference to identifier are getting with GetIdentifierReference method that can access outer lexical env with
8.1.2.1GetIdentifierReference ( lex, name, strict )

Return? GetIdentifierReference(outer, name, strict).
...


This way you can get data from global object from functions


За любые поправки буду благодарен… завтра :)
0
function makeFunc(name) {
        function displayName() {
        console.log("displayName=" + name);
    }
    console.log(name);
    return displayName;

};

var myFunc = makeFunc('moz1');
makeFunc('moz2');
myFunc();

Вот пример отлично иллюстрирующий замыкание.
Что же делает myFunc в первой строке? Она получает контекст для функции displayName(). Который точно такой же как и для name. Сама функция не запускается. Она запускается отложенно.


moz1
moz2
displayName=moz1

-2
Да тут дело даже не в иллюстрациях, а в понимании самого процесса замыкания в JS. Многие просто не понимают, что из себя представляет само замыкание в JS. В остальных языках — там всё это совсем по другому, и ясно и понятно. А в JS это баг изначально, и его не стали исправлять, а так и оставили, типа фишка языка. И вот теперь, кто-то додумывается использовать этот баг.

Суть ошибки замыкания в JS, что в нем нет типизированного вызова и обращения к свойствам объекта и к просто переменным. Сам интерпретатор решает к чему именно вы обращаетесь.
Вот вы указали базовый пример из справочника, и тут именно наглядно видно это. В момент, когда вы создали глобальный объект var myFunc = makeFunc… отработала внутренняя функция displayName создав замыкание и глобальный объект myFunc получил свойство name (в обычном языке myFunc->name).
Всё, функции makeFunc и displayName отработали, и все их внутренние переменные должны быть очищены, это везде так (и в JS это тоже так).
Но, в js, (так, как все функции являются объектами — гвоздь им в голову сразу и по шляпку) когда вы снова, после окончания работы функций пытаетесь обратиться к переменной name, интерпретатор, не имея типизации обращения, видит, что такое свойство есть у ныне существующего глобального объекта myFunc, а значит, вы, скорее-всего, к нему обращаетесь — он вам и возвращает это свойство этого объекта, и складывается впечатление, что якобы существует сама переменная name в памяти, после окончания работы функций.

Вот именно это и является проблемой — можно так дозамыкаться, что ПК пользователя просто перестанет отвечать на запросы. А также черт его знает в каком месте у вас нахлестнутся имена свойств объектов после замыкания и имена глобальных переменных, что приведет просто к разрыву башки при отладке такого кода. Вот поэтому, я жестко караю любого, за любую попытку этого х… кода в js, кто сознательно пытается использовать этот баг в js.

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

Вот мой код и код таких как я, сможет прийти и продолжить, или изменить, любая новая команда у клиента (и не важно нормальная ли команда, или команда чудо-разрабов). Им потребуется минимальное время, чтобы понять структуру кода и начать его исправлять, или дополнять. Никаких неявных петель и ловушек вроде таких вот чудо-замыканий, они не получат в моем коде, я даже никогда не делаю дубли в именовании явно-объявляемых переменных внутри функций, не говоря уже о том, чтобы произошел нахлест в глобальной области видимости.
-1
Главная ваша претензия к замыканиям в JS это то, что имена переменных могут пересекаться с другими областями видимости, а вам как программисту не хватит мозгов чтобы понять как этого избежать? Вы это серьезно?

А что касается кода — начните с того, что вы обещали показать код без замыканий и работающий. Где он в итоге то?
UFO landed and left these words here
+1
У вас какое-то очень странное представление о типизации и её связи с правилами скоупинга.
-1
Ну че, поздравляю вашего работадателя с наймом программиста, учившигося в википедии (мое сочувствие ему) :)

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

И да, не по викепилдии, а по документации языка и разработчиков (мозила):
Замыкание — это комбинация функции и лексического окружения, в котором эта функция была определен��.

А теперь вопрос супер-пупер программисту википедийному, eH001 — определена где? Внутри функции какой то? ИЛи на глобальном уровне вне окружения функций?

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

Замыкание — это комбинация функции и лексического окружения, в котором эта функция была определена.


Не могли бы вы сослаться на книгу, где вы это услышали, раз википедия не источник, хотелось бы тоже ознакомиться с данным кладезем мудрости? Кроме того, даже если по вашему определению, console откуда берется, не из глобального ли контекста?

Ну а то, что вы учились программировать по документации к устройствам — ну так и заметно, что ваши познания в программировании недалеко от примеров из методичек :)
+1
Вы бы внимательнее, что-ли, читали.

Понятия не имею, какие познания у вашего оппонента — для меня фронт и js страшные тёмные места, в которые я не суюсь, ибо квалификации не хватает, но у него прямо в комментарии написано, откуда он цитирует:
И да, не по викепилдии, а по документации языка и разработчиков (мозила):


И затем первый же запрос в яндекс «mozilla closure» выводит нас на нужный сайт, где именно так и написано определение.
-2
Т.е. человек мне приводит описание реализации замыканий в фаерфоксе, и выдает это за академическое определение.
Спасибо за разьяснение данного момента, все ясно.
-2
Собственно, больше склонен верить г-ну b00taNik, и именно потому, что сходил по ссылке — источнику знаний SemaIVVV.

Прямо оттуда:

функции в JavaScript формируют так называемые замыкания


И именно об этом говорит b00taNik, а SemaIVVV продолжает стоять на том, что это только у неучей, а его функции в его Javascripte никаких замыканий не формируют.
0
Код с циклом не заблокирует разве поток, что приведёт к заморозке всего интерфейса? Насколько я помню, xmlhttprequest всегда юзали вместе с коллбеком onLoad, который всегда был и асинхронный, и с замыканиями. Прошу поправить если не прав
-6
Не выставляйте себя клоуном — и не пишите больше сюда. Вы просто новичок и ниже джуниора.
fetch всего лишь обертка для XMLHTTPRequest, чтобы такие неумехи, как вы писали меньше букв, не понимая технологии запроса данных. Если вы не понимаете, как написать XMLHTTPRequest запрос с if else (и при необходимости, заюзать catch), как в вашем fetch-е — просто идите на курсы базовые по программированию что-ли.
UFO landed and left these words here
+2
Я слышу бекендеров вой
Я слышу фронтендеров плачь
Там где ты пишешь fetch
Я реализую через if и catch.

0

если условный фетч, который принимает колбек:


function helloLog(x) {
 console.log(x.json().hello);
}

fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed", helloLog);

Не очень хороший пример, тут не так велика разница. Вот если надо композить асинхронные действия — тут уже становится печальнее все эти helloLog-и писать :)

0
0

Ну вы бы указали тогда, как, на ваш взгляд, следовало по-русски написать.

0
Я понимаю вашу боль. У меня ощущение, что большая часть молодых разработчиков обучается по stackoverflow, а не по книгам. В итоге смотришь в task manager, а там приложение Upwork стабильно съедает 30-40% CPU. И это чат + трекер времени! С каких пор трекер времени требует столько ресурсов? Это если умножить на количество пользователей Upwork, то можно посчитать, сколько электроэнергии/угля сжигается от лени разработчиков писать эффективный код. Видимо, для получения меньшего числа в массиве сначала сортируется весь массив, потом берется первый элемент, не иначе.
+1
Скорее просто таймер времени поставлен в бесконечный цикл. Может даже несколько.
-5
Не ёрничайте, всем понятно что речь идет о замыканиях внутри старшей функции для попытки сделать приватными переменные, или сохранить значения переменных (хотя мне сложно понять для чего через ж… замыкания это пытаются делать).
UFO landed and left these words here
0
Вот это как раз без проблем. Ни в одном языке программирования не существует способа полностью спрятать приватные поля от программиста, всегда все держится на соглашениях вида «обращаться к чужим полям через рефлексию нехорошо». В старом JS такое соглашение просто расширяется до «обращаться к полям про которые в комментарии написано что оно приватное нехорошо».

А в современном JS уже есть символы и хотят ввести приватные поля.
0
В старом JS традиционально настоящие приватные поля проще всего делаются через замыкания. Это позволяет контролировать корректность обращения к ним с помощью самого интерпретатора.

Если программист с большим стажем не может оценить преимущества этого подхода, лично для меня это означает, что человек либо живет с «головой в песок» крайние 15 лет и никогда не программировал на языках с ООП, либо это сознательно, старая собака уже испытывает проблемы с новыми трюками.

Комментарии — это, пожалуй, самое отвратительное, что можно было придумать для выражения данной концепции. Поддержка такого кода будет адом. Если же очень нужно открыть поле наружу, но запретить публичное использование (эмуляция семантики protected-доступа из нормальных языков) — используют пре-/постфиксы для имени поля, что будет однозначной подсказкой даже в клиентском коде.
0
Тем не менее, инкапсуляция без замыканий все еще возможна, даже если большинство ее делает через замыкания.
0
Такой говнокод должен иметь весомые основания для существования) В той работе, которую делаю я, это возможно лишь в случае, который описан выше.
+1
Если программист с большим стажем не может оценить преимущества этого подхода, лично для меня это означает, что человек либо живет с «головой в песок» крайние 15 лет

То есть вы настаиваете на важности модификатора private, полностью игнорируя отсутствие иногда даже более важного модификатора protected и рассуждаете о «с головой в песок»?

Опытные программисты или используют JSDoc, где есть оба модификатора или уже давно ушли в TypeScript. А «инкапсуляция через замыкания» — не более, чем костыль для новичков.
0
полностью игнорируя отсутствие иногда даже более важного модификатора protected

Вы до конца прочли комментарий, на который отвечаете?

Темой беседы было не обсуждение преимуществ и недостатков как самого JS, так и других средств.
0

Похоже я проспал революцию, раз не вижу в сокрытии (особенно через замыкание) никакой пользы, но вижу кучу минусов. Не расскажите нам про эти преимущества?

0
В таком случае воздержитесь, пожалуйста, от голословных утверждений.
0
Начните, пожалуйста, с аргументации своей точки зрения прежде.
0
С чего бы? Я никаких безапелляционных тезисов не выдвигал, в отличие от.
0
Почему же безапелляционных? Если вы не согласны, то воспользуйтесь своим правом возразить (хотя бы поспорить с отсылкой на вики, что инкапсуляция не нужна или что ее лучше выражать иначе в этом чудном языке).
Без этого ваши попытки сдержать чужое личное мнение выглядят толсто.
+1
Ни в одном языке программирования не существует способа полностью спрятать приватные поля от программиста, всегда все держится на соглашениях вида «обращаться к чужим полям через рефлексию нехорошо».

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


Ну и в плюсах тоже для кода вроде


class Foo
{
    int x, y;
public:
    int getX() { return x; }
    int getY() { return y; }
};
0
Вангую аргументы про reinterpret_cast<int*>(Foo*). «Это же держится на соглашениях для С++-программистов!»
+3

Я такое решение тоже ванговал, и для него у меня есть котёл в аду ответ.


Это UB, а UB в программе на С++ не бывает, значит, это не программа на С++.

0
Нет, это не UB. Ведь по указанному адресу и правда находится int.
+2
Все равно UB, потому что нет в стандарте никаких гарантий на расположение полей, и завтра в этот класс компилятор вдруг напихает каких-нибудь внутренних структур байт на 20, и все развалится. Даже если оно у вас сейчас работает — это волшебство, а не C++.
0
Не может там не быть никаких гарантий — это бы сделало невозможным передачу структур между модулями на разных языках. Если даже таких гарантий нет в стандарте — они всегда есть в конкретных реализациях.
+2
Ну таковая передача на C++ невозможна по стандарту даже без разных языков. У языка не определен binary interface, и потому передавать приходится либо структуры из C (у которых таковой интерфейс есть), либо использовать сериализацию в промежуточные форматы вроде protobuf.
Если же использовать особенности конкретных реализаций, то это вновь волшебство, а не C++, потому что даже минорное обновление любого компонента компилятора может вам разломать все в самых неожиданных местах, и про котел в аду там выше не зря написано.
-1

Чем "структура из Си" отличается от класса без виртуальных функций? Насколько я знаю, extern "C" влияет только не функции и переменные, но не на структуры.


Да и с теми же виртуальными функциями все не так сложно. Да, смещение первого поля будет implementation-spicific, но подразумеваемое поведение компилятора можно проверить тестами, по типу таких: assert(reinterpret_cast<intptr_t>(&Foo::x) == sizeof(void*));


PS про котел в аду в целом согласен — вот только, в моем понимании, нарушителей соглашения по именованию приватных полей в javascript ждет соседний котел :-)

+3
Чем «структура из Си» отличается от класса без виртуальных функций?

Компилируется она, возможно, в тот же код (на самом деле нет, на результат влияют вещи куда более малозначимые, дарю как вопрос на собеседование мой любимый пример), но отличается, вообще говоря, много чем. POD, standard layout, trivially constructible/copyable/etc. Дело в семантике.


std::launder вон вроде бы тоже ничего не делает, а он есть.

+1
Отличается тем, что у нее размещение определено, выравнивание определено, и делать его по другому без явного на то указания компилятор не имеет права, и потому макросы вроде OFFSET_OF() и CR() до сих пор отлично работают. У класса (хоть с виртуальными функциями, хоть без) размещение не определено, точнее определяется реализацией, т.е. никто не мешает начать, к примеру, все поля тегировать (т.е. перед каждым полем вставить еще по полю с тегом), сам класс тегировать (вставить ему GUID вначале, чтобы за размещением экземпляров в памяти потом следить), и все это останется в рамках C++ (т.е. код на C++ работать не перестанет), а у вас либо reinterpret_cast вернет непонятно что, либо все завалится еще на ассертах.

Разница в том, где именно происходит проверка на то, что правила доступа не нарушаются, и в C++ она не происходит, потому что вы об этом просите явно очень заметной конструкцией (в Rust таковые еще заметнее), а в JS у вас и соглашение в голове, и проверка его там же, и найти таковые нарушения grep'ом просто так не получится.
+1
Это, возможно, не UB для доступа к первому полю (но я ещё не проверил все возможные источники UB, но ковыряться в семантике сравнения и преобразования указателей — так себе удовольствие, и я не очень понимаю, это не UB вообще или только для standard-layout-структур). Как насчёт остальных полей?
+1
Тоже UB и для первого поля, потому что никто не мешает включить sanitizer и memory mapper, который вместо первого поля во все классы воткнет свою структуру, и все полетит к черту.
+20

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

+3
Если в любом моем проекте, кто-то, хотя бы подумает использовать замыкание — сразу пойдет искать новую работу.

Вы понимаете, что, наверное, невозможно написать JS-код не создавая замыканий? Если вы умеете — научите меня, пожалуйста. Мне очень интересно
+8
Приходит новый русский в автосервис:
– Ну, что там, в натуре, с моим мерсом?
– Короткое замыкание.
– Нет базара, удлиняй!
UFO landed and left these words here
UFO landed and left these words here
+3
JS — асинхронный язык кстати. Но однопоточный. Типичный вопрос на собеседовании — почему js асинхронный. Который подразумевает, что вы знаете что такое EventLoop а если знаете, то как можно назвать его синхронным?

И то в новой nodejs уже ввели нативную подержку мультипоточности. Вам бы самому новую работу найти не помешало. :)
-1
А когда на senior-позицию приходят полные нули, что делать? Знакомый фронтендер периодически собеседует людей на позицию senior-ов. Люди говорят/пишут, что у них 3-5-10 лет опыта, но они не знают концепции замыканий.


Программирую еще с прошлого века.
Смотрю все пишут про какие-то умные замыкания. Не знаю этого термина.
Думаю, ну наверное некая умная концепция, может, буду использовать, пригодится. Надо почитать что это.
Читаю.
Ага. Использую, не зная как оно называется, уже лет 20 или поболее даже, оказывается.
Почему? Нас учили разным математическим моделям, а вовсе не тому как что называется в синтаксисе языка.

Внимание, вопрос:
Являюсь ли я недостойным должности сеньора, если 10 последних лет как проектирую highload-решения, которые держат высокие нагрузки на смешном железе?
+6
Если вам задают этот вопрос — бегите. Этот вопрос означает, что за 5 минут до интервью интервьюер загуглил «что спросить на собеседовании javascript». Во всех проектах, где на интервью меня спрашивали про замыкания, царил бардак и ужас.
UFO landed and left these words here
+6

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

-8
Программист не может не знать, что такое замыкание.

Есть отличная фраза — «Иногда 10 лет опыта — это один год, повторенный 10 раз».
В твоём случае это было 25 раз, только и всего.
-1
В твоём случае

Не подскажете, когда мы с Вами на брудершафт пили? А то я запамятовал.


Повторяю: концепция мне знакома, но никогда не возникало необходимости её с кему-то обуждать, соответственно узнать её "официальное" название — тоже; фразы "вон та вот х… рень" вполне хватало.

+3
А где-то есть список «Чего не может не знать программист»?
Было бы любопытно ознакомиться.
0

Осталось ещё программу Вербицкого по математике, и тогда вообще хорошо будет.

0
What Every Programmer Should Know About Memory
What Every Programmer Should Know About
Floating-Point Arithmetic


Держите и не благодарите. Когда это знаешь, то иногда получаешь х10 производительности, просто переставив порядок операций. С плавающей точкой аналогично — иногда, решая нелинейные уравнения, результат надо нормализовать по заданному эпсилону, чтобы случайно не взять sqrt(-1e-18), когда должен быть sqrt(0), и не получить nan во всех последующих результатах.
+3
Программист не может не знать, что такое замыкание.

То есть, по-вашему какой-нибудь крутой знаток ассемблера — «не программист», потому что он такое не использует и потому не знает?!
0

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

+1
Программисту следует реализовывать приложения, а не замыкания.
+1

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

0
Вы считаете, что знаток ассемблера обязан знать «замыкание», ибо это обязательно для написания трансляторов для JS?

Может он чем то другим занимается?

P.S. при упоминании ассемблера мы, несколько, отошли от JS.
0
> ибо это обязательно для написания трансляторов для JS?

При чем тут транспиляторы js? Сейчас замыкания есть практически в любом ЯП и знание того, как устроены замыкания — это примерно то же самое, что знание того, как устроены функциональные вызовы.
+1
Не хотелось бы продолжать, ибо не компетентен.
Но я всегда думал, что ассемблер-разработчикам, гораздо ближе hard нежели высокоуровневые языки программирования.
+1
Поддержу, современным разработчикам на ассемблере писать на них реализацию замыканий не нужно, и уже, скорее всего, не будет нужно.
На ассемблере сейчас пишут вещи, которые либо истинно зависимы от платформы (настройку таблиц трансляции памяти, запуск SGX-анклавов, разного рода хитрую математику с SSE 4.2, и т.п.), либо исполняются в атипичной вычислительной среде (программам на С и выше нужен стек, а если у вас стека нет вообще, потому что и основная оперативная память, и кэш второго уровня, который можно использовать как память, еще не инициализированы, а сам ваш код исполняется прямо из флеша).
В итоге замыкания что там, что там — нафиг не нужны, задач хватает и без них. Т.е. спросить про них конечно могут, и я бы ответил что-нибудь вроде «функция (часто анонимная, часто с параметрами) на языках высокого уровня, захватывающая либо переменные из контекста по списку, либо все вообще, которые ей видны», но сразу же задал бы контр-вопросы вроде «о каком ЯП идет речь, почему не используется обычная функция с параметрами, уверены, что вам оно надо». Написать их можно хоть на С, хоть на ассемблере, хоть в машинных кодах прямо, но это справедливо для любого кода вообще, но за попытку использования такого кода в бою вам, скорее всего, ваши же коллеги голову и оторвут.
0
разного рода хитрую математику с SSE 4.2

Нижайше прошу пардону, но таки уже с AVX 512…
0
И с ним тоже, главное не забыть у CPUID спросить поддержку, а то можно вместо хитрой математики словить #UD.
0
за те самые 25 лет мне не требовалась ни разу

Ну бывает. Опыт-то он у всех разный. Например, в C++ и в Java такого фактически нет.
Я вот до знакомства с питоном тоже не знал что это и не использовал. В питоне же, изучая исходники библиотек, столкнулся — там это используется в написании декораторов. В js же вообще повсеместно (особенно раньше), в силу специфики языка.
Но вообще, до знакомства с тем же питоном я и о других вещах, вроде генераторов или метапрограммирования, тоже не знал. Так что полезно иногда изучать разные языки, так как многие из паттернов, подходов и концепций, почти отсутствующих в одном языке, в другом могут быть чуть ли не основным подходом.

0
Я тоже… Недавно узнал, что это теперь используется в новом PHP, когда пришлось немного адаптировать старый вики-движок. Ну, точнее, это там называется «анонимные функции».
0
В php вроде, как раз нету замыкания. То есть анонимные функции там, вроде, не замыкаются на родительский скоуп, а все необходимые данные им передаются как особые аргументы через use
0

А откуда они там берутся, в этом use? Уж не из родительского ли скоупа?

0
Я точно не знаю, могу ошибаться, как реализовано в PHP, но мне кажется, что там не через замыкание.
+1
Они наследуются из родительской области видимости. Вся разница с тем же js в том, что в js переменные захватываются автоматически по факту использования, а в php список захватываемых переменных указывается вручную.

Кстати, в языке c++ реализованы оба механизма.
0
Я думал, что они именно привязываются к функции, как аргументы и такого прикола, как в JS быть не может.

for ($i = 0; $i < 10; $i++) {
  $button->onclick = function () use ($i) {
    echo $i;
  };
}

То есть это не замыкание на родительский скоуп, а именно захват переменных в свой, при чем именно во время создания функции. Но я могу ошибаться, т.к. на php не писал с 5.3

То есть доступа в родительский скоуп (сообстно замыкания) во время работы функции нету, просто в локальной области видимости есть дополнительные переменные
0
Да, прикола тут не будет, потому что переменная захватывается по значению. Но если поставить знак & — то она будет захвачена по ссылке со всеми последствиями.
0
Ну то есть будет захвачена ссылка на переменную. А замыкания на родительский скоуп все-равно не будет?
0
А что такое, по-вашему, «замыкание на скоуп» и чем оно отличается от замыкания, захватившего переменные этого скоупа?
0
Ну я представляю приблизительно так.
В JS и C# есть доступ к скоупу вне функций.
А в php клонируется или переменная, или ссылка на область памяти с ней.
0
for ($i = 0; $i < 10; $i++) {
  anotherFunction( &$i );
}


Тут ведь нет замыкания? Вот тот пример ближе к этому.
0
Нету. Потому что переменная передана параметром, а не захвачена. А в вашем примере c use она именно что была захвачена.
0
Вот я считаю, что с use ближе к передаче параметром, чем к захвату.
0
Каким образом оно «ближе»? Параметры передаются при вызове, а переменные захватываются при создании замыкания.
0
Там вообще написано, что Анонимная функция и Замыкание — это синонимы. Ну да ладно, это не принципиально. Не хочу спорить
+1
Всякое замыкание — анонимная функция, но не всякая анонимная функция — замыкание ;)
0
ну изначально речь шла о приватной статической переменной, вот в php для этого замыкание и всяческие use не нужны
0
Например, <...> в Java такого фактически нет

В Java есть замыкания, вот пример:


public static final String VALUE = "VALUE";

public static Callable<String> myMethod() {
    // Или так:
    //   return () -> VALUE;
    return new Callable<String>() {
        @Override
        public String call() {
          return VALUE;
        }
    };
}

Тут и области видимости, и всё остальное соответствующее. До выхода Java 8 их просто сравнительно мало кто писал (причину видно по разнице между кодом в комментарии и вне комментария), да и после Java 8 официальное название этого подходя — capturing lambda, хотя по факту это таки практически один в один замыкание.

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

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

Но ведь бинд в js как раз не замыкание возвращает, лол. Т.к. в "просто замыканиях" this связывается динамически.

0
Полифил метода Function.prototype.bind() не возвращает замыкание. Он возвращает функцию, которая исполняется в контексте для которого применяется замыкание.

Суть реализации полифила метода bind() — замыкание контекста исполнения передаваемой ему функции.
+1
Разговор был про virtual. А если подойдет прохожий и скажет, что virtual это способ организовать перегрузку функции (методов) в рантайм с помощью таблиц в памяти, из-за ограниченности императивных ЯП?! Вы ему поверите? Да, ни смотря ни на что, они тоже стремятся к полиморфизму. А замыкания это просто поглощение значении переменных из внешней области переменных, которое на разных ЯП может быть по разному?

Пусть автор не сдается, собеседование это всего лишь этап.
0
Нормальные ответы, несмотря на кривой русский. Можно беседовать дальше.
+8
Во-первых, когда вы сами начнёте нанимать людей в нормальную контору, то увидите, как много непонятно кого пытаются правдами и неправдами попасть к вам. И если вы не знаете другого способа отсеивать фуфло, то вы тоже будете задавать тупые вопросы.

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

Ну и в целом не понимаю, почему у вас (в смысле у тебя и у ТС) бомбит. Если вы считаете, что подобные вопросы на собеседовании есть показатель того, что компания вам не подходит — ну так хорошо же, что вы сразу это понимаете. Лучше ведь на первом собеседовании увидеть, что вам с компанией не по пути, а не через полгода работы.
0
Во-первых, когда вы сами начнёте нанимать людей в нормальную контору, то увидите, как много непонятно кого пытаются правдами и неправдами попасть к вам. И если вы не знаете другого способа отсеивать фуфло, то вы тоже будете задавать тупые вопросы.


Статья о том, что таким способом наиболее эффективно отсеиваются как раз лучшие разработчики. А вот фуфло и так дорогу найдет, не замыканиями, так другими фокусами.
+1
Статья о том, что таким способом наиболее эффективно отсеиваются как раз лучшие разработчики.
Никаких доказательств данного тезиса в статье нет. Нет оснований полагать, что данные вопросы станут проблемой для лучших разработчиков. То, что они стали проблемой для автора никак не может быть без особых причин экстраполировано на лучших разработчиков.
0
Меня больше трясет от банальных зубрильных вопросов про особенности js при работе с var, конструкциями вида (...)(), в современном мире, где я использую только let, const (преимущественно). Я понимаю, что я должен знать что такое замыкание, я знаю что это но хоть убейте не могу рассказать как требуют, но точно знаю как избегать ошибок, связанных с этим.

От вопросов —
var a = b = 3
трясет дико, вообще против таких присваиваний и использую standard стиль кода, но зачем-то должен знать, хотя в вакансии явно указано ES6.
0
От вопросов —

На такие вопросы надо отвечать, что этот код ничего не делает, потому что здоровыми людьми не пишется, а значит, его нет, а если кода нет — то он ничего делать и не может!

+1
Не в тему программирования, но тоже по ИТ. У нас было пару случаев по собеседованию на сис.админа:
1. Человек много всего красивого написал в резюме, в том числе установка CISCO. Угадайте как он их устанавливал? Правильно, брал руками и заталкивал в серверный шкаф.
2. Человек превосходно описал всё чем занимался, какие проекты сделал, свои достижения и прочая. Всё было замечательно до того момента, пока случайно из области бреда не стали спрашивать элементарных вещей про IP адрес, маску, маршрутизацию и прочая.

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

Особенно умиляют вопросы синьоров по Java — «а зачем нам знать как работает Garbage Collector?». А потом бегут с криками — нам надо еще 32 Гб ОЗУ — нам не хватает!
+2
Особенно умиляют вопросы синьоров по Java — «а зачем нам знать как работает Garbage Collector?». А потом бегут с криками — нам надо еще 32 Гб ОЗУ — нам не хватает!

А можно кейс, в котором знание алгоритма гц джавы поможет в том случае, когда 32гб не хватает?

0