JetBrains
От: AlexRK  
Дата: 14.04.16 16:11
Оценка:
Уважаемые коллеги!

Вопрос: насколько трудно пройти собеседование в JetBrains (в Москве)? Насколько глубокие навыки требуются? Есть ли шанс не у мега-гуру?
Re: JetBrains
От: mgu  
Дата: 14.04.16 18:03
Оценка: 1 (1) +3 -1 :)
Здравствуйте, AlexRK, Вы писали:

ARK>Вопрос: насколько трудно пройти собеседование в JetBrains (в Москве)? Насколько глубокие навыки требуются? Есть ли шанс не у мега-гуру?


Обычная компания мечты с низкой зарплатой и типичными закидонами со знанием наизусть всех 26 параметров в функции в версии 69-бис. Шанс, как и везде в подобных конторах, определяется нулевыми девиациями от нормы: возраст, ортодоксальные технологии, где (не как!) работал до этого. Вакансии с обращением на "ты" как бы намекают. Запись в трудовой JetBrains откроет бронированные двери отделов кадров в прочих яндексах.
Re: JetBrains
От: andrey.t  
Дата: 14.04.16 18:11
Оценка:
Здравствуйте, AlexRK, Вы писали:

Лет 5 назад тут знатные разборки с одних из их инженеров были, по поводу тестового задания, которое тот проверил как-то поверхностно — заминусили инженера знатно и темку ту аж приятно вспомнить
Re[2]: JetBrains
От: AlexRK  
Дата: 14.04.16 18:36
Оценка:
Здравствуйте, mgu, Вы писали:

ARK>>Вопрос: насколько трудно пройти собеседование в JetBrains (в Москве)? Насколько глубокие навыки требуются? Есть ли шанс не у мега-гуру?


mgu>Обычная компания мечты с низкой зарплатой и типичными закидонами со знанием наизусть всех 26 параметров в функции в версии 69-бис.


Ну фиг знает, для меня зарплата не такая уж низкая. Хотя может я не те вакансии смотрю....
Re[2]: JetBrains
От: AlexRK  
Дата: 14.04.16 18:38
Оценка:
Здравствуйте, andrey.t, Вы писали:

AT>Лет 5 назад тут знатные разборки с одних из их инженеров были, по поводу тестового задания, которое тот проверил как-то поверхностно — заминусили инженера знатно и темку ту аж приятно вспомнить


Думаю, такие разборки бывают с любыми мало-мальски крупными компаниями, да и 5 лет срок немаленький. Но все равно любопытно, а как эта тема называлась, не помните?
Re[3]: JetBrains
От: mgu  
Дата: 14.04.16 18:41
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Ну фиг знает, для меня зарплата не такая уж низкая. Хотя может я не те вакансии смотрю....


На те, на те.

Замануха -> опускание на интервью -> трудоустройство в качестве юниора.
Re[4]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 14.04.16 20:17
Оценка: -1 :)
Здравствуйте, mgu, Вы писали:

mgu>Замануха -> опускание на интервью -> трудоустройство в качестве юниора.

Дату и имя проводившего собеседование назовете? Или это от большого желания что-нибудь ляпнуть?

Я не знаю ни одного случая, когда бы делался оффер на сумму меньшую, чем обсуждалось. Бывали случаи когда мнения соискателя и интервьера по поводу квалификации первого разнились. Обычно такое заканчивается объяснением мнения интервьюера и отказом.
Re: JetBrains
От: noone  
Дата: 14.04.16 20:21
Оценка: +1
Здравствуйте, AlexRK, Вы писали:

ARK>Вопрос: насколько трудно пройти собеседование в JetBrains (в Москве)? Насколько глубокие навыки требуются? Есть ли шанс не у мега-гуру?


Никакого общего подхода нет — содержание собеседования полностью зависит от команды, в которую собрался. Москва теоретически может быть минусом, т.к. обычно коллектив уже разделен между СПб/Мюнхеном и дробить дальше уже не хочется. Впрочем, и в московском офисе люди работают, т.е. это точно не фатальная проблема.
Отредактировано 14.04.2016 20:22 noone . Предыдущая версия .
Re[5]: JetBrains
От: AlexGin Беларусь  
Дата: 15.04.16 17:03
Оценка: +1 :)
Здравствуйте, qxWork, Вы писали:

W>Я не знаю ни одного случая, когда бы делался оффер на сумму меньшую, чем обсуждалось. Бывали случаи когда мнения соискателя и интервьера по поводу квалификации первого разнились. Обычно такое заканчивается объяснением мнения интервьюера и отказом.

Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.
Работодателей — относительно мало, вакансий — также относительно немного.
Соискателей — пруд пруди (больше, чем когда либо)...
Re[6]: JetBrains
От: Dziman США http://github.com/Dziman
Дата: 15.04.16 17:18
Оценка: +1
Здравствуйте, AlexGin, Вы писали:

AG> W>Я не знаю ни одного случая, когда бы делался оффер на сумму меньшую, чем обсуждалось. Бывали случаи когда мнения соискателя и интервьера по поводу квалификации первого разнились. Обычно такое заканчивается объяснением мнения интервьюера и отказом.


AG> Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

AG> Работодателей — относительно мало, вакансий — также относительно немного.
AG> Соискателей — пруд пруди (больше, чем когда либо)...

Это просто смешно
avalon 1.0rc3 build 430, zlib 1.2.5
Re[6]: JetBrains
От: GarryIV  
Дата: 15.04.16 17:22
Оценка: +1 -1
Здравствуйте, AlexGin, Вы писали:

AG>Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

AG>Работодателей — относительно мало, вакансий — также относительно немного.
AG>Соискателей — пруд пруди (больше, чем когда либо)...

А рекрутер нашей конторы намедни жаловался на недостаток кандитатов на рынке. Как же так?
WBR, Igor Evgrafov
Re[7]: JetBrains
От: AlexGin Беларусь  
Дата: 15.04.16 18:32
Оценка: +1
Здравствуйте, уважаемый GarryIV, Вы писали:

GIV>А рекрутер нашей конторы намедни жаловался на недостаток кандитатов на рынке. Как же так?

Сразу же пару вопросов:
Что такое "Ваша контора"? Где она территориально находится?
Возможно еще пару вопросов:
Что курит Ваш рекрутёр? В каком времени он живёт?
Re[5]: JetBrains
От: mgu  
Дата: 15.04.16 18:33
Оценка: 6 (1)
Здравствуйте, qxWork, Вы писали:

mgu>>Замануха -> опускание на интервью -> трудоустройство в качестве юниора.

W>Дату и имя проводившего собеседование назовете? Или это от большого желания что-нибудь ляпнуть?

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

Имя проводившего собеседование я не помню, да это и не важно, ибо тот человек просто выдал мне вопросник с вариантами ответов. Автор же того опуса не оставил своего факсимиле. Формат вопросов намекает на вечное студенчество.

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

W>Я не знаю ни одного случая, когда бы делался оффер на сумму меньшую, чем обсуждалось. Бывали случаи когда мнения соискателя и интервьера по поводу квалификации первого разнились. Обычно такое заканчивается объяснением мнения интервьюера и отказом.


Прекрасный пассаж, только подтверждающий моё мнение о подобных конторах:

1) интервьюер (почти) всегда прав;
2) мнение соискателя тот может засунуть себе в порт вывода;
3) случаи, когда соискатели в шоке от квалификации интервьюера, даже не замечаются, ибо см. п. 1).
Re[7]: JetBrains
От: mgu  
Дата: 15.04.16 18:37
Оценка: +1
Здравствуйте, GarryIV, Вы писали:

GIV>А рекрутер нашей конторы намедни жаловался на недостаток кандитатов на рынке. Как же так?


Это потому что ваш рекрутёр путает Java и JavaScript, вот соответствующие кандидаты и не могут ответить на "элементарные вопросы", почерпнутые на ближайшем говнофоруме.
Re[7]: JetBrains
От: AlexGin Беларусь  
Дата: 15.04.16 18:40
Оценка:
Здравствуйте, уважаемый Dziman, Вы писали:

AG>> Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

AG>> Работодателей — относительно мало, вакансий — также относительно немного.
AG>> Соискателей — пруд пруди (больше, чем когда либо)...

D>Это просто смешно


Да, смешно, что программеров готовят во многих вузах, и даже без вузов — просто на всяких курсах,
поэтому в поиске работы присутствует масса всевозможных кандидатов.
Вопрос об их уровне подготовки — вынесем за скобки.
Факт в том, что на рынке труда много дешёвых программистов.

Да, смешно, что количество рабочих мест сокращается, так как ведущие игроки рынка стремятся уйти с пост-советской
территории (Россия, Беларусь) в Индию, где они более уверены в политической стабильности (качество кода — дело сотое).
Ведущих игроков — более интересует политика, чем технические тонкости.
Re[8]: JetBrains
От: mgu  
Дата: 15.04.16 18:43
Оценка: +1 :)
Здравствуйте, AlexGin, Вы писали:

GIV>>А рекрутер нашей конторы намедни жаловался на недостаток кандитатов на рынке. Как же так?

AG>Сразу же пару вопросов:
AG>Что такое "Ваша контора"? Где она территориально находится?
AG>Возможно еще пару вопросов:
AG>Что курит Ваш рекрутёр? В каком времени он живёт?

Да ничего он не курит, он же деревянный. Схема же найма такая: сбегает специалист, на его место ищут нового, а требования составляются копированием навыков старого. А потом борются с теорией вероятности.
Re[6]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 15.04.16 19:06
Оценка: 2 (1) +6 -3 :)
Здравствуйте, mgu, Вы писали:

W>>Дату и имя проводившего собеседование назовете? Или это от большого желания что-нибудь ляпнуть?

mgu>Имя проводившего собеседование я не помню, да это и не важно, ибо тот человек просто выдал мне вопросник с вариантами ответов. Автор же того опуса не оставил своего факсимиле. Формат вопросов намекает на вечное студенчество.
То есть пруфа не будет. Я так и думал, что это пук в муку.

mgu>1) интервьюер (почти) всегда прав;

mgu>2) мнение соискателя тот может засунуть себе в порт вывода;
mgu>3) случаи, когда соискатели в шоке от квалификации интервьюера, даже не замечаются, ибо см. п. 1).
Ну почему же, я внимательно читаю ваши пассажи и рыдаю каждый раз от того, как вы прекрасны, а собеседующие нет. Правда, я знаю лично тех, кто собеседует в JetBrains, и у меня нет сомнений в их квалификации, а вас не видел не разу. Какие у меня основания им не доверять?
Re: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 15.04.16 19:23
Оценка:
Здравствуйте, AlexRK, Вы писали:

ARK>Вопрос: насколько трудно пройти собеседование в JetBrains (в Москве)? Насколько глубокие навыки требуются? Есть ли шанс не у мега-гуру?

Я знаю много успешных примеров
Детали, как верно заметил кто-то ниже, зависят от команды и конкретной вакансии. В случае IDE-проектов иметь представление о базовых алгоритмах и структурах данных, а также понимание как писать многопоточный код необходимо. Теория графов и интерес к фунциональному программированию желательны.
Можно написать мне лично (qx на корпоративном домене) и задать вопросы, можно откликнуться на вакансию стандартным образом.
Re[7]: JetBrains
От: mgu  
Дата: 15.04.16 19:54
Оценка:
Здравствуйте, qxWork, Вы писали:

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


W>>>Дату и имя проводившего собеседование назовете? Или это от большого желания что-нибудь ляпнуть?

mgu>>Имя проводившего собеседование я не помню, да это и не важно, ибо тот человек просто выдал мне вопросник с вариантами ответов. Автор же того опуса не оставил своего факсимиле. Формат вопросов намекает на вечное студенчество.
W>То есть пруфа не будет. Я так и думал, что это пук в муку.

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

mgu>>1) интервьюер (почти) всегда прав;

mgu>>2) мнение соискателя тот может засунуть себе в порт вывода;
mgu>>3) случаи, когда соискатели в шоке от квалификации интервьюера, даже не замечаются, ибо см. п. 1).
W>Ну почему же, я внимательно читаю ваши пассажи и рыдаю каждый раз от того, как вы прекрасны, а собеседующие нет.

То есть вы даже не допускаете такой возможности?

W>Правда, я знаю лично тех, кто собеседует в JetBrains, и у меня нет сомнений в их квалификации, а вас не видел не разу. Какие у меня основания им не доверять?


А как вы оцениваете их квалификацию? По собственной? То есть вы достигли совершенства? А вдруг нет?

Сейчас посмотрел вакансии JetBrains, ни одной с опытом 6+ лет. Конечно, когда собеседуешь юношей, чувствуешь себя небожителем.
Re[2]: JetBrains
От: mgu  
Дата: 15.04.16 20:09
Оценка:
Здравствуйте, qxWork, Вы писали:

W>Детали, как верно заметил кто-то ниже, зависят от команды и конкретной вакансии. В случае IDE-проектов иметь представление о базовых алгоритмах и структурах данных, а также понимание как писать многопоточный код необходимо. Теория графов и интерес к фунциональному программированию желательны.

W>Можно написать мне лично (qx на корпоративном домене) и задать вопросы, можно откликнуться на вакансию стандартным образом.

Простите, а первоначальный фильтр будет таким: https://career.ru/vacancy/16687310 ?
Re[8]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 15.04.16 20:11
Оценка: +5 -3 :)
Здравствуйте, mgu, Вы писали:

mgu>Надеюсь, что вы понимаете, что мальчик, которому поручили выдавать вопросники, ни в чём не виноват. Если же вы хотите по дате установить мою личность, то я бы не хотел раскрываться, ибо рано или поздно нынешних специалистов по "алгоритмам и структурам данных" (тм) разгонят, и возникнет потребность во взрослых дядях. Тогда на собеседовании я попрошу назвать фамилию автора вопросника, а если откажутся -- заявлю про "пук в муку".

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

mgu>А как вы оцениваете их квалификацию? По собственной? То есть вы достигли совершенства? А вдруг нет?

Я определенно совершенства не достиг, но немножко умею и программировать и руководить программистами. По крайне мере так считает мой работодатель, а продукт, который делает моя команда, более чем неплохо продается.
Re[8]: JetBrains
От: so5team https://stiffstream.com
Дата: 15.04.16 20:40
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Да, смешно, что количество рабочих мест сокращается, так как ведущие игроки рынка стремятся уйти с пост-советской

AG>территории (Россия, Беларусь) в Индию, где они более уверены в политической стабильности (качество кода — дело сотое).

Видимо поэтому аутсорсеры в РБ цветут и пахнут (те же ЕПАМ и iTransition постоянно в поиске людей). И зарплаты ИТ-шников в РБ за последнее время разогнали так, что заказы могут уходить в Индию тупо по экономическим соображениям.
Re[9]: JetBrains
От: mgu  
Дата: 15.04.16 21:28
Оценка: 3 (1) +3
Здравствуйте, qxWork, Вы писали:

W>Да я уж было думал и правда кто-то косячит на собеседованиях, и надо с этим что-то делать...

W>А у нас тут взрослый дядя — анонимный интернет-воин, который точно знает, что цель JetBrains заплатить соискателю вдвое меньше любой ценой. Да еще и желательно унизить его, а то как он посмел придти на собеседование.

И имя нам легион:

ИМХО, контора имеет всех необходимых людей и в фоновом режиме ищет "гения, способного выдать в 10 раз больший результат за миску досирака". Если они такого гения найдут (с вероятностью 1e-10, ага), то уволят кого-нибудь из штатных программистов и возьмут на его место гения (одна миска-то дешевле двух).

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


http://rsdn.ru/forum/job/4046719.1
Автор: пыщьх
Дата: 21.11.10


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

W>Я определенно совершенства не достиг, но немножко умею и программировать и руководить программистами. По крайне мере так считает мой работодатель, а продукт, который делает моя команда, более чем неплохо продается.




Если вам действительно интересен вопрос "Да я уж было думал и правда кто-то косячит на собеседованиях, и надо с этим что-то делать...", предлагаю заслать собственное резюме в JetBrains.
Re[9]: JetBrains
От: AlexGin Беларусь  
Дата: 15.04.16 23:53
Оценка:
Здравствуйте, so5team, Вы писали:

S>Видимо поэтому аутсорсеры в РБ цветут и пахнут (те же ЕПАМ и iTransition постоянно в поиске людей).

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

S>И зарплаты ИТ-шников в РБ за последнее время разогнали так, что заказы могут уходить в Индию тупо по экономическим соображениям.

Уходят в Индию также (и вероятнее) по политическим соображениям: РБ рассматривают как партнера России, а так как имеют
место санкции против России, то особо не расширяют бизнес и по РБ.
Re[10]: JetBrains
От: mgu  
Дата: 16.04.16 00:13
Оценка: -1 :)
Здравствуйте, AlexGin, Вы писали:

AG>Уходят в Индию также (и вероятнее) по политическим соображениям: РБ рассматривают как партнера России, а так как имеют

AG>место санкции против России, то особо не расширяют бизнес и по РБ.

Идея: вам далеко до литовской границы? А то я слышал, что Литва обезлюдела (це ж Европа).
Re[4]: JetBrains
От: _ABC_  
Дата: 16.04.16 06:24
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Замануха -> опускание на интервью -> трудоустройство в качестве юниора.

