Кажется, я видел похожий пост, только там, как в анекдоте, не "развернуть список", а "решить FizzBuzz", и не "функциональное программирование", а "машинное обучение", и не "тесты не нужны — мы формально доказали", а "надо было взять более глубокую нейронную сеть": https://habr.com/ru/post/301536/
Это наверное такой мем от функциональщиков — я раз несколько на Хабре в статьях о ФП видел утверждение, что "компилятор оптимизирует", или что "оптимальный код — забота компилятора". Кажется, иногда это говорили всерьез.
Ради справедливости, есть GObject https://habr.com/ru/post/348204/ хотя согласен, что в языке есть фундаментальные проблемы, не решающиеся никаким новым стандартом.
UPD. Не заметил ремарки про "чистый" Си. Ну ради бога, кто еще в современном мире пишет на чистом языке из коробки, если только коробка не содержит в себе "нечисть" в виде 100500+ встроенных библиотек.
Скорее всего, эта цитата вброс такой. В проектах Gnome и в GTK+ используется Си, который отличается от "университетской копролитной сишки" так же, как Spring Framework от Java 3, потому что инструменты не сидят на месте, а обрастают функционалом и удобством. Правда, для новых приложений пишут на других языках, например Vala. В других "больших" проектах происходит то же самое, независимо от языка.
Через всю статью красной нитью проходит тезис о низкой подверженности людей с высоким IQ данным методам манипуляций. Что-де "я не даю ввести себя в заблуждение и это коррелирует с величиной IQ", мягко связывая IQ с каждой буквой ИМЛ и импонируя публике, мнящей себя имеющей высокий IQ.
На деле скорость мозговых вычислений слабо зависит от поддаваемости иллюзиям, я имею в виду, конечно, что автор не приводит этому никаких надежных статистических данных, из которых с помощью надежного аппарата математической статистики можно сделать какие-либо выводы. Абьюзится ассоциация низкого IQ с подверженностью глупостям (а под манипуляцию "очевидно" попадают "только" глупые люди).
Позволю себе сделать reductio ad hitlerum и напомнить о примере Германии известных годов, где прекрасные ученые, светила мировой науки, с удовольствием сжились с мифами двадцатого века, например, о неспособности славян жить в городах или управлять государствами, и даже использовали труд заключенных лагерей — вчерашних соседей по дому.
В учебнике, по которому я готовился к экзамену по терверу и матстату, приводился наглядный пример разницы средних величин в зарплате, а также совет использовать матожидание от зарплаты — для отчета от проправительственной организации, медиану — от нейтральных групп, а моду — в повестке дня оппозиционной партии...
А как вы в 2004 году уже понимали, что IT это ваше? У вас был компьютер дома, интернет, кружок по С++, крутая школа? А у многих не было в то время -> люди с аналитическим складом ума становились не теми, кем становятся сейчас.
P. S. История в блогпосте является единичной — средний возраст разработчиков вот-вот пробьет сверху возраст совершеннолетия.
Кристина, вы большой молодец, мне было интересно почитать блогпост про ваш опыт. Есть только триггер на предложение в заголовке:
И, пожалуй, разрушу стереотип о том, что тестирование — это легкий способ «войти в IT».
Никак не могу согласиться с этим мифбастингом. Полгода назад вы работали в сфере из параллельной Вселенной. А сейчас вы работаете тестировщиком в крупной IT фирме, подняв опыт с нуля.
Сколько вы потратили дней и сколько прочитали книг, чтобы стать тестировщиком? А сколько бы лет и "страданий" вам понадобилось, чтобы стать врачом-хирургом, ученым-математиком, летчиком?
Пост буквально кричит о том, как хорошо и легко поменять текущую профессию на работу мечты в компании мечты. Давайте называть вещи своими именами. В этом нет никакого принижения — все равно тестировщиком, конечно, стать может только человек со способностями к аналитике, да и выпускники физфаков и матфаков почти поголовно идут по вашему пути.
Упущен тот момент, что метафоричная толстая девка отбила денежные траты своим вкладом в продукты бизнеса. К тому же, можно подумать, бесценные знания даёте джунам? Точно такие же, какие они сами могут найти в интернете или книжках по языкам программирования.
Программиста с "якорем" взять "лучше" всего, потому что ему можно влупить зарплату в полтора раза меньше остальным?
Я не понял, что я должен увидеть на месте ровесников. Те, кому кровь из носа нужно — те достаточно рано идут на парт-тайм/летом куда-нибудь, и надо сказать, в долгосрочной перспективе устраиваются лучше тех, кто только учится до выпуска.
А те, кто не идут до выпуска, верят в мантры, что-де выпускник XXX получает в среднем 300 тысяч в наносекунду сразу после вручения диплома.
Вот смотрите — сейчас я на 4 семестре. Отвалилось за все время в отчисление и академ, не скажу точно, но где-то 33% достаточно толковых ребят из-за нагрузки. А через две недели будет зачет по предмету "Электродинамика", где на первую пересдачу отправится 50% от текущего состава курса. И по именно по этому предмету будет больше всего отчислений на очередной сессии. Такая картина каждый год. Это нормально, по-вашему?
Безотносительно результатов теста, можно сказать, что наука в России хромает без участия бизнеса. Наука не знает, что требуется бизнесу, а бизнес не может повлиять на академическую сферу. Следовательно, целью становится самому стать профи в своей сфере по мере своих возможностей. Мотивации "ботать" как сволочь нет вообще, так как мы все знаем, что в жизни является главным мотиватором, если вы не сын Рокфеллера, да и смысла нет. A c "топовых" факультетов можно выйти, не умея программировать вообще.
P. S. Сам учусь в одном топовом вузе "для программистов". На первых двух курсах программирование такое:
1 семестр — "алгоритмы", 1/3 курса учит Си с нуля, 2/3 Паскаль, рассчитано в целом на тех, кто клавиатуру в первый раз увидел в машзале
2 семестр — Ассемблер и всё, связанное с ним
3 семестр — Си и системное программирование на нем с копанием в устройстве Linux до винтика
4 семестр — полсеместра C++, полсеместра странные "грамматики".
Чистого программирования за компами — одна пара в неделю. Остальное забито умопомрачительными "матаном" и физикой и обязательными физкультурой и гуманитарными курсами.
После 2х курсов идёт распределение на кафедру, может как повезти попасть на более-менее, где можно "даже" потрогать суперкомпьютеры, а можно попасть на кафедру "Математической Физики" и похожие, их намного больше (не имею ничего против), где с прогой можно распрощаться насовсем.
Прикол еще в том, что в некоторых странах "террористом" могут объявить человека, который в некоторых других странах является таковым со знаком "минус". Но по каким-то причинам проживает на территории этой самой страны на полулегальном положении. Я не буду показывать пальцем — история 90-х, 00-х, 10-х годов в Википедии.
Возможна подмена понятий — кроме террористов будут пытаться детектировать всех подряд преступников (это ок, но все равно недокументированная возможность), а может и не преступников вовсе, а так, чуточку подозреваемых.
Также интересует, что по мнению уважаемого Павла является authorities (мне правда интересно). Россия, понятное дело, не является. А суд немецкого города Баден-Баден вполне себе court? А суд маленького города в Румынии? А суд Косово или там руандийский?
Так написано: "работа будет связана либо с разработкой/оптимизацией фрагментов новых/старых версий Андроид, либо с реализацией сервисов Гугл на Андроид", то есть и Android-разработчик, и разработчик Android.
Можно подозревать что сил на разработку всего Android, т.е на оболочку, API, свистелки, сервисы типа Google Play тратится несоизмеримо больше сил, чем на создание клиентов приложений на всем готовом, то есть в сорцы нырять пришлось бы все равно. Точно ничего не утверждаю, в Google не работал Android-девом, где-либо еще тоже.
Может, они искали по случаю пацана, который упоролся и выучил наизусть исходники Android API, и сэкономит время команде. И не прогуливал универ, чтобы рассказать как хэшмап работает.
В Google тоннами шлют свои биографии со всех стран мира. Шанс что рандомное резюме пробьется, равен std::numeric_limits<double>::epsilon(). Из каждого утюга пишут, что не шлите через сайт pdf, отправьте через знакомого, иначе вам придет "привет, досвидания" автоматом.
Логика такая, что если формочки там клепает overqualified профессор компуктерн саенс, прошедший отбор 1000 человек на место, то пусть это и будет профессор, который к тому же еще точно знает, что в начало списка добавлять миллион элементов по отдельности вредно, а не какой-то рандомный во всех смыслах парень.
А потом погроммист проходит в Google, резко прыгает к вершине пирамиды Маслоу и начинается выпендреж: "5 строк за год всего лишь послал", "Ну вот в деньгах не факт что больше чем во многих других компаниях"...
Можете привести пример из первого пункта? Вы имеете в виду имба-задачи как Traveling Salesman, которую разные гении начинают оптимизировать путем "а давайте брать ближайшую незанятую точку и идти туда"? (Хотя тут уже все перекопано и есть эвристичестие решения, которые ошибаются на 0.05% от идеального-преидеального варианта)
Просто если человек решал много задач, у него отпечатывается "неполное решение = вообще не решение", то есть если код не прошел даже самый крайний corner case — может идти лесом.
Когда американцы узнают, что в России в объявлениях о приеме на работу оговаривают возраст – например до 35 лет, они удивляются. В США работодателя за это могут привлечь к суду.
А тут нигде никто не нужен в принципе. Старики не нужны на рынке, дети-инвалиды не нужны в школе, съемщики из других стран не нужны в квартире, всё это само собой разумеется.
Не всегда. Почти все оптимизации компилятора эвристические, то есть некий дополнительный флаг (развернуть рекурсии, скрыть фреймы) в -O(x+1) по сравнению с -O(x) будет просто попыткой сделать программу более "оптимальной", но может иметь и обратный эффект. -O3 предполагается лучше -O2, как -O2 лучше -O1, это не значит что это будет правда работать быстрее на рандомной программе.
Довольно много вещей с -O2 работают быстрее чем с -O3, в т.ч. этот код. По-хорошему надо бы еще отдельные флаги оптимизации тестировать, чтобы затюнить быстродействие.
Но вообще-то решение таких кроссвордов — это задача для SAT солвера.
SAT солвер скушает быстро большой черно-белый кроссворд? Если не рассматривать цветные, для которых страшно генерировать конъюнктивную форму.
Пусть у нас есть K групп суммарно и кроссворд размером NxN, мы вычислили порядка KxN булевых переменных (для каждой группы все возможные позиции в его ряду) и состряпали формулу, она будет быстро считаться?
Может есть менее затратный способ составить формулу? Я к тому что если взять K=4 в среднем группы на ряд и N=50, выйдет 500'000 булевых переменных, которые будут считаться до Второго Пришествия.
На зарплату старшего научного сотрудника-академика.
Кажется, я видел похожий пост, только там, как в анекдоте, не "развернуть список", а "решить FizzBuzz", и не "функциональное программирование", а "машинное обучение", и не "тесты не нужны — мы формально доказали", а "надо было взять более глубокую нейронную сеть": https://habr.com/ru/post/301536/
Это наверное такой мем от функциональщиков — я раз несколько на Хабре в статьях о ФП видел утверждение, что "компилятор оптимизирует", или что "оптимальный код — забота компилятора". Кажется, иногда это говорили всерьез.
Ради справедливости, есть GObject https://habr.com/ru/post/348204/ хотя согласен, что в языке есть фундаментальные проблемы, не решающиеся никаким новым стандартом.
UPD. Не заметил ремарки про "чистый" Си. Ну ради бога, кто еще в современном мире пишет на чистом языке из коробки, если только коробка не содержит в себе "нечисть" в виде 100500+ встроенных библиотек.
Скорее всего, эта цитата вброс такой. В проектах Gnome и в GTK+ используется Си, который отличается от "университетской копролитной сишки" так же, как Spring Framework от Java 3, потому что инструменты не сидят на месте, а обрастают функционалом и удобством. Правда, для новых приложений пишут на других языках, например Vala. В других "больших" проектах происходит то же самое, независимо от языка.
Через всю статью красной нитью проходит тезис о низкой подверженности людей с высоким IQ данным методам манипуляций. Что-де "я не даю ввести себя в заблуждение и это коррелирует с величиной IQ", мягко связывая IQ с каждой буквой ИМЛ и импонируя публике, мнящей себя имеющей высокий IQ.
На деле скорость мозговых вычислений слабо зависит от поддаваемости иллюзиям, я имею в виду, конечно, что автор не приводит этому никаких надежных статистических данных, из которых с помощью надежного аппарата математической статистики можно сделать какие-либо выводы. Абьюзится ассоциация низкого IQ с подверженностью глупостям (а под манипуляцию "очевидно" попадают "только" глупые люди).
Позволю себе сделать reductio ad hitlerum и напомнить о примере Германии известных годов, где прекрасные ученые, светила мировой науки, с удовольствием сжились с мифами двадцатого века, например, о неспособности славян жить в городах или управлять государствами, и даже использовали труд заключенных лагерей — вчерашних соседей по дому.
В учебнике, по которому я готовился к экзамену по терверу и матстату, приводился наглядный пример разницы средних величин в зарплате, а также совет использовать матожидание от зарплаты — для отчета от проправительственной организации, медиану — от нейтральных групп, а моду — в повестке дня оппозиционной партии...
А с теми, у кого зарплата меньше (видимо, не захотели переезжать в другую страну), общаться перестали? ;)
А как вы в 2004 году уже понимали, что IT это ваше? У вас был компьютер дома, интернет, кружок по С++, крутая школа? А у многих не было в то время -> люди с аналитическим складом ума становились не теми, кем становятся сейчас.
P. S. История в блогпосте является единичной — средний возраст разработчиков вот-вот пробьет сверху возраст совершеннолетия.
Кристина, вы большой молодец, мне было интересно почитать блогпост про ваш опыт. Есть только триггер на предложение в заголовке:
Никак не могу согласиться с этим мифбастингом. Полгода назад вы работали в сфере из параллельной Вселенной. А сейчас вы работаете тестировщиком в крупной IT фирме, подняв опыт с нуля.
Сколько вы потратили дней и сколько прочитали книг, чтобы стать тестировщиком? А сколько бы лет и "страданий" вам понадобилось, чтобы стать врачом-хирургом, ученым-математиком, летчиком?
Пост буквально кричит о том, как хорошо и легко поменять текущую профессию на работу мечты в компании мечты. Давайте называть вещи своими именами. В этом нет никакого принижения — все равно тестировщиком, конечно, стать может только человек со способностями к аналитике, да и выпускники физфаков и матфаков почти поголовно идут по вашему пути.
Упущен тот момент, что метафоричная толстая девка отбила денежные траты своим вкладом в продукты бизнеса. К тому же, можно подумать, бесценные знания даёте джунам? Точно такие же, какие они сами могут найти в интернете или книжках по языкам программирования.
Программиста с "якорем" взять "лучше" всего, потому что ему можно влупить зарплату в полтора раза меньше остальным?
Я не понял, что я должен увидеть на месте ровесников. Те, кому кровь из носа нужно — те достаточно рано идут на парт-тайм/летом куда-нибудь, и надо сказать, в долгосрочной перспективе устраиваются лучше тех, кто только учится до выпуска.
А те, кто не идут до выпуска, верят в мантры, что-де выпускник XXX получает в среднем 300 тысяч в наносекунду сразу после вручения диплома.
Вот смотрите — сейчас я на 4 семестре. Отвалилось за все время в отчисление и академ, не скажу точно, но где-то 33% достаточно толковых ребят из-за нагрузки. А через две недели будет зачет по предмету "Электродинамика", где на первую пересдачу отправится 50% от текущего состава курса. И по именно по этому предмету будет больше всего отчислений на очередной сессии. Такая картина каждый год. Это нормально, по-вашему?
Безотносительно результатов теста, можно сказать, что наука в России хромает без участия бизнеса. Наука не знает, что требуется бизнесу, а бизнес не может повлиять на академическую сферу. Следовательно, целью становится самому стать профи в своей сфере по мере своих возможностей. Мотивации "ботать" как сволочь нет вообще, так как мы все знаем, что в жизни является главным мотиватором, если вы не сын Рокфеллера, да и смысла нет. A c "топовых" факультетов можно выйти, не умея программировать вообще.
P. S. Сам учусь в одном топовом вузе "для программистов". На первых двух курсах программирование такое:
1 семестр — "алгоритмы", 1/3 курса учит Си с нуля, 2/3 Паскаль, рассчитано в целом на тех, кто клавиатуру в первый раз увидел в машзале
2 семестр — Ассемблер и всё, связанное с ним
3 семестр — Си и системное программирование на нем с копанием в устройстве Linux до винтика
4 семестр — полсеместра C++, полсеместра странные "грамматики".
Чистого программирования за компами — одна пара в неделю. Остальное забито умопомрачительными "матаном" и физикой и обязательными физкультурой и гуманитарными курсами.
После 2х курсов идёт распределение на кафедру, может как повезти попасть на более-менее, где можно "даже" потрогать суперкомпьютеры, а можно попасть на кафедру "Математической Физики" и похожие, их намного больше (не имею ничего против), где с прогой можно распрощаться насовсем.
Прикол еще в том, что в некоторых странах "террористом" могут объявить человека, который в некоторых других странах является таковым со знаком "минус". Но по каким-то причинам проживает на территории этой самой страны на полулегальном положении. Я не буду показывать пальцем — история 90-х, 00-х, 10-х годов в Википедии.
Возможна подмена понятий — кроме террористов будут пытаться детектировать всех подряд преступников (это ок, но все равно недокументированная возможность), а может и не преступников вовсе, а так, чуточку подозреваемых.
Также интересует, что по мнению уважаемого Павла является authorities (мне правда интересно). Россия, понятное дело, не является. А суд немецкого города Баден-Баден вполне себе court? А суд маленького города в Румынии? А суд Косово или там руандийский?
Так написано: "работа будет связана либо с разработкой/оптимизацией фрагментов новых/старых версий Андроид, либо с реализацией сервисов Гугл на Андроид", то есть и Android-разработчик, и разработчик Android.
Можно подозревать что сил на разработку всего Android, т.е на оболочку, API, свистелки, сервисы типа Google Play тратится несоизмеримо больше сил, чем на создание клиентов приложений на всем готовом, то есть в сорцы нырять пришлось бы все равно. Точно ничего не утверждаю, в Google не работал Android-девом, где-либо еще тоже.
Может, они искали по случаю пацана, который упоролся и выучил наизусть исходники Android API, и сэкономит время команде. И не прогуливал универ, чтобы рассказать как хэшмап работает.
В Google тоннами шлют свои биографии со всех стран мира. Шанс что рандомное резюме пробьется, равен std::numeric_limits<double>::epsilon(). Из каждого утюга пишут, что не шлите через сайт pdf, отправьте через знакомого, иначе вам придет "привет, досвидания" автоматом.
Логика такая, что если формочки там клепает overqualified профессор компуктерн саенс, прошедший отбор 1000 человек на место, то пусть это и будет профессор, который к тому же еще точно знает, что в начало списка добавлять миллион элементов по отдельности вредно, а не какой-то рандомный во всех смыслах парень.
А потом погроммист проходит в Google, резко прыгает к вершине пирамиды Маслоу и начинается выпендреж: "5 строк за год всего лишь послал", "Ну вот в деньгах не факт что больше чем во многих других компаниях"...
Можете привести пример из первого пункта? Вы имеете в виду имба-задачи как Traveling Salesman, которую разные гении начинают оптимизировать путем "а давайте брать ближайшую незанятую точку и идти туда"? (Хотя тут уже все перекопано и есть эвристичестие решения, которые ошибаются на 0.05% от идеального-преидеального варианта)
Просто если человек решал много задач, у него отпечатывается "неполное решение = вообще не решение", то есть если код не прошел даже самый крайний corner case — может идти лесом.
Когда американцы узнают, что в России в объявлениях о приеме на работу оговаривают возраст – например до 35 лет, они удивляются. В США работодателя за это могут привлечь к суду.
А тут нигде никто не нужен в принципе. Старики не нужны на рынке, дети-инвалиды не нужны в школе, съемщики из других стран не нужны в квартире, всё это само собой разумеется.
Не всегда. Почти все оптимизации компилятора эвристические, то есть некий дополнительный флаг (развернуть рекурсии, скрыть фреймы) в -O(x+1) по сравнению с -O(x) будет просто попыткой сделать программу более "оптимальной", но может иметь и обратный эффект. -O3 предполагается лучше -O2, как -O2 лучше -O1, это не значит что это будет правда работать быстрее на рандомной программе.
Довольно много вещей с -O2 работают быстрее чем с -O3, в т.ч. этот код. По-хорошему надо бы еще отдельные флаги оптимизации тестировать, чтобы затюнить быстродействие.
SAT солвер скушает быстро большой черно-белый кроссворд? Если не рассматривать цветные, для которых страшно генерировать конъюнктивную форму.
Пусть у нас есть K групп суммарно и кроссворд размером NxN, мы вычислили порядка KxN булевых переменных (для каждой группы все возможные позиции в его ряду) и состряпали формулу, она будет быстро считаться?
Может есть менее затратный способ составить формулу? Я к тому что если взять K=4 в среднем группы на ряд и N=50, выйдет 500'000 булевых переменных, которые будут считаться до Второго Пришествия.