Или, как вариант, по возрасту ожидают увидеть рассудительного мужчину с опытом и умением и зовут собеседоваться
на определенную позицию, а приходит некто, которого собеседовать только на джуниора и остается, да и то под
вопросом, т.к. гонору много, а предложить может мало.
Re[6]: JetBrains
От: _ABC_  
Дата: 16.04.16 06:26
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

Резюме-то переделал хотя бы? Или так и бьешься головой об стену?
Re[10]: JetBrains
От: so5team https://stiffstream.com
Дата: 16.04.16 07:05
Оценка: -1 :)
Здравствуйте, AlexGin, Вы писали:

S>>Видимо поэтому аутсорсеры в РБ цветут и пахнут (те же ЕПАМ и iTransition постоянно в поиске людей).

AG>Это только впечатление, создаваемое за счет рекрутиноговых контор. Одну и ту же вакансию "промусолят" по 10 (и более) раз

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

S>>И зарплаты ИТ-шников в РБ за последнее время разогнали так, что заказы могут уходить в Индию тупо по экономическим соображениям.

AG>Уходят в Индию также (и вероятнее) по политическим соображениям: РБ рассматривают как партнера России, а так как имеют
AG>место санкции против России, то особо не расширяют бизнес и по РБ.

Откуда дровишки? Политические соображения передачи проектов от аусорсеров РБ аутсорсерам Индии, как я слышал, заключались в том, что со стороны заказчика власть оказывалась в руках выходцев из Индии. А они инициируют перевод проекта в Индию из соображений землячества умело используя фактор разницы в стоимости (т.е. уже несколько лет стоимость разработки здесь выше, чем в Индии).

На волне санкций против РФ в РБ заказов, как я слышал, стало даже больше. В том числе и из-за того, что в РБ создаются компании-прокси, от имени которой заключается контракт с западным заказчиком, разработка при этом остается в РФ.

Так что ваши проблемы с поиском работы в Минске(!) объясняются (не)релевантностью вашего опыта текущим реалиям и, с большой степенью вероятности, вашей (не?)адекватностью в оценке ситуации.
Re[7]: JetBrains
От: itslave СССР  
Дата: 16.04.16 08:01
Оценка:
Здравствуйте, Dziman, Вы писали:

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


AG>> Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

AG>> Работодателей — относительно мало, вакансий — также относительно немного.
AG>> Соискателей — пруд пруди (больше, чем когда либо)...

D>Это просто смешно

тут рядом целый топик
Автор: AlexGin
Дата: 05.04.16
на эту тему
Re[8]: JetBrains
От: itslave СССР  
Дата: 16.04.16 08:03
Оценка:
Здравствуйте, mgu, Вы писали:

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


GIV>>А рекрутер нашей конторы намедни жаловался на недостаток кандитатов на рынке. Как же так?


mgu>Это потому что ваш рекрутёр путает Java и JavaScript, вот соответствующие кандидаты и не могут ответить на "элементарные вопросы", почерпнутые на ближайшем говнофоруме.

Вы реально обсуждаете технические вопросы с рекрутерами??
Мне такие лет 5 уже не попадались, раньше я стандартно отвечал "давайте мы обсудим технические вопросы с вашими инженерами на собеседовании"
Re[8]: JetBrains
От: itslave СССР  
Дата: 16.04.16 08:07
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Да, смешно, что количество рабочих мест сокращается, так как ведущие игроки рынка стремятся уйти с пост-советской

AG>территории (Россия, Беларусь) в Индию, где они более уверены в политической стабильности (качество кода — дело сотое).
AG>Ведущих игроков — более интересует политика, чем технические тонкости.
Рекомендую переквалифицироваться в управдомы — вот тут уж точно индусы конкуренцию не составят
Re[2]: JetBrains
От: elmal  
Дата: 16.04.16 08:57
Оценка: 11 (3) +1
Здравствуйте, qxWork, Вы писали:

W>Детали, как верно заметил кто-то ниже, зависят от команды и конкретной вакансии. В случае IDE-проектов иметь представление о базовых алгоритмах и структурах данных, а также понимание как писать многопоточный код необходимо. Теория графов и интерес к фунциональному программированию желательны.

Чет у меня сомнения. Ибо у меня представления о базовых алгоритмах и структурах данных по крайней мере по остаточным знаниям достаточно неплохие и судя по всему сильно лучше, чем на рынке. Ибо, например, найти человека, который про радикс сорт что то слышал 1 человек из 50. В том числе и те, кто собеседуют, обычно про радикс сорт не слышали. А если еще попробовать поговорить про параллельный радикс сорт и вообще про параллельное программирование, будет совсем печально . Алгоритм дейскстры хотя бы назвать может один из 20 (это обычно увлекающиеся олимпиадным программированием), про беллмана форда вообще ни одного кандидата не встречал чтоб упомянул когда либо. Про третий мне когда то известный по поиску кратчайших путей я сам забыл как называется, но он параллелится. Вроде бы основы это все, но хотя бы про это слышали только те, у кого в резюме написано про олимпиадное программирование. У типичного кандидата с алгоритмами максимум ассоциируется бинарный поиск, уже обход дерева в ширину будет что то нереальное. Про структуры данных тоже несколько лет мог много чего экзотического рассказать, например про trie и тому подобное, еще не все забыл, но если нужно могу повторить. На практике мне 2 раза топологическую сортировку доводилось реализовывать в разных местах, хоть и не оптимально и это я писал на 5 минут. Так что в теории вроде ну явно имею представление об алгоритмах и структурах данных, хоть это и остаточные знания.

Про многопоточность я конечно скажу не то, что вы ожидаете. Ибо я скажу что многопоточный код надо писать так, чтоб о потоках не думать . Никаких локов в основном коде быть не должно, и вообще всю многопоточность желательно организовывать по аналогии эрланговской актор модели, и сейчас я бы выбрал для этого такие фреймворки как Akka или vert.x (если говорить про корпоративные системы, для IDE естественно это черти какой оверхед будет). А так, лет 5 назад Java Concurrency In Practice я прочитал, но так как не использовал знания (вернее использовал, лет 6 назад, в библиотеках, которые помогали не заботиться в основном коде ни о какой многопоточности и синхронизациях по крайней мере явно), сейчас уже весьма мало помню.

В своей жизни я писал где то около пяти различных DSL. Недавно писал вообще математическую DSL, представляющую из себя полноценный интерпретатор, еще в функциональном стиле, с AST преобразованиями и т.д, правда по каркасу из книги SICP. По идее тоже могло бы быть вам интересно и в работе востребовано

Это я к тому, что не совсем блондинко и быдлокодер. Хоть и мозги работают не всегда хорошо, у многих со скоростью мышления гораздо лучше.

Так вот, я 5 раз отправлял резюме в JetBrains и все 5 раз мне ответили что мы внимательно ознакомились и если потребуюсь, то со мной свяжутся. Причем когда я отправлял, я как раз был в неплохой форме для бесед про алгоритмы и структуры данных, мог бы и про лексеры поговорить, и про парсеры, и как это делать в лоб, и как можно применять языки типа Prolog и т.д. Самый большой прикол был где то полтора года назад. Когда со мной HR действительно связались. Я сказал да, я хочу пособеседоваться и очень сильно рассматриваю вакансию. Сказал что готов сделать тестовое задание, готов собеседоваться на остаточных знаниях при условии нормального фидбека что мне следует подтянуть и тому подобное. После чего мне приходит ответ, что мы не готовы пригласить вас на собеседование, так как у меня не релевантный опыт, а у них есть кандидат на финальной стадии.

На остаточных знаниях я да, не пройду 100 процентов. Ибо работаю сейчас с одним, которого зарезали на финальной стадии — он там внутренности JVM очень хорошо знает и на прохождение интервью заточен идеально, хоть и акцентирован исключительно на Java и с кругозором не сильно хорошо. Но кругозор на интервью интересует наверно только меня, 90 процентов интересует знания типовых вещей вроде какие оптимизации применяются внутри JVM, бага по поводу substring в Java < 1.7 и тому подобное . Соответственно для более менее приличного результата мне нужно во первых освежать знания, во вторых потренироваться предварительно на кошках, и где то после пятого собеседования я выйду на приличный уровень, который продержится месяца 3 до забывания.

Но факт в том, что я не представляю, кем нужно быть, чтоб с улицы без знакомств как то проскочить в JetBrains. Только если по распределению из ВУЗа специального, начиная с юниорской стадии.
Re[10]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 16.04.16 09:34
Оценка: :)
Здравствуйте, mgu, Вы писали:

Вы меня убедили. Я профнепригоден, продукты JetBrains мало кому нужны и еще меньше людей их покупает. Сама компания стоит на грани финансовой пропасти и рухнет в нее не сегодня-завтра. И лишь взрослый дядя mgu в сияющих доспехах может ее спасти. Печальная перспектива.
Re[7]: JetBrains
От: AlexGin Беларусь  
Дата: 16.04.16 10:22
Оценка:
Здравствуйте, уважаемый _ABC_, Вы писали:

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


AG>>Теперь, когда имеет место Диктат Работодателя — всё это — в порядке вещей.

_AB>Резюме-то переделал хотя бы? Или так и бьешься головой об стену?

Резюме обновил — добавил слова 'успешность', 'активность' а также некоторые подробности и детали, которые служат для привлечения внимания потенциальных работодателей. Очень надеюсь, что это положит конец той ситуации, когда приходится биться рыбой об лёд в поисках приличного места работы.
Re[3]: JetBrains
От: andrey.t  
Дата: 16.04.16 11:40
Оценка: +1
Здравствуйте, elmal, Вы писали:

E> Сказал что готов сделать тестовое задание, готов собеседоваться на остаточных знаниях при условии нормального фидбека что мне следует подтянуть и тому подобное. После чего мне приходит ответ, что мы не готовы пригласить вас на собеседование, так как у меня не релевантный опыт, а у них есть кандидат на финальной стадии.


К сожалению, я заметил, что это больше похоже на норму. Мне много раз предлагали сделать тестовое задание (и тут и там на Западе и там на Востоке), в ответ соглашаюсь, но настаиваю, что хотел бы иногда пинговать специалиста по поводу требонваний (почта, skype — не важно), чтобы не домысливать некоторые моменты, и во-вторых, мы разбираем мой код вместе, а не я получаю сухой ответ от HR. Что-то желающих аргументировать свои замечания в беседе, как это происходит в процессе совместной работы, не наблюдаю

PS. По поводу кандидата в финальной стадии — ерундовая отмазка. Все понимают, что процесс не прекращается, пока подписи не поставлены.
Отредактировано 16.04.2016 11:43 andrey.t . Предыдущая версия . Еще …
Отредактировано 16.04.2016 11:43 andrey.t . Предыдущая версия .
Отредактировано 16.04.2016 11:40 andrey.t . Предыдущая версия .
Re[9]: JetBrains
От: GarryIV  
Дата: 16.04.16 14:23
Оценка:
Здравствуйте, mgu, Вы писали:

AG>>Что курит Ваш рекрутёр? В каком времени он живёт?


mgu>Да ничего он не курит, он же деревянный. Схема же найма такая: сбегает специалист, на его место ищут нового, а требования составляются копированием навыков старого. А потом борются с теорией вероятности.


Стадия отрицания с переходом в стадию гнева?
WBR, Igor Evgrafov
Re[3]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 16.04.16 14:52
Оценка:
Здравствуйте, elmal, Вы писали:

E>Но факт в том, что я не представляю, кем нужно быть, чтоб с улицы без знакомств как то проскочить в JetBrains. Только если по распределению из ВУЗа специального, начиная с юниорской стадии.

Чтобы быть совсем точным: в августе 2015 года вы сказали, что не заинтересованы в смене работы. Почему вас не приглашили пообщаться до этого — для меня загадка. Попробую выяснить.
Что же касается кем надо быть — сейчас в московском офисе в проекте ReSharper работают 6 челове, четверо из них "с улицы".
Re[9]: JetBrains
От: dr. Acula Украина  
Дата: 16.04.16 14:54
Оценка:
S>Видимо поэтому аутсорсеры в РБ цветут и пахнут (те же ЕПАМ и iTransition постоянно в поиске людей)
Да ну. Ничо, что от ЕПАМа UBS уходит в Польшу?
Re[8]: JetBrains
От: _ABC_  
Дата: 16.04.16 16:28
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Резюме обновил — добавил слова 'успешность', 'активность' а также некоторые подробности и детали, которые служат для привлечения внимания потенциальных работодателей.

Кхм... Всю критику учел, что мы писали в той теме? Там наоборот советовали всю эту фигню убрать нафиг.

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

Честно говоря, пока складывается впечатление, что ты не заинтересован в работе. Наоборот, заинтересован в том, чтобы доказать,
что ты не можешь найти работу.
Re[10]: JetBrains
От: Daneel_Olivaw  
Дата: 16.04.16 16:42
Оценка:
Около года назад отправил им резюме на вакансию связанную с разработкой IDE. Важный момент — в резюме в качестве контактов был указан телефон и почта, никакого Skype. Т.к. ответа не последовало, я продолжил поиски работы. Спустя полгода, я обнаруживаю что на один из моих старых Skype аккаунтов (которым я не пользуюсь со времён университета) был послан запрос от человека из Jetbrains, видимо хотел пообщаться. Я начал разбираться почему так произошло, и оказалось что Skype аккаунт использовал адрес почты, которую я как раз и указал в резюме. К слову мой основной аккаунт Skype также использовал адрес моей почты, но через строку поиска в Skype показывался неправильный аккаунт. Не знаю почему так.

Если честно, я очень расстроился. Понятно, что никто никому ничего не должен. Но всё-таки Skype не был указан нигде как способ контакта. Хотел хотя бы попасть на собеседование, сделать тестовой задание, т.к. последние 4 года занимаюсь разработкой плагинов под Eclipse и платформу RCP.
Re[4]: JetBrains
От: elmal  
Дата: 16.04.16 17:11
Оценка:
Здравствуйте, qxWork, Вы писали:

W>Чтобы быть совсем точным: в августе 2015 года вы сказали, что не заинтересованы в смене работы. Почему вас не приглашили пообщаться до этого — для меня загадка. Попробую выяснить.

Да, но я изъявил желание пообщаться в любом случае. И самое интересное, что через месяц степень моей заинтересованности резко возросла ибо в фирме стали наблюдаться весьма большие проблемы и деньгами, а ипотеку я взял, соответственно менять работу мне уже стало можно. И про то, что основная причина моей тогдашней незаинтересованности была ипотека — я говорил. А в ноябре моя заинтересованность достигла абсолютного максимума, когда выяснилось, что проекту полный кирдык, и работу мне уже менять пришлось явно. И я в очередной раз направлял резюме явно, и в очередной раз получил отказ в приглашении на собеседование. И в то время я был в ОЧЕНЬ хорошей форме для прохождения собеседования, ибо в отличие от обычных походов на интервью исключительно с остаточными знаниями, я немного потренировался, ибо представился шанс в буржундию попасть на scala разработчика, при том что опыт со scala максимум месяц . В буржундию не попал, но зато на местном рынке внезапно стал котироваться .
Re[9]: JetBrains
От: AlexGin Беларусь  
Дата: 16.04.16 19:22
Оценка:
Здравствуйте, _ABC_, Вы писали:

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


AG>>Резюме обновил — добавил слова 'успешность', 'активность' а также некоторые подробности и детали, которые служат для привлечения внимания потенциальных работодателей.

_AB>Кхм... Всю критику учел, что мы писали в той теме? Там наоборот советовали всю эту фигню убрать нафиг.
Именно советовали — добавить больше фраз об успешности и активности!

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

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

Странные и неадекватные у тебя выводы...
Re[11]: JetBrains
От: sergey2b ЮАР  
Дата: 16.04.16 19:50
Оценка:
Здравствуйте, so5team, Вы писали:


S>Так что ваши проблемы с поиском работы в Минске(!) объясняются (не)релевантностью вашего опыта текущим реалиям и, с большой степенью вероятности, вашей (не?)адекватностью в оценке ситуации.


подскажите пожалуйста а что сейчас востребовано в Минске
Re[11]: JetBrains
От: AlexGin Беларусь  
Дата: 16.04.16 21:59
Оценка:
Здравствуйте, so5team, Вы писали:

S>У меня есть все основания вам не верить, т.к. сам из РБ и некоторое представление о том, что сейчас здесь происходит, имею.

Верить/не верить — твоё право...
Живу в РБ от рождения — более полувека
S>В том числе и по опыту общения с рекрутерами крупных компаний (не кадровых агентств). В последние пару лет появились проблемы у людей без опыта (студенты) и у людей совсем древним опытом.
Ну, если C++11; MSVS-2013; Qt5-древний опыт
S>Но по ряду направлений (фронд-энд, бэк-енд, мобильная разработка) аутсорсинговые компании постоянно ищут людей.
Я вообще-то, более ориентируюсь на desktop applications.

S>Откуда дровишки? Политические соображения передачи проектов от аусорсеров РБ аутсорсерам Индии, как я слышал, заключались в том, что со стороны заказчика власть оказывалась в руках выходцев из Индии. А они инициируют перевод проекта в Индию из соображений землячества умело используя фактор разницы в стоимости (т.е. уже несколько лет стоимость разработки здесь выше, чем в Индии).

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

S>На волне санкций против РФ в РБ заказов, как я слышал, стало даже больше. В том числе и из-за того, что в РБ создаются компании-прокси, от имени которой заключается контракт с западным заказчиком, разработка при этом остается в РФ.

Это не опровергает моих слов — по сути новых рабочих мест в РБ это не обеспечивает.

S>Так что ваши проблемы с поиском работы в Минске(!) объясняются (не)релевантностью вашего опыта текущим реалиям и, с большой степенью вероятности, вашей (не?)адекватностью в оценке ситуации.

1. Насчёт нерелевантности опыта текущим реалиям — возможно.
Некоторые "эффективные менеджеры" всё время кричат, что C++ отжил (не нужен и т.д.) — да мой опыт в этом смысле, пожалуй, НЕ-релевантен
Так как я придерживаюсь абсолютно противоположной точки зрения — C++ нужен и актуален. Развитие языка — говорит о его актуальности.
Аналогично по настольным приложениям — важно, нужно, актуально. Web-приложения их никогда полностью не вытеснят!
Богатый и развитый пользовательский интерфейс — забудем про Web-приложения!
2. Насчёт оценки ситуации — вряд ли.
Тут я приводил одни доводы, ты — другие. Но результат — примерно тот же.
Так, я работал в компании (иностранная компания в Минске), где несколько лет назад работало > 200 человек (БОЛЕЕ ДВУХ СОТЕН ЧЕЛОВЕК).
Когда я уходил, несколько месяцев назад, там оставалось чуть более 30 человек (ПРИМЕРНО 30 ЧЕЛОВЕК).
Ну и как после этого говорить о развитии IT рынка в РБ?
Re[5]: JetBrains
От: mgu  
Дата: 16.04.16 23:09
Оценка:
Здравствуйте, _ABC_, Вы писали:

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


mgu>>Замануха -> опускание на интервью -> трудоустройство в качестве юниора.

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

Людям свойственно судить других по себе.
Re[9]: JetBrains
От: mgu  
Дата: 16.04.16 23:18
Оценка: :)
Здравствуйте, itslave, Вы писали:

mgu>>Это потому что ваш рекрутёр путает Java и JavaScript, вот соответствующие кандидаты и не могут ответить на "элементарные вопросы", почерпнутые на ближайшем говнофоруме.

I>Вы реально обсуждаете технические вопросы с рекрутерами??
I>Мне такие лет 5 уже не попадались, раньше я стандартно отвечал "давайте мы обсудим технические вопросы с вашими инженерами на собеседовании"

Спорить с автоматом бесполезно. В голове кадровика скрипт, а в руках -- список как "элементарных вопросов", так и аббревиатур. Выглядит это примерно так:

-- Вы JSON знаете?

-- Да.

-- Бинго! А сколько лет им занимаетесь?

-- Га? Извините, а сколько надо?

-- Не менее 3-х лет...
Re[6]: JetBrains
От: BulatZiganshin  
Дата: 16.04.16 23:19
Оценка: +1 :)
Здравствуйте, mgu, Вы писали:

mgu>>>Замануха -> опускание на интервью -> трудоустройство в качестве юниора.


mgu>Людям свойственно судить других по себе.


да, давно хотелось тебе это сказать
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: JetBrains
От: mgu  
Дата: 17.04.16 00:12
Оценка: -1
Здравствуйте, elmal, Вы писали:

E>Чет у меня сомнения. Ибо у меня представления о базовых алгоритмах и структурах данных по крайней мере по остаточным знаниям достаточно неплохие и судя по всему сильно лучше, чем на рынке. Ибо, например, найти человека, который про радикс сорт что то слышал 1 человек из 50. В том числе и те, кто собеседуют, обычно про радикс сорт не слышали. ... Так что в теории вроде ну явно имею представление об алгоритмах и структурах данных, хоть это и остаточные знания.


Вот 2 ссылки:

https://en.wikipedia.org/wiki/Sorting_algorithm
https://en.wikipedia.org/wiki/List_of_data_structures

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

E>Про многопоточность я конечно скажу не то, что вы ожидаете. Ибо я скажу что многопоточный код надо писать так, чтоб о потоках не думать . Никаких локов в основном коде быть не должно


Почувствовал себя Р. Крузо, обнаружившим Пятницу. Боже, неужели есть ещё человек, который устраняет причины, а не изгаляется в способах борьбы со следствиями! Аналогично, невозможно доказать любителям запрягать лошадь позади телеги, что в большом "О" самый эффективный способ повышения быстродействия -- это уменьшение N, как количественно, так и по числу операций в каждом. Нет, раз log(N) меньше N^2, значит других способов быть не может!

E>Но кругозор на интервью интересует наверно только меня, 90 процентов интересует знания типовых вещей вроде какие оптимизации применяются внутри JVM, бага по поводу substring в Java < 1.7 и тому подобное .


Господи, укрепи!

E>Это я к тому, что не совсем блондинко и быдлокодер. Хоть и мозги работают не всегда хорошо, у многих со скоростью мышления гораздо лучше.

E>Но факт в том, что я не представляю, кем нужно быть, чтоб с улицы без знакомств как то проскочить в JetBrains. Только если по распределению из ВУЗа специального, начиная с юниорской стадии.

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

Или попробую объяснить на простом программерском языке. Претендентов сравнивают с идеальным кандидатом, так? Но общая функция Equals(), выставленная в объявлениях, в отделе кадров перегружена частным образом, и сравнение идёт совсем по другим полям.
Re[11]: JetBrains
От: mgu  
Дата: 17.04.16 00:35
Оценка:
Здравствуйте, qxWork, Вы писали:

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


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

А резюме своё (без фото) всё-таки зашлите в родную контору, испейте чашу до дна. И запаситесь попкорном.
Re[10]: JetBrains
От: mgu  
Дата: 17.04.16 00:37
Оценка:
Здравствуйте, GarryIV, Вы писали:

mgu>>Да ничего он не курит, он же деревянный. Схема же найма такая: сбегает специалист, на его место ищут нового, а требования составляются копированием навыков старого. А потом борются с теорией вероятности.


GIV>Стадия отрицания с переходом в стадию гнева?


Стадия созерцания.
Re[12]: JetBrains
От: mgu  
Дата: 17.04.16 00:53
Оценка: :)
Здравствуйте, AlexGin, Вы писали:

AG>Аналогично по настольным приложениям — важно, нужно, актуально. Web-приложения их никогда полностью не вытеснят!

AG>Богатый и развитый пользовательский интерфейс — забудем про Web-приложения!

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

А веб-интерфейс сейчас стал ничем не хуже настольного, флюгер моды развернулся, и теперь евангелисты-эпилептики проповедуют истинность толстого клиента. Ближайшее будущее за универсальным интерфейсом для стола, веба и рукоблудных устройств.
Re[10]: JetBrains
От: _ABC_  
Дата: 17.04.16 06:06
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Именно советовали — добавить больше фраз об успешности и активности!

Советовали добавить больше конкретного о том, что было сделано и собственной роли.
Re[6]: JetBrains
От: _ABC_  
Дата: 17.04.16 06:07
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Людям свойственно судить других по себе.

Советую перечитать собственные высказывания в таком случае.
Re[10]: JetBrains
От: itslave СССР  
Дата: 17.04.16 06:49
Оценка:
Здравствуйте, mgu, Вы писали:

I>>Вы реально обсуждаете технические вопросы с рекрутерами??

I>>Мне такие лет 5 уже не попадались, раньше я стандартно отвечал "давайте мы обсудим технические вопросы с вашими инженерами на собеседовании"

mgu>Спорить с автоматом бесполезно. В голове кадровика скрипт, а в руках -- список как "элементарных вопросов", так и аббревиатур. Выглядит это примерно так:


Дык а зачем с ними спорить? Не понимают своей некомпетентности — давай до свидания, слава богу недостатка в вакансиях нет.
Re[12]: JetBrains
От: itslave СССР  
Дата: 17.04.16 06:56
Оценка: +1 :)
Здравствуйте, AlexGin, Вы писали:


AG>Аналогично по настольным приложениям — важно, нужно, актуально. Web-приложения их никогда полностью не вытеснят!

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

AG>Богатый и развитый пользовательский интерфейс — забудем про Web-приложения!

Вы к примеру google docs или там outlook web access открывали когда нить?
Re[12]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 08:32
Оценка: +1 :)
Здравствуйте, AlexGin, Вы писали:

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

AG>Ну, если C++11; MSVS-2013; Qt5-древний опыт

Во-первых, код, который вы показывали в соседней теме, явно демонстрирует, что свои знания C++ вы ну очень сильно переоцениваете. Даже по этой фразе возникают сомнения в вашей квалификации, т.к. в MSVS-2013 поддержка C++11 была так себе. Да и летом прошлого года вышла MSVS-2015, поэтому вспоминать сейчас MSVS-2013 несколько странно.

S>>Но по ряду направлений (фронд-энд, бэк-енд, мобильная разработка) аутсорсинговые компании постоянно ищут людей.

AG>Я вообще-то, более ориентируюсь на desktop applications.

Тогда нужно называть вещи своими именами: для разработчиков десктоп-приложений под Windows на C++ работы в Минске мало. И, вероятно, в хорошие места (вроде Wargaming-а, который стабильно ищет C++ников) вы по уровню квалификации не проходите.

AG>Так, я работал в компании (иностранная компания в Минске), где несколько лет назад работало > 200 человек (БОЛЕЕ ДВУХ СОТЕН ЧЕЛОВЕК).

AG>Когда я уходил, несколько месяцев назад, там оставалось чуть более 30 человек (ПРИМЕРНО 30 ЧЕЛОВЕК).
AG>Ну и как после этого говорить о развитии IT рынка в РБ?

Насколько я слышал, Минск сейчас один из лучших городов по зарплатам ИТ-шников в Восточной Европе. Поэтому себестоимость разработки в Минске (да и вообще в РБ) выросла настолько, что ряду компаний просто невыгодно вести разработку в РБ. Особенно после падения российского рубля в последние два года, когда выгоднее стало аутсорсить из РБ в РФ, а не наоборот (как это было в начале 2000-х). Поэтому из российских компаний, имевших представительство в РБ, с 2014-го года идет массовый отток программистов. Только вот люди эти не остаются на улице, а устраиваются в компании, ориентирующиеся на заказчиков из США и Западной Европы.

Ну вообще жаловаться на нынешний ИТ-рынок в РБ сейчас просто грешно, если вспомнить, что было хотя бы лет 15 назад. Не говоря уже про то, что было 20 лет назад.
Re[12]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 08:36
Оценка:
Здравствуйте, sergey2b, Вы писали:

S>>Так что ваши проблемы с поиском работы в Минске(!) объясняются (не)релевантностью вашего опыта текущим реалиям и, с большой степенью вероятности, вашей (не?)адекватностью в оценке ситуации.


S>подскажите пожалуйста а что сейчас востребовано в Минске


Этот вопрос следовало бы задать кому-нибудь из кадровых агентств. Но может вот это поможет составить впечатление.
Re[13]: JetBrains
От: Daneel_Olivaw  
Дата: 17.04.16 09:22
Оценка:
коллеги, а кто-нибудь повторно отправлял резюме в Jetbrains через какое-то время? Или если не прошёл сразу — до свидания?
Re[12]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 17.04.16 09:44
Оценка: +1
Здравствуйте, mgu, Вы писали:

mgu>Сарказм засчитан, логика -- нет: связь между качеством и продаваемостью продукта весьма условная.

Объясню по-другому: бизнес прибыльный, пользовательская база растет. Причем так происходит давно и без тенденции к упадку. Даже глядя со стороны логично считать, что все ок.

mgu>Спасают компании кризисные управляющие, а я лично пришиваю пуговицы.

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

mgu>А резюме своё (без фото) всё-таки зашлите в родную контору, испейте чашу до дна. И запаситесь попкорном.

А что я там должен написать вместо своего опыта работы? И что я должен сделать когда это резюме приедет ко мне?
Re[14]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 17.04.16 09:45
Оценка:
Здравствуйте, Daneel_Olivaw, Вы писали:

D_O>коллеги, а кто-нибудь повторно отправлял резюме в Jetbrains через какое-то время? Или если не прошёл сразу — до свидания?

Знаю такие примеры. Если ничего не путаю, то один такой работает в команде ReSharper.
Re[13]: JetBrains
От: AlexGin Беларусь  
Дата: 17.04.16 10:44
Оценка:
Здравствуйте, mgu, Вы писали:

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


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


Выделенное — за основу берет настольное приложение

P.S. Насчет "веб-интерфейс сейчас стал ничем не хуже настольного" — тут у меня большие сомнения.
Просто скажем так: интересы Пользователя принесли в жертву службы поддержки приложения
Re[13]: JetBrains
От: AlexGin Беларусь  
Дата: 17.04.16 10:50
Оценка:
Здравствуйте, itslave, Вы писали:

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


AG>>Аналогично по настольным приложениям — важно, нужно, актуально. Web-приложения их никогда полностью не вытеснят!

I>Chromium с этим несогласен
I>В любом случае, веб успешно вытесняет десктоп во всех нишах, кроме узкоспециализированных(3d графика, среды разработки). Этой тенденции лет 15 уже. И да, с каждым годом десктопных программистов надо все меньше, все более узкоспециализированные требования к ним предъявляют. Но вы сами выбрали редкую специализацию и много лет подряд игнорировали тренды.

За трендами слежу.
Фактически — занимался и достаточно плотно на ASP.NET MVC.
Да — удобно (прежде всего для службы поддержки приложений). Для пользователя
Но, тем не менее, остаюсь при своей точке зрения

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

AG>>Богатый и развитый пользовательский интерфейс — забудем про Web-приложения!

I>Вы к примеру google docs или там outlook web access открывали когда нить?
Открою, посмотрю — просто ради любопытства
Re[11]: JetBrains
От: AlexGin Беларусь  
Дата: 17.04.16 10:55
Оценка:
Здравствуйте, _ABC_, Вы писали:

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


AG>>Именно советовали — добавить больше фраз об успешности и активности!

_AB>Советовали добавить больше конкретного о том, что было сделано и собственной роли.
Ну это практически то же самое.
Тут весь фокус в том, что любое резюме — это некоторого рода рекламный листок. Любой работодатель прекрасно понимает это.
Re[14]: JetBrains
От: noone  
Дата: 17.04.16 11:13
Оценка:
Здравствуйте, Daneel_Olivaw, Вы писали:

D_O>коллеги, а кто-нибудь повторно отправлял резюме в Jetbrains через какое-то время? Или если не прошёл сразу — до свидания?


Лично знаю случай, когда человек не прошел интервью, но прошел на следующий год. Значит не "до свидания".
Re[15]: JetBrains
От: Daneel_Olivaw  
Дата: 17.04.16 11:31
Оценка:
А кто может рассказать что представляет из себя HR процесс в JetBrains?
Re[11]: JetBrains
От: mgu  
Дата: 17.04.16 15:08
Оценка:
Здравствуйте, itslave, Вы писали:

I>>>Вы реально обсуждаете технические вопросы с рекрутерами??

I>>>Мне такие лет 5 уже не попадались, раньше я стандартно отвечал "давайте мы обсудим технические вопросы с вашими инженерами на собеседовании"

mgu>>Спорить с автоматом бесполезно. В голове кадровика скрипт, а в руках -- список как "элементарных вопросов", так и аббревиатур. Выглядит это примерно так:


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


В нашей провинции есть, особенно если не за миску доширака.
Re[13]: JetBrains
От: mgu  
Дата: 17.04.16 15:11
Оценка:
Здравствуйте, so5team, Вы писали:

S>Во-первых, код, который вы показывали в соседней теме, явно демонстрирует, что свои знания C++ вы ну очень сильно переоцениваете. Даже по этой фразе возникают сомнения в вашей квалификации, т.к. в MSVS-2013 поддержка C++11 была так себе. Да и летом прошлого года вышла MSVS-2015, поэтому вспоминать сейчас MSVS-2013 несколько странно.


Занесу в избранное.
Re[13]: JetBrains
От: mgu  
Дата: 17.04.16 15:15
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Так что ваши проблемы с поиском работы в Минске(!) объясняются (не)релевантностью вашего опыта текущим реалиям и, с большой степенью вероятности, вашей (не?)адекватностью в оценке ситуации.


S>>подскажите пожалуйста а что сейчас востребовано в Минске


S>Этот вопрос следовало бы задать кому-нибудь из кадровых агентств. Но может вот это поможет составить впечатление.


Опыт работы:
От 1 года до 3 лет 401
От 3 до 6 лет 337
Нет опыта 48
Более 6 лет 26

У ТС "нерелевантный" опыт работы.
Re[8]: JetBrains
От: devromik Россия https://github.com/devromik
Дата: 17.04.16 15:30
Оценка:
mgu>Тогда на собеседовании я попрошу назвать фамилию автора вопросника, а если откажутся -- заявлю про "пук в муку".

Крутая компания.
Одно из самых адекватных интервью в моей жизни.
И никаких вопросников там и близко не было, чувак.
Re[13]: JetBrains
От: mgu  
Дата: 17.04.16 15:32
Оценка: +1
Здравствуйте, qxWork, Вы писали:

mgu>>Сарказм засчитан, логика -- нет: связь между качеством и продаваемостью продукта весьма условная.

W>Объясню по-другому: бизнес прибыльный, пользовательская база растет. Причем так происходит давно и без тенденции к упадку. Даже глядя со стороны логично считать, что все ок.

И я объясню по-другому: у Майкрософта дела в смысле продаваемости ещё лучше. Вот только в последние годы это достигается вовсе не качеством продукта.

mgu>>Спасают компании кризисные управляющие, а я лично пришиваю пуговицы.

W>А я вот не пришиваю, я весь костюм делаю. Почувствуйте разницу.

А чем тогда занимаются сотни других программистов?

mgu>>А резюме своё (без фото) всё-таки зашлите в родную контору, испейте чашу до дна. И запаситесь попкорном.

W>А что я там должен написать вместо своего опыта работы?

А вы удалите свой опыт в JetBrains, замените имя и способ связи. И ждите похоронку.

W>И что я должен сделать когда это резюме приедет ко мне?


А что, вы помимо написания продукта в одно лицо ещё и все резюме обрабатываете?! Аркадий Паровозов, перелогиньтесь!
Re[14]: JetBrains
От: mgu  
Дата: 17.04.16 15:37
Оценка:
Здравствуйте, AlexGin, Вы писали:

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


AG>Выделенное — за основу берет настольное приложение


Да, я в курсе.

AG>P.S. Насчет "веб-интерфейс сейчас стал ничем не хуже настольного" — тут у меня большие сомнения.

AG>Просто скажем так: интересы Пользователя принесли в жертву службы поддержки приложения

Да нет, я пишу и настольные, и веб-приложения, могу забабахать неотличимые варианты*.

*В определённой степени, понятно, что даже в разных браузерах UI не полностью совпадает.
Re[14]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 15:53
Оценка: :)
Здравствуйте, mgu, Вы писали:

S>>Во-первых, код, который вы показывали в соседней теме, явно демонстрирует, что свои знания C++ вы ну очень сильно переоцениваете. Даже по этой фразе возникают сомнения в вашей квалификации, т.к. в MSVS-2013 поддержка C++11 была так себе. Да и летом прошлого года вышла MSVS-2015, поэтому вспоминать сейчас MSVS-2013 несколько странно.


mgu>Занесу в избранное.


Не знаю, насколько вы хорошо знаете современный C++. Я, например, не очень хорошо. Но даже для меня подозрительно, когда кто-то говорит про опыт с C++11 и MSVS2013, т.к. в MSVS2013 поддержка C++11 сильно отстает от оной как в gcc (начиная с 4.9-5.1), так и в clang (начиная с 3.4). Более нормальной эта поддержка стала в MSVS2015. Произошло это в 2015-ом году. При этом для MSVS2015 есть как express, так и community версии, которые можно скачать бесплатно. Человек в 2016-ом пытается опровергнуть предположение о древнем опыте словами про C++11 и MSVS2013. А следовало бы про C++14 и MSVS2015...
Re[9]: JetBrains
От: mgu  
Дата: 17.04.16 15:57
Оценка:
Здравствуйте, devromik, Вы писали:

mgu>>Тогда на собеседовании я попрошу назвать фамилию автора вопросника, а если откажутся -- заявлю про "пук в муку".


D>Крутая компания.

D>Одно из самых адекватных интервью в моей жизни.
D>И никаких вопросников там и близко не было, чувак.

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

А противоречия между нашим опытом нет. Я заметил, что часто практикуется следующее: кандидат является на собеседование, а ЛПР подглядывает в щёлочку. Если "понравился", то начинается многоликая беседа, а если нет, то предлагают заполнить "нашу анкету", вопросник на знание таблиц Брадиса или выпускают на арену 1 (одного) козла отпущения для разговора о хеш-таблицах.
Re[15]: JetBrains
От: mgu  
Дата: 17.04.16 16:14
Оценка:
Здравствуйте, so5team, Вы писали:

S>Не знаю, насколько вы хорошо знаете современный C++. Я, например, не очень хорошо. Но даже для меня подозрительно, когда кто-то говорит про опыт с C++11 и MSVS2013, т.к. в MSVS2013 поддержка C++11 сильно отстает от оной как в gcc (начиная с 4.9-5.1), так и в clang (начиная с 3.4). Более нормальной эта поддержка стала в MSVS2015. Произошло это в 2015-ом году. При этом для MSVS2015 есть как express, так и community версии, которые можно скачать бесплатно. Человек в 2016-ом пытается опровергнуть предположение о древнем опыте словами про C++11 и MSVS2013. А следовало бы про C++14 и MSVS2015...


Я C++11 вообще не знаю, но помню, что в своё время перешёл на C++9 без проблем. Возможно, для "чистого" си-плюс-плюсника потребовалось бы знакомство со сборщиком мусора, но дело в том, что языки программирования заимствуют лучшее друг у друга, и ни с чем принципиально новым я давно не сталкивался. Например, шаблоны в С++ помогли мне в С#, лямбды из которого -- в Джаве, а MVC из неё -- в .NET.

Бегание за самыми последними версиями -- известный антипаттерн, а в огромных проектах это откровенное вредительство. Пресловутая же скорость разработки и поддержки достигается умением программировать вообще, а вот это уже требует долгих лет опыта.
Re[9]: JetBrains
От: Daneel_Olivaw  
Дата: 17.04.16 16:17
Оценка:
Здравствуйте, devromik, Вы писали:

mgu>>Тогда на собеседовании я попрошу назвать фамилию автора вопросника, а если откажутся -- заявлю про "пук в муку".


D>Крутая компания.

D>Одно из самых адекватных интервью в моей жизни.
D>И никаких вопросников там и близко не было, чувак.

поделитесь опытом
Re[16]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 16:33
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Я C++11 вообще не знаю, но помню, что в своё время перешёл на C++9 без проблем. Возможно, для "чистого" си-плюс-плюсника потребовалось бы знакомство со сборщиком мусора


Можно поинтересоваться, что такое C++9 и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?

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


AlexGin давал ссылку на свой проект на github-е. Тамошний код вызывает большие вопросы в наличии умения программировать вообще.

Ваши попытки сарказма, сопровождаемые признаниями в том, что вы не знаете вещей о которых здесь говорят, так же вызывает подобные вопросы.
Re[14]: JetBrains
От: qxWork Голландия http://www.jetbrains.com/company/people/Coox_Sergey.html
Дата: 17.04.16 17:28
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>И я объясню по-другому: у Майкрософта дела в смысле продаваемости ещё лучше. Вот только в последние годы это достигается вовсе не качеством продукта.

А Вы, оказывается, эксперт во всем. Снимаю шляпу.

mgu>А чем тогда занимаются сотни других программистов?

Кто чем. Кто шьет другие костюмы, кто подводные лодки конструирует. Некоторые пуговицы пришивают.
С какой целью интересуетесь?

mgu>А вы удалите свой опыт в JetBrains, замените имя и способ связи. И ждите похоронку.

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

W>>И что я должен сделать когда это резюме приедет ко мне?

mgu>А что, вы помимо написания продукта в одно лицо ещё и все резюме обрабатываете?! Аркадий Паровозов, перелогиньтесь!
Зачем все? Но все интересные резюме в ReSharper и частично в другие .NET-команды проходят через меня.
Re[17]: JetBrains
От: BulatZiganshin  
Дата: 17.04.16 17:51
Оценка:
Здравствуйте, so5team, Вы писали:

S>Можно поинтересоваться, что такое C++9


98

S>и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?


очевидно потому что он якобы включён в стандарт. он же не знает как дела обстоят на самом деле
Люди, я люблю вас! Будьте бдительны!!!
Re[10]: JetBrains
От: devromik Россия https://github.com/devromik
Дата: 17.04.16 18:11
Оценка:
mgu>Выделил ключевые слова, определяющие черты личности, возможно, они принесли вам успех.

Психолог?

Не прошёл, завалил ТЗ (есть на гитхабе).
Тем не менее, интервью, ТЗ и люди мне понравились.

Насчёт IDEA: https://www.youtube.com/watch?v=ZS6t7p2gZW8
Re[17]: JetBrains
От: mgu  
Дата: 17.04.16 18:38
Оценка:
Здравствуйте, so5team, Вы писали:

mgu>>Я C++11 вообще не знаю, но помню, что в своё время перешёл на C++9 без проблем. Возможно, для "чистого" си-плюс-плюсника потребовалось бы знакомство со сборщиком мусора


S>Можно поинтересоваться, что такое C++9 и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?


Visual C++ 2008 (also known as Visual C++ 9.0) was released in November 2007. This version supports .NET 3.5.

( https://en.wikipedia.org/wiki/Visual_C%2B%2B )

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

С каждой версией всё меньше и меньше новых возможностей:

Visual C++ 2012 (also known as Visual C++ 11.0) was released on August 15, 2012. It features improved C++11 support, and support for Windows Runtime development.[36]
Visual C++ 2013 (also known as Visual C++ 12.0) was released on October 17, 2013. It features further C++11 and C99 support, and introduces a REST SDK.[37]
Visual C++ 2015 (also known as Visual C++ 14.0) was released on July 20, 2015.[38] It features improved C++11/14/17 support.[39]


Зато, наверняка, только бОльшие требования к ресурсам.

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


S>AlexGin давал ссылку на свой проект на github-е. Тамошний код вызывает большие вопросы в наличии умения программировать вообще.


Опять, я про "вообще", а вы в ответ частный случай. Конкретно код AlexGin-а у меня не вызвал столь безаппеляционного заявления. Предъявите свой код, чтобы мы хотя бы могли одним глазком увидеть Совершенство.

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


А я, видите ли, инженер, то есть тот, кто не знает конкретного решения, но пользуется аналогичным опытом.
Re[18]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 19:02
Оценка: +1
Здравствуйте, mgu, Вы писали:

S>>Можно поинтересоваться, что такое C++9 и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?


mgu>

mgu>Visual C++ 2008 (also known as Visual C++ 9.0) was released in November 2007. This version supports .NET 3.5.

mgu>( https://en.wikipedia.org/wiki/Visual_C%2B%2B )

Похоже, вы из тех, кто владеет языком программирования Visual C++.

mgu>Про сборщик мусора говорю в качестве примера заимствования из других, знакомых мне языков.


Может расскажите, где и когда C++11 позаимствовал у кого-нибудь сборщик мусора?

В качестве подсказки: когда речь идет о C++11, то это не версии Visual C++. Это ISO-шный стандарт C++ от 2011-го года.

mgu>Опять, я про "вообще", а вы в ответ частный случай. Конкретно код AlexGin-а у меня не вызвал столь безаппеляционного заявления.


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

mgu>Предъявите свой код, чтобы мы хотя бы могли одним глазком увидеть Совершенство.


Найти примеры кода несложно, соответствующая ссылка присутствует в каждом посте.
Кроме того, я и в бытность профессиональным программистом писал так себе, ни в коем разе не претендуя на совершенство (тем более на Совершенство). А сейчас и подавно. Проблема, однако, в том, что AlexGin делает это еще хуже.
Re[15]: JetBrains
От: mgu  
Дата: 17.04.16 19:14
Оценка:
Здравствуйте, qxWork, Вы писали:

mgu>>И я объясню по-другому: у Майкрософта дела в смысле продаваемости ещё лучше. Вот только в последние годы это достигается вовсе не качеством продукта.

W>А Вы, оказывается, эксперт во всем. Снимаю шляпу.

Да не эксперт, просто чувствую проделки Майкрософта на собственной шкуре. А знание ЕЕЕ относится к основам.

mgu>>А чем тогда занимаются сотни других программистов?

W>Кто чем. Кто шьет другие костюмы, кто подводные лодки конструирует. Некоторые пуговицы пришивают.
W>С какой целью интересуетесь?

Просто был озадачен: если один шьёт костюм, то что делает масса других портных? У вас же не кустарное производство.

mgu>>А вы удалите свой опыт в JetBrains, замените имя и способ связи. И ждите похоронку.

W>Классно, а вместо него что написать? Груши околачивал?

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

W>А что вместо другого опыта писать?


Сделайте небольшой рефакторинг опыта, например, оставьте опыт в JetBrains, заметите явные следы, а название конторы измените на, скажем, BestTrueSoft.

W>Он проверяется на раз любым даже бестолковым рекрутером.


Это если проверяется. Вы недооцениваете бестолковость инженеров человеческих навыков.

W>>>И что я должен сделать когда это резюме приедет ко мне?

mgu>>А что, вы помимо написания продукта в одно лицо ещё и все резюме обрабатываете?! Аркадий Паровозов, перелогиньтесь!
W>Зачем все? Но все интересные резюме в ReSharper и частично в другие .NET-команды проходят через меня.

Откликнитесь на другие вакансии.

А "интересные" по каким критериям? Спрашиваю не корысти ради (у вас с опытом больше 6 лет не требуются), просто любопытно с целью повышения образованности.
Re[18]: JetBrains
От: mgu  
Дата: 17.04.16 19:24
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

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


S>>Можно поинтересоваться, что такое C++9


BZ>98


Visual C++ 2008 (also known as Visual C++ 9.0) ( https://en.wikipedia.org/wiki/Visual_C%2B%2B )

S>>и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?


BZ>очевидно потому что он якобы включён в стандарт. он же не знает как дела обстоят на самом деле


Он включён в дополнительные возможности.

A __gc type is a C++ language extension that simplifies .NET Framework programming by providing features such as interoperability and garbage collection.


https://msdn.microsoft.com/en-us/library/4xs93xhk.aspx
Re[11]: JetBrains
От: mgu  
Дата: 17.04.16 19:39
Оценка:
Здравствуйте, devromik, Вы писали:

mgu>>Выделил ключевые слова, определяющие черты личности, возможно, они принесли вам успех.


D> Психолог?


Нет, "программер, чо?".

D>Насчёт IDEA: https://www.youtube.com/watch?v=ZS6t7p2gZW8


Что только люди ни обсуждают! У них, наверно, интернет телефонный.
Re[19]: JetBrains
От: mgu  
Дата: 17.04.16 21:12
Оценка: -1
Здравствуйте, so5team, Вы писали:

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


S>>>Можно поинтересоваться, что такое C++9 и зачем в контексте разговора про C++11 и MSVS2013 вы говорите про "знакомство со сборщиком мусора"?


S>Похоже, вы из тех, кто владеет языком программирования Visual C++.


Придирка засчитана (клянусь SQL-92), да, действительно это "среда разработки", однако и С++ в ней с диалектными особенностями. Заранее признаЮ, что MFC, VCL, ATL -- это также не языки и даже не стандарты С++, однако за ними часто и языка-то не видно.
mgu>>Про сборщик мусора говорю в качестве примера заимствования из других, знакомых мне языков.

S>Может расскажите, где и когда C++11 позаимствовал у кого-нибудь сборщик мусора?


Взглянул на стандарт С++11 -- появились лямбды! Тогда снимаю своё заявление насчёт "сборщика мусора" и заменяю на корректную лямбду, которой не осталось, пожалуй, только в HTML-е. Суть от этого не меняется: то, что узкому специалисту по С++ кажется откровением свыше, давно используется в других языках.

S>В качестве подсказки: когда речь идет о C++11, то это не версии Visual C++. Это ISO-шный стандарт C++ от 2011-го года.


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

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


В моём возрасте уже давно ничему не удивляются.

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


А что, вышел стандарт программиста Аутист-11? Мне просто по должностным обязанностям приходилось писать на человеческом языке столько же, сколько и на компьютерном, оттого и кажущаяся болтливость.

S>Найти примеры кода несложно, соответствующая ссылка присутствует в каждом посте.

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

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

if( demands < 3 )
    demands = 1;
else
    demands -= 2;


    unsigned int m_current_position = 0;
    bool m_current_tick_processed = false;


    lock.unlock();

    while( head )
    {
        try
        {
            ...
        }
        ...
        catch( ... )
        {
            ...
            std::abort();
        }

        head = head->m_next;
    }

    lock.lock();


Код может сказать многое даже о личных качествах. Например, очевидно, что вы одинокий и непьющий. Иначе в файле all.hpp (3000+ строк) вы бы не попадали по ползунку полосы прокрутки, а коллеги после нескольких слияний устроили бы вам тёмную.
Re[20]: JetBrains
От: so5team https://stiffstream.com
Дата: 17.04.16 21:46
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Суть от этого не меняется: то, что узкому специалисту по С++ кажется откровением свыше, давно используется в других языках.


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

S>>В качестве подсказки: когда речь идет о C++11, то это не версии Visual C++. Это ISO-шный стандарт C++ от 2011-го года.


mgu>Да-да-да, как и HTML5, который везде требуется, вот только ничем полностью не поддерживается, так что приходится писать с диалектными особенностями.


Ваше мнение по поводу стандарта C++ и уровня его поддержки в современных компиляторах очень ценно.

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


Могу попросить объяснить, что не понравилось в этих двух фрагментах?

В первом фрагменте прошу учесть, что demands -- это переменная типа unsigned int. Надеюсь, ваш уровень знаний C++ позволяет понять, чем грозит переход через 0 при декрементах unsigned значений?

mgu>
mgu>if( demands < 3 )
mgu>    demands = 1;
mgu>else
mgu>    demands -= 2;
mgu>


Ну а к этому в чем претензия? Особенно с учетом того, что это часть описания класса?

mgu>
mgu>    unsigned int m_current_position = 0;
mgu>    bool m_current_tick_processed = false;
mgu>


А вот тут я должен пояснить. Внутри while вызываются заданные пользователем callback-и. К callback-ам предъявляется требование -- они не должны выпускать наружу исключения. Но в C++ пока нет синтаксических конструкций, которые бы позволяли сделать такое ограничение более формальным (спецификатор noexcept в C++11/14 не является частью сигнатуры функции, кроме того, в обсуждавшемся выше по ветке MSVS2013 его вообще нет). Посему приходится выполнять вызов callback-а внутри try-catch, дабы при возникновении исключения прервать выполнение программы из-за нарушения контракта. Отсюда и вызов std::abort.

Почему при этом вы попытались заострить внимание на вызовах unlock и lock -- это загадка. Если поясните, будет интересно.

mgu>
mgu>    lock.unlock();

mgu>    while( head )
mgu>    {
mgu>        try
mgu>        {
mgu>            ...
mgu>        }
mgu>        ...
mgu>        catch( ... )
mgu>        {
mgu>            ...
mgu>            std::abort();
mgu>        }

mgu>        head = head->m_next;
mgu>    }

mgu>    lock.lock();

mgu>


mgu>Иначе в файле all.hpp (3000+ строк) вы бы не попадали по ползунку полосы прокрутки


В vim-е нет полосы прокрутки. Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.
Re[21]: JetBrains
От: mgu  
Дата: 18.04.16 00:30
Оценка:
Здравствуйте, so5team, Вы писали:

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


Ну не знаю я С++11, это и есть "замечательная невежественность"?

S>Ваше мнение по поводу стандарта C++ и уровня его поддержки в современных компиляторах очень ценно.


Таки полностью не поддерживается:
https://msdn.microsoft.com/ru-ru/library/hh567368.aspx

S>Могу попросить объяснить, что не понравилось в этих двух фрагментах?


S>В первом фрагменте прошу учесть, что demands -- это переменная типа unsigned int. Надеюсь, ваш уровень знаний C++ позволяет понять, чем грозит переход через 0 при декрементах unsigned значений?


mgu>>
mgu>>if( demands < 3 )
mgu>>    demands = 1;
mgu>>else
mgu>>    demands -= 2;
mgu>>


Я просто имел в виду тернарную операцию (входит даже в пещерные стандарты С++).

S>Ну а к этому в чем претензия? Особенно с учетом того, что это часть описания класса?


mgu>>
mgu>>    unsigned int m_current_position = 0;
mgu>>    bool m_current_tick_processed = false;
mgu>>


Виноват, я был слишком высокого мнения о создателях С++11: думал, что раз они содрали инициализацию динамических членов класса, то догадаются их инициализировать по умолчанию. Ан нет.

S>Почему при этом вы попытались заострить внимание на вызовах unlock и lock -- это загадка. Если поясните, будет интересно.


mgu>>
mgu>>    lock.unlock();

mgu>>    while( head )
mgu>>    {
mgu>>        try
mgu>>        {
mgu>>            ...
mgu>>        }
mgu>>        ...
mgu>>        catch( ... )
mgu>>        {
mgu>>            ...
mgu>>            std::abort();
mgu>>        }

mgu>>        head = head->m_next;
mgu>>    }

mgu>>    lock.lock();

mgu>>


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

mgu>>Иначе в файле all.hpp (3000+ строк) вы бы не попадали по ползунку полосы прокрутки


S>В vim-е нет полосы прокрутки.


А в других редакторах есть.

S>Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.


Не слышал, ознакомился, понял, что иногда сталкивался с подобной необходимостью, но термина не знаю. Зато с многотысячестрочными простынями (точнее, сари) имел дело. Предпочитаю вместо иллюзорного выигрыша в производительности делать разбиение на логические единицы.
Re[13]: JetBrains
От: pagid Россия  
Дата: 18.04.16 04:12
Оценка: 6 (1) +1
Здравствуйте, itslave, Вы писали:

I>Вы к примеру google docs или там outlook web access открывали когда нить?

Слабое подобие десктопных приложений.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[12]: JetBrains
От: _ABC_  
Дата: 18.04.16 04:17
Оценка:
Здравствуйте, AlexGin, Вы писали:

_AB>>Советовали добавить больше конкретного о том, что было сделано и собственной роли.

AG>Ну это практически то же самое.
Нет.

AG>Тут весь фокус в том, что любое резюме — это некоторого рода рекламный листок. Любой работодатель прекрасно понимает это.

Тут весь фокус в том, что конкретное то твоё резюме, которое ты выложил — это антиреклама тебя.
Re[22]: JetBrains
От: so5team https://stiffstream.com
Дата: 18.04.16 05:29
Оценка: +1
Здравствуйте, mgu, Вы писали:

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


mgu>Ну не знаю я С++11, это и есть "замечательная невежественность"?


В контексте разговора про опыт "C++11; MSVS-2013; Qt5-древний опыт" -- да.

S>>Ваше мнение по поводу стандарта C++ и уровня его поддержки в современных компиляторах очень ценно.


mgu>Таки полностью не поддерживается:

mgu>https://msdn.microsoft.com/ru-ru/library/hh567368.aspx

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

mgu>>>
mgu>>>if( demands < 3 )
mgu>>>    demands = 1;
mgu>>>else
mgu>>>    demands -= 2;
mgu>>>


mgu>Я просто имел в виду тернарную операцию (входит даже в пещерные стандарты С++).


Уверяю вас, если бы было записано однострочником:
demands = demands < 3 ? 1 : (demands-2);

то нашлись бы ярые противники использования тернарных операторов. Книга одного из них, с большим опытом разгребания Windows-only говнокода, обсуждается сейчас в профильном форуме. Там как раз совет №4 звучит как "Бойтесь оператора ?: и заключайте его в круглые скобки".

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

S>>Ну а к этому в чем претензия? Особенно с учетом того, что это часть описания класса?


mgu>>>
mgu>>>    unsigned int m_current_position = 0;
mgu>>>    bool m_current_tick_processed = false;
mgu>>>


mgu>Виноват, я был слишком высокого мнения о создателях С++11: думал, что раз они содрали инициализацию динамических членов класса, то догадаются их инициализировать по умолчанию. Ан нет.


Во-первых, фраза "динамические члены класса" применительно к C++ режет слух. Что еще больше утверждает в мысли, что вы пытаетесь судить о том, в чем не разбираетесь.

Во-вторых, в C++ в угоду скорости исполнения поля объектов не инициализируются, если это не указано явно разработчиком. Посему даже инициализация поля дефолтным значением должна происходить явно. Либо в конструкторе (что работает, емнип, со времен C++98/03):
my_class::my_class(bla-bla-bla)
  : m_current_position(), m_current_tick_processed(), ...
  {}

Либо при описании поля (что доступно с C++11):
class my_class {
  ...
  unsigned int m_current_position{};
  bool m_current_tick_processed{};
};

Однако, в данном случае то, что нужные мне начальные значения одновременно являются дефолтными -- это совпадение. Поэтом, дабы сделать код более очевидным и упростить сопровождение, начальные значения прописаны явно.

mgu>Во-первых, крайне необычно сначала разблокировать, а затем блокировать, напрашивается обратный порядок, возможно, на то были причины.


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

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

mgu>А std::abort() выкидывает без всяких очисток, это потенциальная мина, возможно, понадобится закрывать ресурсы или выбрасывать новое исключение в глобальный обработчик, а перед этим восстанавливать загадочный lock(). В общем, надо что-то делать либо с финализацией, либо при ошибке выставлять локальный флаг и выходить из while.


А известно ли вам, что в C++ не принято выбрасывать исключения из деструкторов? Поскольку если такое исключение выскочит при раскрутке стека из-за ранее возникшего исключения, то сам ран-тайм тупо завет std::terminate (суть std::abort()). И это считается нормально: пользователь нарушил контракт, получил по рукам, ибо обеспечить восстановление после такого нарушения контракта возможно далеко не всегда. Так же и здесь -- нельзя выпускать исключения из callback-а. Поскольку некому его будет обрабатывать на отдельной рабочей нити, на которой и происходят вызовы callback-ов.

S>>Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.


mgu>Не слышал, ознакомился, понял, что иногда сталкивался с подобной необходимостью, но термина не знаю. Зато с многотысячестрочными простынями (точнее, сари) имел дело. Предпочитаю вместо иллюзорного выигрыша в производительности делать разбиение на логические единицы.


Ну посмотрите на размеры заголовочных файлов random, regex, algorithm, vector из состава Visual C++ к примеру. Или на basic_string.h из libstdc++. Что предложите с ними сделать?

Конкретно в моем случае определение всего в одном файле связано совсем не с вопросами производительности, а с удобством распространения библиотеки. Это header-only библиотека (не знаю, понимаете ли вы, что это такое). Посему отдать один заголовочный файл и подключить один-единственный заголовочный файл в другом месте гораздо проще. Кросс-платформенных и широкораспространненых менеджеров пакетов в C++ пока не завезли. Это тоже к вопросу опыта и его релевантности современным реалиям ИТ-шного рынка.
Re[14]: JetBrains
От: itslave СССР  
Дата: 18.04.16 07:37
Оценка:
Здравствуйте, AlexGin, Вы писали:
AG>Конечно, для простых аппликух можно выбрать и веб-мордочку
Вы не понимаете почему тренд развернулся в сторону веб приложений, и они вытеснили десктоп отовсюду, где перфоманс не очень неважен и юзабилити не критично.

AG>>>Богатый и развитый пользовательский интерфейс — забудем про Web-приложения!

I>>Вы к примеру google docs или там outlook web access открывали когда нить?
AG>Открою, посмотрю — просто ради любопытства
То вы их(или сравнимых по сложности веб приложений) до сих пор не открывали, говорит не в вашу пользу.
Re[14]: JetBrains
От: itslave СССР  
Дата: 18.04.16 07:39
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>А чем тогда занимаются сотни других программистов?

Скажите, у вас не возникает вопросов, чем занимаются сотни(если не тысячи инженеров) в компаниях боинг или пратт-уитни?
Re[14]: JetBrains
От: itslave СССР  
Дата: 18.04.16 07:42
Оценка:
Здравствуйте, pagid, Вы писали:

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


I>>Вы к примеру google docs или там outlook web access открывали когда нить?

P>Слабое подобие десктопных приложений.
Это сложные и функциональные веб приложения, о чем собственно говоря и речь. Согласен, юзабилити на сегодняшний день меньше чем у дектопгных аналогов, но речь ведь не о том.
Re[15]: JetBrains
От: pagid Россия  
Дата: 18.04.16 07:48
Оценка: 6 (1)
Здравствуйте, itslave, Вы писали:

I>Это сложные и функциональные веб приложения, о чем собственно говоря и речь.

Несомненно
I> Согласен, юзабилити на сегодняшний день меньше чем у дектопгных аналогов, но речь ведь не о том.
Именно о том.
Можно даже не забыть, что у этих приложений имеются дополнительные возможности связанные с их природой — по коллективной работе и возможности запускать на разных железках и ОС, но в целом функционально и по удобству применения это именно слабое подобие десктопных приложений.
... << RSDN@Home 1.2.0 alpha 5 rev. 1495>>
Re[16]: JetBrains
От: itslave СССР  
Дата: 18.04.16 08:28
Оценка:
Здравствуйте, pagid, Вы писали:

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

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

P>но в целом функционально и по удобству применения это именно слабое подобие десктопных приложений.

Это смотря как использовать
Для огромного количества мелких/средних фирм и частных лиц, этих возможностей хватает с головой, при существенно меньшем головняке(админ не нужен) и ценах.
А UX подтянут
Re[23]: JetBrains
От: mgu  
Дата: 18.04.16 20:01
Оценка:
Здравствуйте, so5team, Вы писали:

mgu>>Ну не знаю я С++11, это и есть "замечательная невежественность"?


S>В контексте разговора про опыт "C++11; MSVS-2013; Qt5-древний опыт" -- да.


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

S>>>Ваше мнение по поводу стандарта C++ и уровня его поддержки в современных компиляторах очень ценно.


mgu>>Таки полностью не поддерживается:

mgu>>https://msdn.microsoft.com/ru-ru/library/hh567368.aspx

S>Какие-то у вас ограниченные источники информации. В современных реалиях для C++ника гораздо важнее черпать информацию из других мест.


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

S>А то получится как с AlexGin, который никак не может осознать, что сейчас разработка на Visual C++ для Windows -- это довольно узкая ниша. А соответствующий опыт можно считать довольно древним.


Да, узкая.

S>Уверяю вас, если бы было записано однострочником:

S>
S>demands = demands < 3 ? 1 : (demands-2);
S>

S>то нашлись бы ярые противники использования тернарных операторов. Книга одного из них, с большим опытом разгребания Windows-only говнокода, обсуждается сейчас в профильном форуме. Там как раз совет №4 звучит как "Бойтесь оператора ?: и заключайте его в круглые скобки".

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

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

( http://rsdn.ru/forum/cpp/6419326 )

S>Так что вы придрались к синтаксису.


Да нет, к подходу -- налицо излишняя многословность. Против инкрементов у вас же возражений нет?

S>К коду AlexGin сходу можно предъявлять претензии гораздо более серьезные.


Например?

S>>>Ну а к этому в чем претензия? Особенно с учетом того, что это часть описания класса?


S>Во-первых, фраза "динамические члены класса" применительно к C++ режет слух. Что еще больше утверждает в мысли, что вы пытаетесь судить о том, в чем не разбираетесь.


Ваш термин для не статических членов класса в С++?

S>Во-вторых, в C++ в угоду скорости исполнения поля объектов не инициализируются, если это не указано явно разработчиком. Посему даже инициализация поля дефолтным значением должна происходить явно. Либо в конструкторе (что работает, емнип, со времен C++98/03)


Всё верно, вот только цель сомнительна, особенно для примитивных полей.

S>Т.е. вы не разобрались с тем, что делает код и почему он это делает именно так, но претензии предъявили?


Да. Кто виноват в проблеме -- тупой пользователь или напускающий туман и опускающий комментарии разработчик?

S>Причины, действительно, были.

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

То есть в то время как всё прогрессивное человечество пишет синглтоны с двумя if-ами, вы позволяете внешним акторам хулиганить? Всё-таки привычнее видеть операции должным образом изолированными.

mgu>>А std::abort() выкидывает без всяких очисток, это потенциальная мина, возможно, понадобится закрывать ресурсы или выбрасывать новое исключение в глобальный обработчик, а перед этим восстанавливать загадочный lock(). В общем, надо что-то делать либо с финализацией, либо при ошибке выставлять локальный флаг и выходить из while.


S>А известно ли вам, что в C++ не принято выбрасывать исключения из деструкторов?


Конечно, и не только в С++, это же любимые вопросы на интервью: по Джаве на тему повторного вызова деструктора, а по С# -- про сожительство деструктора и финализатора. Но под "очисткой" я понимал не только разрушение.

S>Поскольку если такое исключение выскочит при раскрутке стека из-за ранее возникшего исключения, то сам ран-тайм тупо завет std::terminate (суть std::abort()). И это считается нормально: пользователь нарушил контракт, получил по рукам, ибо обеспечить восстановление после такого нарушения контракта возможно далеко не всегда. Так же и здесь -- нельзя выпускать исключения из callback-а. Поскольку некому его будет обрабатывать на отдельной рабочей нити, на которой и происходят вызовы callback-ов.


Не выпускайте, ещё раз: выставляйте локальный флаг и выходите из while.

S>>>Кроме того, вы наверняка не видели sqlite.c и не слышали про такую технику, как amalgamation.


mgu>>Не слышал, ознакомился, понял, что иногда сталкивался с подобной необходимостью, но термина не знаю. Зато с многотысячестрочными простынями (точнее, сари) имел дело. Предпочитаю вместо иллюзорного выигрыша в производительности делать разбиение на логические единицы.


S>Ну посмотрите на размеры заголовочных файлов random, regex, algorithm, vector из состава Visual C++ к примеру. Или на basic_string.h из libstdc++. Что предложите с ними сделать?


Взять всё и поделить! (с) Шариков.

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

S>Конкретно в моем случае определение всего в одном файле связано совсем не с вопросами производительности, а с удобством распространения библиотеки. Это header-only библиотека (не знаю, понимаете ли вы, что это такое). Посему отдать один заголовочный файл и подключить один-единственный заголовочный файл в другом месте гораздо проще.


А чем dll вам не угодили? Для любителей hardcore можно предоставлять версии с отладочной информацией. Или фишка в компилировании под конкретные платформы?

S>Кросс-платформенных и широкораспространненых менеджеров пакетов в C++ пока не завезли. Это тоже к вопросу опыта и его релевантности современным реалиям ИТ-шного рынка.


Не смог согласовать первое предложение со вторым.
Re[15]: JetBrains
От: mgu  
Дата: 18.04.16 20:10
Оценка:
Здравствуйте, itslave, Вы писали:

mgu>>А чем тогда занимаются сотни других программистов?

I>Скажите, у вас не возникает вопросов, чем занимаются сотни(если не тысячи инженеров) в компаниях боинг или пратт-уитни?

Если один из инженеров скажет, что он в одиночку клепает самолёт, тогда возникнут.
Re[15]: JetBrains
От: mgu  
Дата: 18.04.16 20:15
Оценка:
Здравствуйте, itslave, Вы писали:

I>>>Вы к примеру google docs или там outlook web access открывали когда нить?

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

В моём представлении usability -- это удобство использования, которое начинается с наличия навигации. А это от настольности или вебанутости не зависит.
Re[24]: JetBrains
От: so5team https://stiffstream.com
Дата: 18.04.16 20:53
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Спасибо за полезную ссылку, но вот что меня беспокоит: при вашей политике распространения библиотеки в виде исходного кода, как бедные пользователи будут угадывать правильный компилятор?


Гораздо важнее другой вопрос: когда библиотека поставляется в бинарном виде, как быть тогда? На ваш же вопрос ответ прост: поддержка С++11.

mng>И что им делать, если их текущий сборщик не переварит всех нововведений?


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

S>>Так что вы придрались к синтаксису.


mgu>Да нет, к подходу -- налицо излишняя многословность.


Разница только в количестве строк.

mgu> Против инкрементов у вас же возражений нет?


Инкременты откуда взялись?

S>>К коду AlexGin сходу можно предъявлять претензии гораздо более серьезные.


mgu>Например?


Да вот, первый же cpp-файл в репозитории. И сразу же:
bool SMSContentGreater(CSMSContent* pSMS1, CSMSContent* pSMS2) // Global function for std::sort
{
    CTime time1, time2;
    SYSTEMTIME st1, st2;
    if (pSMS1->GetSMSTime().GetAsSystemTime(st1))
        time1 = CTime(st1);
    if (pSMS2->GetSMSTime().GetAsSystemTime(st2))
        time2 = CTime(st2);

    time_t t1 = time1.GetTime();
    time_t t2 = time2.GetTime();

    if (t1 > t2)
        return true;
    else
        return false;
}

Здесь есть две последовательно выполняемые независимые операции -- извлечение времени в виде SYSTEMTIME и трансформация его в time_t через промежуточный CTime. Даже если предположить, что столь длинная цепочка нужна, то все равно непонятно, зачем нужны две пары переменных time1+time2 и st1+st2. Если можно обойтись всего одной переменной типа SYSTEMTIME и одной переменной типа CTime. Что-то вроде:
CTime ct;
SYSTEMTIME st;
if(pSMS1->GetSMSTime().GetAsSystemTime(st))
  ct = CTime(st);
time_t t1 = ct.GetTime();

if(pSMS2->GetSMSTime().GetAsSystemTime(st))
  ct = CTime(st);
time_t t2 = ct.GetTime();

Здесь становится очевидно, что имеется две однотипных операции и явная копи-паста. Которая устраняется через вспомогательную функцию:
namespace {
inline time_t GetTime(const CSMSContent & sms) {
  SYSTEMTIME st;
  return sms.GetSMSTime().GetAsSytemTime(st)) ? CTime(st).GetTime() : CTime().GetTime();
}
}

bool SMSContentGreater(CSMSContent * pSMS1, CSMSContent * pSMS2) {
  return GetTime(*pSMS1) > GetTime(*pSMS2);
}

И это все в рамках C++98/03, что несколько многословно. Можно воспользоваться возможностями не очень уже современного C++11 и имитацией локальных функций в нем:
bool SMSContentGreater(CSMSContent * pSMS1, CSMSContent * pSMS2) {
  auto GetTime = [](const CSMSContent & sms) {
    SYSTEMTIME st;
    return sms.GetSMSTime().GetAsSytemTime(st)) ? CTime(st).GetTime() : CTime().GetTime();
  };
  return GetTime(*pSMS1) > GetTime(*pSMS2);
}

Однако, особая пикантность ситуации состоит в том, что у CTime уже есть оператор "меньше". Посему непонятно, а зачем вообще нужна еще одна трансформация из CTime в time_t. Более того, очень похоже, что GetSMSTime уже возвращает объект типа CTime, у которого затем дергается GetAsSystemTime() дабы получить SYSTEMTIME. А затем из SYSTEMTIME вновь конструируется CTime... Чой-то неведомое.

И это только первая же функция в первом же файле. Смотрим этот же файл дальше:
CATCmdDevice::CATCmdDevice()
: m_pSerial(NULL), // Added 17.03.2015
  m_bIsGSMDeviceConnected(false) // Added 21.03.2015
{
    m_pTXBuff = NULL;  // Transmitter buffer
    m_pRXBuff = NULL;  // Reciver buffer

    m_bUnicodeMode = false;

    m_pPBRecord = NULL;

    m_bReceivedSMSListFull = false;
}

Конструктор. Только часть полей инициализируется через списки инициализации, часть -- в теле конструктора. Причем та часть, которая в теле конструктора, должна была бы инициализироваться в списках инициализации еще со времен C++98.

Дальше, деструктор:
CATCmdDevice::~CATCmdDevice()
{
    ClearSMSArr(); // Restored 01.10.2014

    if (m_pTXBuff)
    {
        delete[] m_pTXBuff;  
        m_pTXBuff = NULL;
    } 

    if (m_pRXBuff)
    {
        delete[] m_pRXBuff;  
        m_pRXBuff = NULL;
    }
}

Поля m_pTXBuff и m_pRXBuff объявлены в самом классе CATCmdDevice. Следовательно, занулять их в деструкторе после освобождения памяти смысла нет.

Опять же, на счет m_pTXBuff и m_pRXBuff: почему идет ручное управление памятью? Почему нельзя было воспользоваться std::vector (рекомендуемый путь со времен C++98)? Или вообще почему не сделать m_TXBuff и m_RXBuff обычными C-шными массивами?

Далее:
long CATCmdDevice::OpenSerial(int iComChannel, int iComBaudRate)
{
    if (m_pSerial)
        delete m_pSerial;

    m_pSerial = new CSerial();
    if (m_pSerial != NULL)
    {   // m_pSerial->Open(1, 9600);
        BOOL bOpen = m_pSerial->Open(iComChannel, iComBaudRate); 
        if(!bOpen)
        {
            g_log.SaveLogFile(PBK_ERROR, "Error during opening port: COM%u (baud rate = %u)",iComChannel,iComBaudRate);
            return 1L; // Error occur
        }
        else
            g_log.SaveLogFile(PBK_DEBUG, "Port: COM%u (baud rate = %u) - opening success!",iComChannel,iComBaudRate);
    }
    return 0L; // OK!
}

Что за проверка m_pSerial != NULL после new? Неужели автор транслирует свой код с запретом C++ных исключений на уровне ключей компилятора? Если даже он делает именно так, то где ветка else у этого if-а? А то ведь получается, что при запрещенных исключениях у него нет обработки ошибки выделения памяти (даже если в m_pSerial окажется 0, функция OpenSerial все равно вернет 0 в качестве признака успешного завершения). Если же исключения не запрещены, то данная проверка не имеет смысла, т.к. при недостатке памяти new бросит bad_alloc.

И это, повторюсь, всего лишь беглый просмотр всего лишь первого файла.

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

По остальным вопросам в следующем ответе.
Re[24]: JetBrains
От: so5team https://stiffstream.com
Дата: 18.04.16 21:20
Оценка:
Здравствуйте, mgu, Вы писали:

S>>Во-первых, фраза "динамические члены класса" применительно к C++ режет слух. Что еще больше утверждает в мысли, что вы пытаетесь судить о том, в чем не разбираетесь.


mgu>Ваш термин для не статических членов класса в С++?


Поля, атрибуты, не статические члены класса.

S>>Во-вторых, в C++ в угоду скорости исполнения поля объектов не инициализируются, если это не указано явно разработчиком. Посему даже инициализация поля дефолтным значением должна происходить явно. Либо в конструкторе (что работает, емнип, со времен C++98/03)


mgu>Всё верно, вот только цель сомнительна, особенно для примитивных полей.


Это не важно. В C++ вот такое поведение. Ваше мнение по этому поводу не имеет значения.

S>>Т.е. вы не разобрались с тем, что делает код и почему он это делает именно так, но претензии предъявили?


mgu>Да.


Ok. На этом все ваши аппеляции якобы к имеющемуся у вас опыту разработки софта идут прямиком в /dev/null.

> Кто виноват в проблеме -- тупой пользователь или напускающий туман и опускающий комментарии разработчик?


Пользователи не смотрят в код. Разработчики смотрят в код и видят комментарии:
    /*!
     * \brief Execute all active timers in the sublist.
     *
     * Object is unlocked and locked back after sublist processing.
     */
    template< class UNIQUE_LOCK >
    void
    exec_actions(
        //! Object lock.
        //! This lock will be unlocked before execution of actions
        //! and locked back after.
        UNIQUE_LOCK & lock,
        //! Head of execution list.
        //! Cannot be nullptr.
        timer_type * head )
    {
        lock.unlock();

        while( head )

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

S>>эта операция может быть длительной (особенно если таймеров сотни тысяч), в это время нужно позволить параллельно работающим нитям работать с общим списком таймеров (выставлять новые или отменять существующие);


mgu>То есть в то время как всё прогрессивное человечество пишет синглтоны с двумя if-ами, вы позволяете внешним акторам хулиганить? Всё-таки привычнее видеть операции должным образом изолированными.


Сами-то поняли, что сказали?

S>>А известно ли вам, что в C++ не принято выбрасывать исключения из деструкторов?


mgu>Конечно, и не только в С++, это же любимые вопросы на интервью: по Джаве на тему повторного вызова деструктора, а по С# -- про сожительство деструктора и финализатора. Но под "очисткой" я понимал не только разрушение.


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

S>>Поскольку если такое исключение выскочит при раскрутке стека из-за ранее возникшего исключения, то сам ран-тайм тупо завет std::terminate (суть std::abort()). И это считается нормально: пользователь нарушил контракт, получил по рукам, ибо обеспечить восстановление после такого нарушения контракта возможно далеко не всегда. Так же и здесь -- нельзя выпускать исключения из callback-а. Поскольку некому его будет обрабатывать на отдельной рабочей нити, на которой и происходят вызовы callback-ов.


mgu>Не выпускайте, ещё раз: выставляйте локальный флаг и выходите из while.


Объясню еще раз. Есть отдельная рабочая нить, на которой вызываются заданные пользователем callback-и. Тот while, который вы видели в коде -- это один из циклов внутри данной нити. Callback-и не должны выбрасывать исключения, т.к. на данном контексте с ними сделать ничего нельзя. Соответственно, если пользователь нарушил контракт и выбросил исключение из callback-а, то возможности что-то с этим сделать нет. Поэтому, как результат нарушения контракта, вызывается std::abort.

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

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

mgu>А чем dll вам не угодили? Для любителей hardcore можно предоставлять версии с отладочной информацией. Или фишка в компилировании под конкретные платформы?


Вы вообще в курсе, что кроме Windows с dll-ками есть еще туева хуча платформ? Как программных, так и аппаратных? Или вы думаете, что скомпилированные Visual C++ бинарные dll-ки переносятся с платформы на платформу так же, как это происходит с Java байт-кодом?

S>>Кросс-платформенных и широкораспространненых менеджеров пакетов в C++ пока не завезли. Это тоже к вопросу опыта и его релевантности современным реалиям ИТ-шного рынка.


mgu>Не смог согласовать первое предложение со вторым.


Ничего удивительного. Вы пытаетесь рассуждать о теме, в которой не разбираетесь.
Re[25]: JetBrains
От: mgu  
Дата: 18.04.16 22:21
Оценка:
Здравствуйте, so5team, Вы писали:

S>Гораздо важнее другой вопрос: когда библиотека поставляется в бинарном виде, как быть тогда? На ваш же вопрос ответ прост: поддержка С++11.


Ну, крупные игроки предоставляют версии под разные платформы. Кустарные мастерские (например, Кэнон: http://community.usa.canon.com/t5/Office-Printers/setting-up-ImageFormula-DR-C225-on-Linux/m-p/169967 ) поставляют исподники. Кстати, в данном случае налицо преимущество одного бесконечного hpp, когда тестировщики не могут сосредоточиться.

mng>>И что им делать, если их текущий сборщик не переварит всех нововведений?


S>Искать что-нибудь более подходящее для себя. Написать свое. Заплатить за адаптацию под свои условия. Переделать самостоятельно. С исходным текстом можно делать все, что угодно.


Ещё вариант: использовать в библиотечном коде старые стандарты. Пусть не модно, зато благодарность пользователей не будет знать границ.

mgu>>Да нет, к подходу -- налицо излишняя многословность.


S>Разница только в количестве строк.


Вам никогда не давали в качестве тестового задания посчитать количество слов в файле?

mgu>> Против инкрементов у вас же возражений нет?


S>Инкременты откуда взялись?


Из вашего кода. Ведь можно и без них обойтись.

S>>>К коду AlexGin сходу можно предъявлять претензии гораздо более серьезные.


mgu>>Например?


S>Да вот, первый же cpp-файл в репозитории. И сразу же:

S>
S>bool SMSContentGreater(CSMSContent* pSMS1, CSMSContent* pSMS2) // Global function for std::sort
S>{
S>    CTime time1, time2;
S>    SYSTEMTIME st1, st2;
S>    if (pSMS1->GetSMSTime().GetAsSystemTime(st1))
S>        time1 = CTime(st1);
S>    if (pSMS2->GetSMSTime().GetAsSystemTime(st2))
S>        time2 = CTime(st2);

S>    time_t t1 = time1.GetTime();
S>    time_t t2 = time2.GetTime();

S>    if (t1 > t2)
S>        return true;
S>    else
S>        return false;
S>}
S>


Да уж, эндшпиль напомнил мне мои рассуждения: https://rsdn.ru/forum/job/6268918
Автор: mgu
Дата: 04.12.15
.

S>Однако, особая пикантность ситуации состоит в том, что у CTime уже есть оператор "меньше". Посему непонятно, а зачем вообще нужна еще одна трансформация из CTime в time_t. Более того, очень похоже, что GetSMSTime уже возвращает объект типа CTime, у которого затем дергается GetAsSystemTime() дабы получить SYSTEMTIME. А затем из SYSTEMTIME вновь конструируется CTime... Чой-то неведомое.


Согласен.

S>Поля m_pTXBuff и m_pRXBuff объявлены в самом классе CATCmdDevice. Следовательно, занулять их в деструкторе после освобождения памяти смысла нет.


А и правда.

S>Опять же, на счет m_pTXBuff и m_pRXBuff: почему идет ручное управление памятью? Почему нельзя было воспользоваться std::vector (рекомендуемый путь со времен C++98)? Или вообще почему не сделать m_TXBuff и m_RXBuff обычными C-шными массивами?


S>Далее:

S>
long CATCmdDevice::OpenSerial(int iComChannel, int iComBaudRate)
S>{
S>    if (m_pSerial)
S>        delete m_pSerial;

S>    m_pSerial = new CSerial();
S>    if (m_pSerial != NULL)
S>    {   // m_pSerial->Open(1, 9600);
S>        BOOL bOpen = m_pSerial->Open(iComChannel, iComBaudRate); 
S>        if(!bOpen)
S>        {
S>            g_log.SaveLogFile(PBK_ERROR, "Error during opening port: COM%u (baud rate = %u)",iComChannel,iComBaudRate);
S>            return 1L; // Error occur
S>        }
S>        else
S>            g_log.SaveLogFile(PBK_DEBUG, "Port: COM%u (baud rate = %u) - opening success!",iComChannel,iComBaudRate);
S>    }
S>    return 0L; // OK!
S>}
S>

S>Что за проверка m_pSerial != NULL после new? Неужели автор транслирует свой код с запретом C++ных исключений на уровне ключей компилятора? Если даже он делает именно так, то где ветка else у этого if-а? А то ведь получается, что при запрещенных исключениях у него нет обработки ошибки выделения памяти (даже если в m_pSerial окажется 0, функция OpenSerial все равно вернет 0 в качестве признака успешного завершения). Если же исключения не запрещены, то данная проверка не имеет смысла, т.к. при недостатке памяти new бросит bad_alloc.

Угу, плюс подобные проверки вызывают беременность кода (его дюже сдвигает вправо, лучше на нет и суда нет, а не оборачивать успешную ветку) и таки-да, опять return ... else.

S>И это, повторюсь, всего лишь беглый просмотр всего лишь первого файла.


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


Н-да... Но бывает гораздо хуже!
Re[12]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 18.04.16 22:29
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>Некоторые "эффективные менеджеры" всё время кричат, что C++ отжил

AG>Так как я придерживаюсь абсолютно противоположной точки зрения

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

Я писал на С и С++ лет 5 примерно, на аутсорсе. К концу 2000-х я уже отчётливо видел, что десктоп на С и С++ быстро исчезает. Уже тогда большинство наших заказчиков С и С++ интересовал больше в плане сетевых приложений.

В мой профиль LinkedIn время от времени стучатся рекрутеры с разными предложениями. Так вот, навскидку, из 10 предлагаемых мне вакансий в среднем 3 это .net, 6 JEE и только одна C++.
С уважением, Artem Korneev.
Re[14]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 18.04.16 22:36
Оценка:
Здравствуйте, AlexGin, Вы писали:

AG>[...]Для пользователя


Пользователь видит HTML. HTML нынче довольно хорошо развит и уже почти не вызывает раздражения.
Более того, HTML нынче это не только вёб, это уже и десктоп. Посмотрите на Visual Studio Code (это не сама visual studio, это совсем другой проект от того же MS). Это десктопное приложение, написанное на HTML.

AG>Но, тем не менее, остаюсь при своей точке зрения


Наши с вами точки зрения имеют меньшее значение, чем точка зрения тех, кто инвестирует в создание продукта. А инвесторы нынче любят HTML куда больше чем C++.
С уважением, Artem Korneev.
Re[19]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 18.04.16 23:21
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Он включён в дополнительные возможности.


Это не дополнительные возможности. Это C++/.net, который совсем не то же самое, что просто C++.
С уважением, Artem Korneev.
Re[25]: JetBrains
От: mgu  
Дата: 18.04.16 23:50
Оценка:
Здравствуйте, so5team, Вы писали:

S>>>Во-первых, фраза "динамические члены класса" применительно к C++ режет слух. Что еще больше утверждает в мысли, что вы пытаетесь судить о том, в чем не разбираетесь.


mgu>>Ваш термин для не статических членов класса в С++?


S>Поля, атрибуты, не статические члены класса.


Посмотрел, с последним соглашусь, с первым -- нет: "C++ (like Java) calls them static fields and static methods."
http://www.uic.edu/classes/mcs/mcs451/f05/transparencies/sec4.3b.pdf

S>>>Т.е. вы не разобрались с тем, что делает код и почему он это делает именно так, но претензии предъявили?


mgu>>Да.


S>Ok. На этом все ваши аппеляции якобы к имеющемуся у вас опыту разработки софта идут прямиком в /dev/null.


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

>> Кто виноват в проблеме -- тупой пользователь или напускающий туман и опускающий комментарии разработчик?


S>Пользователи не смотрят в код. Разработчики смотрят в код и видят комментарии:

S>
    /*!
S>     * \brief Execute all active timers in the sublist.
S>     *
S>     * Object is unlocked and locked back after sublist processing.
S>     */
S>    template< class UNIQUE_LOCK >
S>    void
S>    exec_actions(
S>        //! Object lock.
S>        //! This lock will be unlocked before execution of actions
S>        //! and locked back after.
S>        UNIQUE_LOCK & lock,
S>        //! Head of execution list.
S>        //! Cannot be nullptr.
S>        timer_type * head )
S>    {
S>        lock.unlock();

S>        while( head )
S>

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

Да читал я ваши комментарии, они, грубо говоря, объясняют, что делается (это-то и так ясно по коду), но непонятно, почему так. Или вот:

//! Head of execution list.
//! Cannot be nullptr.
timer_type * head )
{
lock.unlock();
while( head )


А почему "Cannot be nullptr"?

S>>>эта операция может быть длительной (особенно если таймеров сотни тысяч), в это время нужно позволить параллельно работающим нитям работать с общим списком таймеров (выставлять новые или отменять существующие);


mgu>>То есть в то время как всё прогрессивное человечество пишет синглтоны с двумя if-ами, вы позволяете внешним акторам хулиганить? Всё-таки привычнее видеть операции должным образом изолированными.


S>Сами-то поняли, что сказали?


А вы?

// Status of timer can be changed. So it must be checked
// just before execution. If timer is waiting for
// deregistration it must not be executed.
if( timer_status::wait_for_execution == head->m_status )
    head->m_action();


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

S>>>А известно ли вам, что в C++ не принято выбрасывать исключения из деструкторов?


mgu>>Конечно, и не только в С++, это же любимые вопросы на интервью: по Джаве на тему повторного вызова деструктора, а по С# -- про сожительство деструктора и финализатора. Но под "очисткой" я понимал не только разрушение.


S>Только вам известно, что вы понимали. Но явно не то, о чем идет речь.


The destructor is commonly used to "clean up" when an object is no longer necessary.


При чём здесь выбрасывание исключений?

S>>>Поскольку если такое исключение выскочит при раскрутке стека из-за ранее возникшего исключения, то сам ран-тайм тупо завет std::terminate (суть std::abort()). И это считается нормально: пользователь нарушил контракт, получил по рукам, ибо обеспечить восстановление после такого нарушения контракта возможно далеко не всегда. Так же и здесь -- нельзя выпускать исключения из callback-а. Поскольку некому его будет обрабатывать на отдельной рабочей нити, на которой и происходят вызовы callback-ов.


mgu>>Не выпускайте, ещё раз: выставляйте локальный флаг и выходите из while.


S>Объясню еще раз. Есть отдельная рабочая нить, на которой вызываются заданные пользователем callback-и. Тот while, который вы видели в коде -- это один из циклов внутри данной нити. Callback-и не должны выбрасывать исключения, т.к. на данном контексте с ними сделать ничего нельзя. Соответственно, если пользователь нарушил контракт и выбросил исключение из callback-а, то возможности что-то с этим сделать нет. Поэтому, как результат нарушения контракта, вызывается std::abort.


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

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


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

mgu>>А чем dll вам не угодили? Для любителей hardcore можно предоставлять версии с отладочной информацией. Или фишка в компилировании под конкретные платформы?


S>Вы вообще в курсе, что кроме Windows с dll-ками есть еще туева хуча платформ? Как программных, так и аппаратных? Или вы думаете, что скомпилированные Visual C++ бинарные dll-ки переносятся с платформы на платформу так же, как это происходит с Java байт-кодом?


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

S>>>Кросс-платформенных и широкораспространненых менеджеров пакетов в C++ пока не завезли. Это тоже к вопросу опыта и его релевантности современным реалиям ИТ-шного рынка.


mgu>>Не смог согласовать первое предложение со вторым.


S>Ничего удивительного. Вы пытаетесь рассуждать о теме, в которой не разбираетесь.


Да, рассуждать, спрашивать, сомневаться, а вовсе не утверждать. Это зазорно?
Re[22]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 18.04.16 23:51
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Во-первых, крайне необычно сначала разблокировать, а затем блокировать [...]


Вставлю свои пять копеек.
В приведённых вами кусках кода я никаких явных проблем не вижу. А вот код AlexGin, и в самом деле, вызывает некоторые вопросы. Вот тут, к примеру:

if (m_pSerial)
    delete m_pSerial;

m_pSerial = new CSerial();
if (m_pSerial != NULL)
    ....


Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.

А вот следующая строка напрямую вызывает вопросы о знании стандарта С++. Я помню, что какие-то древние версии компилятора возвращали null в случае проблем при аллокации памяти. Но современные компиляторы давно уже выбрасывают исключение, а не возвращают null. Можно явно запросить то старое поведение таким образом:

m_pSerial = new(nothrow) CSerial();


Может быть это особенности того конкретного проекта и компилятора, которым оно собирается, но вот сходу выглядит как незнание стандарта.
А вот тут функция CNewSamsung::SendSmsMass на ~240 выглядит неимоверно раздутой.
С уважением, Artem Korneev.
Re[20]: JetBrains
От: mgu  
Дата: 18.04.16 23:54
Оценка: +1
Здравствуйте, Artem Korneev, Вы писали:

mgu>>Он включён в дополнительные возможности.


AK>Это не дополнительные возможности. Это C++/.net, который совсем не то же самое, что просто C++.


Да, с этим уже разобрались, я просто привёл неудачный пример заимствования С++11-м из других языков.
Re[23]: JetBrains
От: mgu  
Дата: 19.04.16 00:06
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Может быть это особенности того конкретного проекта и компилятора, которым оно собирается, но вот сходу выглядит как незнание стандарта.

AK>А вот тут функция CNewSamsung::SendSmsMass на ~240 выглядит неимоверно раздутой.

Всё относительно, мне попадались функции на несколько тысяч строк, там был не просто switch, а целая АТС.

Но компилятор действительно необычный:

CNewSamsung::CNewSamsung(void)
{
}
CNewSamsung::~CNewSamsung(void)
{
}
Re[24]: JetBrains
От: steep8  
Дата: 19.04.16 02:27
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Но компилятор действительно необычный:


mgu>
mgu>CNewSamsung::CNewSamsung(void)
mgu>{
mgu>}
mgu>CNewSamsung::~CNewSamsung(void)
mgu>{
mgu>}
mgu>



Так студия генерит класс — что тут необычного?
Re[23]: JetBrains
От: steep8  
Дата: 19.04.16 02:29
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>
AK>if (m_pSerial)
AK>    delete m_pSerial;

AK>m_pSerial = new CSerial();
AK>if (m_pSerial != NULL)
AK>    ....
AK>


AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.


В данном случае после delete идет сразу new, поэтому занулять указатель бессмысленно(ему сразу же присваивается значение).
Re[13]: JetBrains
От: sergey2b ЮАР  
Дата: 19.04.16 03:24
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>В мой профиль LinkedIn время от времени стучатся рекрутеры с разными предложениями. Так вот, навскидку, из 10 предлагаемых мне вакансий в среднем 3 это .net, 6 JEE и только одна C++.


интересная статистика
если не секрет а с Python были предложения
Re[26]: JetBrains
От: so5team https://stiffstream.com
Дата: 19.04.16 04:59
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Ещё вариант: использовать в библиотечном коде старые стандарты. Пусть не модно, зато благодарность пользователей не будет знать границ.


Это не имеет отношения к обсуждению качества кода.

mgu>>>Да нет, к подходу -- налицо излишняя многословность.


S>>Разница только в количестве строк.


mgu> Вам никогда не давали в качестве тестового задания посчитать количество слов в файле?


Понятно. Т.е. вы видите принципиальную разницу между:
if(demands < 3)
  demands = 1;
else
  demands -= 2;

demands = demands < 3 ? 1 : demands - 2;


Ну Окай.

mgu>Н-да... Но бывает гораздо хуже!


Наверняка бывает. Только если согласиться с точкой зрения AlexGin о том, что рынок труда в Минске сокращается, то это ведет к усилению конкуренции для оставшихся на рынке разработчиков. Соответственно, чем хуже код, тем меньше шансов найти работу. Просто по уровню профессиональных качеств.
Re[26]: JetBrains
От: so5team https://stiffstream.com
Дата: 19.04.16 05:24
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>>>Ваш термин для не статических членов класса в С++?


S>>Поля, атрибуты, не статические члены класса.


mgu>Посмотрел, с последним соглашусь, с первым -- нет: "C++ (like Java) calls them static fields and static methods."

mgu>http://www.uic.edu/classes/mcs/mcs451/f05/transparencies/sec4.3b.pdf

Мы все еще говорим про не статические члены классов в C++?

mgu>Да читал я ваши комментарии, они, грубо говоря, объясняют, что делается (это-то и так ясно по коду), но непонятно, почему так.


Об этом написано в комментариях к самому классу, а не к конкретному методу.

mgu> Или вот:


mgu>
mgu>//! Head of execution list.
mgu>//! Cannot be nullptr.
mgu>timer_type * head )
mgu>{
mgu>lock.unlock();
mgu>while( head ) 
mgu>


mgu>А почему "Cannot be nullptr"?


Потому что этот метод должен вызываться только для непустых списков. Если список пуст, то методы exect_actions и utilize_exec_list не должны вызываться и не вызываются.

S>>>>эта операция может быть длительной (особенно если таймеров сотни тысяч), в это время нужно позволить параллельно работающим нитям работать с общим списком таймеров (выставлять новые или отменять существующие);


mgu>>>То есть в то время как всё прогрессивное человечество пишет синглтоны с двумя if-ами, вы позволяете внешним акторам хулиганить? Всё-таки привычнее видеть операции должным образом изолированными.


S>>Сами-то поняли, что сказали?


mgu>А вы?


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

mgu>
mgu>// Status of timer can be changed. So it must be checked
mgu>// just before execution. If timer is waiting for
mgu>// deregistration it must not be executed.
mgu>if( timer_status::wait_for_execution == head->m_status )
    head->>m_action(); 
mgu>


mgu>"Сотни тысяч таймеров" вам могут преподнести зловредную ошибку на последней строчке.


Какую же?

mgu>При чём здесь выбрасывание исключений?


Подучите таки матчасть. В C++ не принято бросать исключения из деструкторов. В некоторых случаях это ведет к вызову std::terminate, на что пользователь повлиять никак не может. Выбрасывание исключений из callback-ов объектов таймеров очень напоминает ситуацию с выбрасыванием исключений из деструкторов. И шансов восстановиться после этого приблизительно столько же.

mgu>А что, в С++ нет способа обратиться к основному потоку? Необязательно выбрасывать исключение, но можно же передать информацию.


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

Вообще, складывается ощущение, что ваше знакомство с C++ ограничивается тесным мирком однопоточных GUI приложений для Windows.

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


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


Ну т.е. если вам попадает в руки библиотека с реализацией B+ деревьев и вы хотите чуть-чуть подправить проблемные места в ней, то вы не хотите "погружаться в тему"? А если это будет еще и lock-free реализация с вариацией hazard pointers, то вы хотите, чтобы код был написан так, чтобы одного взгляда на него хватило для понимания принципов его работы? И вы свой напишете под свои конкретные нужды?

Но Окай еще раз.

mgu>Да, рассуждать, спрашивать, сомневаться, а вовсе не утверждать. Это зазорно?


Если вы выкатываете замечания к коду не понимая этого кода, то не просто зазорно.
Re[24]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 19.04.16 05:39
Оценка:
Здравствуйте, steep8, Вы писали:

if (m_pSerial)
    delete m_pSerial;


S>В данном случае после delete идет сразу new, поэтому занулять указатель бессмысленно(ему сразу же присваивается значение).


Если б это было единственным местом, где m_pSerial может быть удалён и обнулён, то, согласитесь, проверять его на null тоже было бы бессмысленно.
Впрочем, есть ещё вариант что он может быть не создан вообще, а просто приравнен к null с самого начала.
С уважением, Artem Korneev.
Re[14]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 19.04.16 05:56
Оценка: 6 (1)
Здравствуйте, sergey2b, Вы писали:

AK>>В мой профиль LinkedIn время от времени стучатся рекрутеры с разными предложениями. Так вот, навскидку, из 10 предлагаемых мне вакансий в среднем 3 это .net, 6 JEE и только одна C++.

S>интересная статистика

У меня в профиле LinkedIn написано что я C++ разработчик. Плюс, там ещё два buzz-word'а — Map/Reduce и BigData. Вот заметная часть предлагаемых вакансий касались BigData программизма на Java. При том, что опыт в самой Java у меня весьма скромный.
Рекрутеры стучатся, в среднем, два-три раза за месяц. Не очень часто, но за 4 года моего проживания в заграницах кое-какая статистика уже скопилась.

S>если не секрет а с Python были предложения


Да, были. Но не много. Два или три за всё время. Но оно и понятно — python у меня в резюме упоминается вскользь, я на нём какие-то вспомогательные скрипты ваял в нескольких проектах. То, что предлагалось на питоне, всегда имело отношение к вёбу — Django и всё такое.

Один раз предлагали вакансию на Erlang, что само по себе звучало весьма интересно, но прыгать с места на место из-за этого не хотелось.
С уважением, Artem Korneev.
Re[24]: JetBrains
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 19.04.16 06:39
Оценка: +1
Здравствуйте, steep8, Вы писали:

AK>>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.


S>В данном случае после delete идет сразу new, поэтому занулять указатель бессмысленно(ему сразу же присваивается значение).


Если предположить, что new выполняется как new(nothrow), то это так.
Но в таком случае — уже говорили — действия типа "а пофиг, что не выделили, всё равно передаём OK", мягко говоря, смущают.

Если же new вызывает исключение, то в случае исключения будет в m_pSerial значение старого указателя на уже освобождённую память и разрушенный объект, и дальше всё зависит от того, что делается по этому исключению. Если пытаются использовать объект ещё раз, то последствия непредсказуемы.

Именно поэтому подход "освободил => занули" имеет весомый смысл везде, кроме деструкторов и других мест, где использовать эти переменные уже некому.
The God is real, unless declared integer.
Re[16]: JetBrains
От: itslave СССР  
Дата: 19.04.16 07:26
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Если один из инженеров скажет, что он в одиночку клепает самолёт, тогда возникнут.

Главный конструктор имеет полное право сказать нечто подобное.
Re[7]: JetBrains
От: consign  
Дата: 19.04.16 15:36
Оценка: +2 -1 :)
Здравствуйте, qxWork, Вы писали:

W>То есть пруфа не будет. Я так и думал, что это пук в муку.


В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.
Re[8]: JetBrains
От: Daneel_Olivaw  
Дата: 19.04.16 17:35
Оценка: +2 -2
Ужас. Столько гадостей в сторону одной из немногих нормальных компаний России. Зачем? Если не нравится — не апплайтесь
А по поводу собеседования — имеют полное право задавать те вопросы, которые считают нужными.
Re[17]: JetBrains
От: mgu  
Дата: 19.04.16 20:12
Оценка:
Здравствуйте, itslave, Вы писали:

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


mgu>>Если один из инженеров скажет, что он в одиночку клепает самолёт, тогда возникнут.

I>Главный конструктор имеет полное право сказать нечто подобное.

Да ну? И был ли главный конструктор?
Re[8]: JetBrains
От: mgu  
Дата: 19.04.16 21:30
Оценка: 6 (1) +1 :))) :)
Здравствуйте, consign, Вы писали:

W>>То есть пруфа не будет. Я так и думал, что это пук в муку.


C>В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.


Да ладно, вся прелесть форума в откровенных фото суждениях. А то всё "мы вам обязательно перезвоним", "извините", "пожалуйста", чисто, как в трамвае...
Re[9]: JetBrains
От: mgu  
Дата: 19.04.16 21:31
Оценка:
Здравствуйте, Daneel_Olivaw, Вы писали:

D_O>Ужас. Столько гадостей в сторону одной из немногих нормальных компаний России. Зачем?


Завидуем.
Re[27]: JetBrains
От: mgu  
Дата: 19.04.16 21:58
Оценка:
Здравствуйте, so5team, Вы писали:

mgu>>Да, рассуждать, спрашивать, сомневаться, а вовсе не утверждать. Это зазорно?


S>Если вы выкатываете замечания к коду не понимая этого кода, то не просто зазорно.


Кажется, мы разговариваем на разных языках.
Re[24]: JetBrains
От: DiPaolo Россия  
Дата: 20.04.16 05:33
Оценка: +2
Здравствуйте, steep8, Вы писали:

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


AK>>
AK>>if (m_pSerial)
AK>>    delete m_pSerial;

AK>>m_pSerial = new CSerial();
AK>>if (m_pSerial != NULL)
AK>>    ....
AK>>


AK>>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.


S>В данном случае после delete идет сразу new, поэтому занулять указатель бессмысленно(ему сразу же присваивается значение).


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

Мелочь, скажите вы. Но это позволит избежать потенциальных ошибок и урощает поддержку кода.
Патриот здравого смысла
Re[18]: JetBrains
От: itslave СССР  
Дата: 20.04.16 08:18
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Да ну? И был ли главный конструктор?

Вы знаете какую позицию занимает qxWork в джетбрейнзе и какие у него должностные обязанности?
Re[8]: JetBrains
От: hi_octane Беларусь  
Дата: 20.04.16 10:38
Оценка: +1
C>В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.
Да ну нафиг. В соседнем разделе форума они же обсуждают косяк C#-компилятора и добавляют нужную фичу в ReSharper. Живое общение на форуме однозначно добавляет респекта по сравнению с вылизанностью прессрелизов и стандартных формулировок по любому вопросу.
Nemerle — power of metaprogramming, functional, object-oriented and imperative features in a statically-typed .NET language
Re[8]: JetBrains
От: С3141566=Z http://sdeniskos.blogspot.com/
Дата: 20.04.16 14:42
Оценка: +1
Здравствуйте, consign, Вы писали:

C>В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.

Из-за того, что человек вызвал попоболь у пары кывтовец? Не смеши.
<Подпись удалена модератором>
Re[3]: JetBrains
От: Isscander  
Дата: 20.04.16 15:18
Оценка: 6 (1) +3
Здравствуйте, elmal, Вы писали:

ИМХО, на светлом заокраинном западе такая ситуация типична.
Попасть в хорошие фирмы без "internal reference" очень трудно. Разве что окончив хороший университет или (а лучше — и) поимев опыт работы в другой "хорошей фирме". Да и после этого вам сперва придется пообщаться с му...ком рекрутером, желания которого меняются в зависимости от фазы Фобоса; потом пройти все круги мытарств на интервью, где, бывает, понять чего хочет интервьюер не может никто — ни небо, ни духи предков, ни сам интервьюер; а потом долго сражаться с HRюшами, которые работать не могут и не хотят.
При этом все вокруг плачут горькими слезами что людей нет, найти никого невозможно и вообще бида-бида.
Re[19]: JetBrains
От: mgu  
Дата: 20.04.16 16:02
Оценка:
Здравствуйте, itslave, Вы писали:

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


mgu>>Да ну? И был ли главный конструктор?

I>Вы знаете какую позицию занимает qxWork в джетбрейнзе и какие у него должностные обязанности?

А вы? Пока теория вероятности работает в мою пользу.
Re[4]: JetBrains
От: Daneel_Olivaw  
Дата: 20.04.16 17:37
Оценка:
Здравствуйте, Isscander, Вы писали:

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


I>ИМХО, на светлом заокраинном западе такая ситуация типична.

I>Попасть в хорошие фирмы без "internal reference" очень трудно. Разве что окончив хороший университет или (а лучше — и) поимев опыт работы в другой "хорошей фирме". Да и после этого вам сперва придется пообщаться с му...ком рекрутером, желания которого меняются в зависимости от фазы Фобоса; потом пройти все круги мытарств на интервью, где, бывает, понять чего хочет интервьюер не может никто — ни небо, ни духи предков, ни сам интервьюер; а потом долго сражаться с HRюшами, которые работать не могут и не хотят.
I>При этом все вокруг плачут горькими слезами что людей нет, найти никого невозможно и вообще бида-бида.
Я знаю трёх людей которые попали туда без всяких рекомендаций и университет у них был самый обычный. Нужно просто заинтересовать работодателя и попасть на интервью, никто не говорил что это будет легко
Re[8]: JetBrains
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 20.04.16 18:10
Оценка: :)
Здравствуйте, consign, Вы писали:

W>>То есть пруфа не будет. Я так и думал, что это пук в муку.

C>В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.

Смею заметить, что данный форум не является официальной площадкой компании JetBrains, присутствующие здесь люди НЕ представляют компанию , и высказывают исключительно свое мнение.

По существу вопроса — таки да, упомянутый выше товарищ qx имеет честь печь пирожки в полном объёме и может говорить "я" когда речь идет о ряде продуктов компании
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[5]: JetBrains
От: Isscander  
Дата: 20.04.16 18:32
Оценка:
Здравствуйте, Daneel_Olivaw, Вы писали:

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


Я не говорю что это невозможно. Но это непросто. Попасть на хорошее место "с улицы" гораздо тяжелее, нежели используя знакомства.
Я сам попал в хорошую фирму лет 12 назад, при том что заканчивал, скажем так, весьма обычный университет. Конечно, я старался, учился, работал, готовился. Но в любом случае я думаю что кроме всего прочего мне здорово повезло.
Re[9]: JetBrains
От: mgu  
Дата: 20.04.16 19:07
Оценка:
Здравствуйте, xvost, Вы писали:

W>>>То есть пруфа не будет. Я так и думал, что это пук в муку.


X>По существу вопроса — таки да, упомянутый выше товарищ qx имеет честь печь пирожки в полном объёме и может говорить "я" когда речь идет о ряде продуктов компании


Дрожжами пользоваться не пробовали?
Re[6]: JetBrains
От: Daneel_Olivaw  
Дата: 20.04.16 19:17
Оценка:
Здравствуйте, Isscander, Вы писали:

I>Я не говорю что это невозможно. Но это непросто. Попасть на хорошее место "с улицы" гораздо тяжелее, нежели используя знакомства.

I>Я сам попал в хорошую фирму лет 12 назад, при том что заканчивал, скажем так, весьма обычный университет. Конечно, я старался, учился, работал, готовился. Но в любом случае я думаю что кроме всего прочего мне здорово повезло.

А в чём вопрос то состоит? Автор темы спрашивал можно ли попасть с улицы в JB — ответ да. Всё остальное флуд и флейм.
Re[10]: JetBrains
От: hi_octane Беларусь  
Дата: 20.04.16 21:00
Оценка:
mgu>Дрожжами пользоваться не пробовали?
За последние 10 лет они пробовали всё. Всё равно набигают орды анонимов и говорят "У вас ****** не той системы".
Nemerle — power of metaprogramming, functional, object-oriented and imperative features in a statically-typed .NET language
Re[9]: JetBrains
От: consign  
Дата: 21.04.16 12:57
Оценка: +3 -1
Здравствуйте, xvost, Вы писали:

X>Смею заметить, что данный форум не является официальной площадкой компании JetBrains, присутствующие здесь люди НЕ представляют компанию , и высказывают исключительно свое мнение.


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

X>может говорить "я" когда речь идет о ряде продуктов компании


Он их таки сам полностью написал? Или просто удачно использовал лошков, которые сделали это за него?
Отредактировано 21.04.2016 13:08 consign . Предыдущая версия .
Re[8]: JetBrains
От: msk78 Россия http://miccro.livejournal.com
Дата: 22.04.16 15:44
Оценка: +2
Здравствуйте, consign, Вы писали:

C>В компании с вменяемым отделом PR, за такое сообщение тебя бы уже уволили.


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

PS Из продуктов сей компании пробовал только Решарпер. На моём проекте он постоянно валил Студию (много проектов было), посему теперь к нему фобия
Re[10]: JetBrains
От: mgu  
Дата: 23.04.16 08:53
Оценка:
Здравствуйте, consign, Вы писали:

X>>может говорить "я" когда речь идет о ряде продуктов компании


C>Он их таки сам полностью написал? Или просто удачно использовал лошков, которые сделали это за него?


Предположим, что он их сам написал и с логикой у него всё в порядке. Проекты перешли в стадию поддержки, где требуются разработчики пожиже с зарплатой поменьше. Наверх не продвинуться -- там племянники и кунаки (это не про конкретную компанию, а общая картина), в другую контору на аналогичную должность не устроиться -- студенты поглумятся на собеседованиях. Страх. Поэтому занимаем глухую оборону под девизом "толковых разработчиков не найти".
Re[9]: JetBrains
От: mgu  
Дата: 23.04.16 09:06
Оценка: :)
Здравствуйте, msk78, Вы писали:

M>Вот согласен.

M>По хамской манере общения этот "qxWork" напоминает мальчика лет 27 с комплексами, дорвавшегося до руководства.
M>Думаю, его поведение сильно вредит имиджу компании. И даже те, кто ему рукоплещут в этой ветке, демонстрируют всего лишь защитную реакцию.
M>Врядли они захотели бы пообщаться с этим парнем, поэтому подсознательно выводы сделают.

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

M>PS Из продуктов сей компании пробовал только Решарпер. На моём проекте он постоянно валил Студию (много проектов было), посему теперь к нему фобия


Смотря с чем сравнивать. Неуловимых Джо ругать никто не будет, и на фоне того, что российские продукты мирового уровня можно пересчитать по пальцам куриной ноги, и такой неплох.
Re[10]: JetBrains
От: consign  
Дата: 23.04.16 09:36
Оценка:
Здравствуйте, mgu, Вы писали:

mgu>Те, которые всем улыбаются, а за спиной делают гадости, гораздо опаснее.


Таких надо опасаться, только если они на одном уровне с тобой. Начальник обычно не станет делать гадости своим подчиненным — если он не совсем долбанутый.
Re[10]: JetBrains
От: m1xai1  
Дата: 27.04.16 08:50
Оценка:
Здравствуйте, dr. Acula, Вы писали:


S>>Видимо поэтому аутсорсеры в РБ цветут и пахнут (те же ЕПАМ и iTransition постоянно в поиске людей)

DA>Да ну. Ничо, что от ЕПАМа UBS уходит в Польшу?

Да ну? Вы что-то путаете.
Re[23]: JetBrains
От: Няшка Россия  
Дата: 27.04.16 13:20
Оценка:
Здравствуйте, Artem Korneev, Вы писали:

AK>Сразу возникает две мысли. Во-первых, delete не обнуляет указатель. Впрочем, тут надо бы посмотреть на документацию к тому компилятору, который использовался в том проекте, но всяко надёжнее и безопаснее было бы добавить "m_pSerial = null". Ибо если какой-то компилятор обнуляет, то другой может не обнулять. Иначе рискуем вызвать delete для уже уничтоженного объекта.


delete 0 не приводит ни к чему фатальному

можно было просто писать

...
//if (m_pSerial)
delete m_pSerial;
m_pSerial = new CSerial();
...
80% людей оценивают свое мастерство выше среднего...
Отредактировано 27.04.2016 13:23 Няшка . Предыдущая версия .
Re[25]: JetBrains
От: alzt  
Дата: 27.04.16 16:17
Оценка:
Здравствуйте, so5team, Вы писали:

S>Конструктор. Только часть полей инициализируется через списки инициализации, часть -- в теле конструктора. Причем та часть, которая в теле конструктора, должна была бы инициализироваться в списках инициализации еще со времен C++98.


S>Дальше, деструктор:

S>
CATCmdDevice::~CATCmdDevice()
S>{
S>    ClearSMSArr(); // Restored 01.10.2014

S>    if (m_pTXBuff)
S>    {
S>        delete[] m_pTXBuff;  
S>        m_pTXBuff = NULL;
S>    } 

S>    if (m_pRXBuff)
S>    {
S>        delete[] m_pRXBuff;  
S>        m_pRXBuff = NULL;
S>    }
S>}
S>

S>Поля m_pTXBuff и m_pRXBuff объявлены в самом классе CATCmdDevice. Следовательно, занулять их в деструкторе после освобождения памяти смысла нет.

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

Проверка на ноль здесь тоже лишняя.
Re[24]: JetBrains
От: Artem Korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 27.04.16 18:45
Оценка:
Здравствуйте, Няшка, Вы писали:

AK>>рискуем вызвать delete для уже уничтоженного объекта.

Н>можно было просто писать

Н>...

Н>//if (m_pSerial)
Н>delete m_pSerial;
Н>m_pSerial = new CSerial();
Н>...

Мой комментарий был немного о другом. Этот код не решает проблему повторного вызова delete для уже удалённого объекта.
С уважением, Artem Korneev.
Re[4]: JetBrains
От: D. Petrov США  
Дата: 27.04.16 18:57
Оценка:
Здравствуйте, Isscander, Вы писали:

I>ИМХО, на светлом заокраинном западе такая ситуация типична.

I>Попасть в хорошие фирмы без "internal reference" очень трудно.

Все еще интереснее. В хороших компаниях есть хорошие команды с интересными проектами, а есть не очень инетересные. Интересные команды набирают очень мело людей снаружи т.к. хватает внутренних провереных кандидатов из соседних команд. В результате чего, со стороны чаще всего люди попадают не в самые интересные команды, а потом жалуются что компания какими то нудными штуками занимается.
Re[26]: JetBrains
От: so5team https://stiffstream.com
Дата: 27.04.16 20:30
Оценка: +1
Здравствуйте, alzt, Вы писали:

A>Как вариант — параноидальная проверка на случай двойного освобождения памяти.


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

Более того, ничего этого не пришлось бы писать вообще, если бы автор вместо голых указателей использовал std::vector. С учетом того, что данный код начал разрабатываться не в 80-х, и даже не в 90-х, а уже в 2000-х (наверняка либо в VS2002, либо VS2003), то оправдания работе с голыми указателями вместо std::vector найти сложно.

A>Проверка на ноль здесь тоже лишняя.


Это еще один гвоздь в рассказы AlexGin об опыте и мастерстве.
Re[27]: JetBrains
От: alzt  
Дата: 28.04.16 10:36
Оценка:
Здравствуйте, so5team, Вы писали:

A>>Как вариант — параноидальная проверка на случай двойного освобождения памяти.


S>Двойное освобождение возможно либо в случае нетривиального деструктора, либо если эти поля принадлежат базовому классу и могут быть использованы в деструкторе базового класса. В данном случае нет ни того, ни другого.


Я имел ввиду что-нибудь вроде такого:
CATCmdDevice*p = new CATCmdDevice();
p->~CATCmdDevice();
delete p;//враг не пройдёт


S>Более того, ничего этого не пришлось бы писать вообще, если бы автор вместо голых указателей использовал std::vector. С учетом того, что данный код начал разрабатываться не в 80-х, и даже не в 90-х, а уже в 2000-х (наверняка либо в VS2002, либо VS2003), то оправдания работе с голыми указателями вместо std::vector найти сложно.


Это да. Почему-то многие люди считают, что умные указатели для тех, у кого кривые руки, а они не такие.
Re[22]: JetBrains
От: superman  
Дата: 28.04.16 13:50
Оценка:
Здравствуйте, mgu, Вы писали:


mgu>Во-первых, крайне необычно сначала разблокировать, а затем блокировать, напрашивается обратный порядок, возможно, на то были причины. А std::abort() выкидывает без всяких очисток, это потенциальная мина, возможно, понадобится закрывать ресурсы или выбрасывать новое исключение в глобальный обработчик, а перед этим восстанавливать загадочный lock(). В общем, надо что-то делать либо с финализацией, либо при ошибке выставлять локальный флаг и выходить из while.


Всё там нормально с локами. Дизайн кода не самый изящьный, но нормальный, хуже было б его не отпускать.
std::abort — это да, жестко. И зачем такого от фунции требовать мне совсем не понятно.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.