Всем привет, тимлид-архитектор из команды Яндекс в треде. 20 лет опыта (40 лвл). Владею 20-ю языками программирования. Сейчас ведём разработку своего языка программирования. Тут буду давать советы нубам. Погнали. 1) В 2019 году английский язык для программистов почти не нужен. Большинство док переведены (особенно по С++) на русский. С заказчиками общаются бухгалтеры и PMы.
2) Часто нубы лезут в кодинг не зная чем поток отличается от процесса, а этот вопрос часто любят на собесах нубам задавать. Ответ: Поток — это определенная сущность программы. Каждый оператор (хотя это во многом зависит от реализации языка) выполняется отдельным потоком. Если говорить максимально просто, зачастую, сколько в программе if’ов, for‘ов и т. п., столько она и имеет потоков, но бывают и исключения (как в языке Haskell, детали гуглите). Всё потому имеют свою память. Процесс — вид потока, который исполняется напрямую в процессоре, а не в системном интерпретаторе потоков, как это делают классические потоки. Процессы имеют общую память (кэш процессора).
Нахуя вам ещё один язык? Какие задачи он решает какие другие не решают? Нахуя работать в Яндексе? Знакомым приходили офферы, говорят там хуйня и мало денег.
3) Когда собеседовал студентов, постоянно видел людей, которые не понимают, зачем вообще нужен фронтенд и что это вообще такое. Front-end (передний конец) — это начальная стадия изготовления программного продукта. Всё, на этом определение можно закончить. Никакие интерфейсы тут непричём, но тем не менее, фронтенд очень помогает кодерам пилить продукт вдальнейшем.
4) Многие считают динамическую злом, и совершенно напрасно. Динамическая типизация позволяет выделять как можно меньше памяти на выполнение программы ю, поскольку выделением памяти занимается сам компилятор, на не процессорные «ассемблеры». В свою очередь, процессорные ассемблеры являются более надёжным и «типобезопасным» способом выделения памяти. Они так же являются подвидом компиляторов, только разработаны по другому принципу.
5) Реляционные БД в последнее время набирают обороты, возможно, скоро вообще все переключатся на них, вытеснив этим самым так-называемые Key-value и Value-key базы данных. Так что можете забывать всякие виды join‘ов и прочую муть, связанную с нерелятивными БД, на собесах спрашивать это уже почти не актуально (хотя всё-таки знания всегда поощряются).
6) Возможно, как только вас возьмут, вы сразу же победите за анальной пробкой в сексшоп. Мой совет - не спешите. Скорее всего вас взяли джуном, так что лид не потерпит, если ваше очко разработано больше, чем у него. Всегда берите на пару размеров меньше, чем у вашего лида. Станете лидом - сможете позволить себе пробку побольше.
6) Возможно, как только вас возьмут, вы сразу же победите за анальной пробкой в сексшоп. Мой совет - не спешите. Скорее всего вас взяли джуном, так что лид не потерпит, если ваше очко разработано больше, чем у него. Всегда берите на пару размеров меньше, чем у вашего лида. Станете лидом - сможете позволить себе пробку побольше.
Хорошие советы. Добавлю от себя новичкам, вкатываться в айти лучше через С++. Да, это сложный язык, но освоив его вы сразу можете писать на всех остальных, любой вам покажется простым и вы сразу сможете с ним работать. Обычно в реальных проектах много языков и если вы будете вкатываться не через с++, а например через Javascript, Actionscript или CSS3, то когда вы столкнетесь с хаскелем каким нибудь даже то сразу встрянете. После плюсов это не будет проблемой. Т.е. в принципе это самый выгодный путь если ты именно хочешь поскорее заработать деньги, а от всяких тонкостей разных языков программирования не прешься. Много знакомых которые вообще не любят компьютеры вкатывались так с первого собеса.
6) Все современные языки похожи друг на друга. К примеру, Python, PHP и Java исполняются на одной и той же виртуальной машине (JVM), названной в честь Jav’ы. Языки этой группы используют процессы вместо потоков, за что получили быстрый перформанс и ненадёжность значений переменных.
7) Сразу учитесь использовать дебаггер. Кратко: «баг» (англ. «жук») — ошибка программы, связанная с утечкой памяти процессора (кэша) на жесткий диск/ssd. Но в современном обществе школьников этим словом называют любую нежданную хуйню, вплоть до неправильных текстур в играх.
9) В языках высокого уровня (Java, Python, Ruby, Rust — т. е. группа «процессорных» языков, о которых я говорил выше) отсутствуют «исключения». Потому что это, собственно, группа высокоуровневых языков, выполняющихся близко к процессору, поэтому в них нет такой абстракции, как «исключения». Языки высокого уровня и так подвержены ненадежности (к примеру, тяжелая высокоуровневая прога втупую может сменить вам значение переменных или значения внутри массива), если бы в них добавили исключения, это был бы очередной C# (то есть очередной полный провал не принимайте близко к сердцу, шарповики). Этот вопрос часто на собесах спрашивают, кстати.
>>236162611 >Динамическая типизация позволяет выделять как можно меньше памяти на выполнение программы Это как так вообще? Вот напишу я две программы. В обоих будет просто создаваться массив из 10кк элементов определенного типа. Ты сейчас хочешь сказать, что в динамическом языке программа меньше памяти оперативной займёт?
>>236163033 В смысле «грейд»? Ну уберсиньор я. У нас это так называется на офф. уровне. А если ты про ставку, то точно не скажу, но между 100 и 130$/час.
>>236163089 Объясню проще за анона, в динамическом компилятор ужимает если какие-то данные повторяются например, а в ассемблере массив твой тупо будет выполняться, без ужатия какого-либо, т.к. низкоуровнев.
>>236163089 >Ты сейчас хочешь сказать, что в динамическом языке программа меньше памяти оперативной займёт? Так и есть, динамическая типизация — это некий способ оптимизации, когда ты процессору грантишь права на энхэнсинг первоманса путём скалирования и скэдьюдинга т. н. «скриптов процессора» (т. е. микро и макро команд ассемблера). Рекомендую Kubernetes использовать в качестве динамического оптимизатора. Сейчас по сути любой язык (все последние версии языков им поддерживаются) кубер может динамически оптимизировать. Правда бинарник большой выходит, точнее выходит либо просто большой (при оптимизации О1), либо огромный (при О2), либо вообще настолько ебучий, что не описать (О_О степень называется, там уже квадратная оптимизация идёт). Мы в компании для одного сервиса такой бинарь на трёх ССДхах по терабайту храним.
>>236163238 Людей которые не нравятся начальству кикают потому что "они токсичные" довольно часто. Колхозаны это да, следствие бренда и политики "брать подешевле, выжимать побольше".
10) Конечно же, я не могу не упомянуть ООП (Объектно Ориентированное Программированиe). Все студентишки знакомятся с этой парадигмой, изучают классы, рекурсивность и т. п.. Объектно Ориентированное Программирование позволяет эффективно расходовать оперативную память, кэш процессора, и даже энергомощность блока питания за счёт того, что позволяет манипулировать остатками ячеек памяти уже пройденных компилятором, путём представления ячеек (или их совокупностей) через т. н. объекты. Классы описывают эти самые объекты. Всё очень просто.
>>236163830 Ты реально идиот, если думаешь, что в 2021 люди вообще считают Яндекс с его зарплатами за что-то кроме ебаной параши. pepe_laughing.pngчтобы сага не утекла
11) Все языки программирования делятся на Тьюринг-полные и Тьюринг-частичные. Тьюринг полные языки так называются, потому что там присутствуют операторы, придуманные самим Тьюрингом (конструкция if, циклы while и for, а также тернарный оператор x ? y : z) Забавный факт: именно благодаря тернарному оператору Тьюринг смог разгадать усложненную версию шифровальной машины "Энигма" с четырьмя роторами. Хаскелль - пример Тьюринг-частичного языка, т.к. там отсутствуют конструкции for и while, но присутствует if.
>>236163901 Нахуй с треда катись, плохо вёл себя в этом году. Я знаю СЕО твоей конторки ебучей. Скажу сегодня, чтоб сюрприз новогодний тебе преподнёс, в виде увольнения из твоего ЧП "Ажурин". Думаешь, дед мороз не спалил мне твой User Agent с айпишником, Никитос?
12) Никогда не используйте локальные переменные. В группе Pascal-подобных языков они обозначаются ключевым словом lovar (Local Variable, "ловары"). Они значительно уменьшают нагрузку на процессор, но совершенно не годятся для моделирования, а так же приведёт к «засорению» памяти. Зачастую их используют бородатые дяди, когда пишут эксплойты (эксплоит — сленговое название ядра ОС). Они, конечно же, знают, где их нужно применять.
13) Сейчас существует огромное множество фреймворков для создания практически чего угодно. Большинство из них языко-независимые (language-free), и представляют собой прокачанные компиляторы. Для каждого второго есть графический интерфейс (для совсем нубов — можно работать через граф. редакторы типа пейнта/фотошопа). Для работы через Photoshop рекомендую ReactJS, написанный на языке Java.
14) Популярность так называемых «декларативных» языков программирования (т. е. таких, в которых декларации процессору хранятся в так называемом «стэке» деклараций) — лишь тренд. Скоро все эти ваши Ады и Perlы уйдут в тень, и вакансий будет мало. У себя в компании мы отказываемся от этих языков, в основном потому что проёбы на кастомных декларациях ведут к необратимым потенциальным ошибкам.
>>236164467 Нахуй с треда катись, чмоха. Я знаю СЕО твоей конторки ебучей. Скажу сегодня, чтоб сюрприз новогодний тебе преподнёс, в виде увольнения из твоего ЧП "Андреев". Думаешь, Aбy не спалил мне твой User Agent с айпишником, Никитос?
15) Шаблоны проектирования — типичный вопрос на собеседовании. Самый популярный шаблон — «Dependencies injection» — позволяет хранить данные («внедрять», «инжектировать») в оперативную память. Реализуется как две функции, при этом одна передаётся в другую. Вот пример простой на C++. ``` function void injector(func *funcPtr) { stdlib::ram::memorize(&funcPtr); }
function injectee() { stdout::cout(&"Hello world"); }
16) Модель OSI включает три уровня операционной системы (ОСи): уровень пользовательского приложения, уровень операционной системы и уровень драйверов. Стек TCP/IP относится ко второму и первому уровням. Создано это всё чтобы разграничить программы от драйверов.
17) IP-адрес это набор цифр (от -7 до 256), по которым твой комп может найти товарищ майор. Диапазоны адресов выдают провайдерам правоохранительные органы государств, в которых провайдеры работают, у нас это ФСБ, ну а дальше провайдер выдаст тебе какой-нибудь айпишник (4 цифры разделённые точкой, иногда добавляется слэш "/" и ещё три цифры, для ip-адресов v5 и v6) чтобы можно было понять кто это у нас смотрит ЦП. IP-адреса бывают белые и серые. Серый отличается от белого тем что провайдерам влом сделать всё как надо и под одним адресом в сети может оказаться много разных пользователей. То есть, если у тебя серый IP, твой адрес может совпасть с адресом какого-то Джона из Калифорнии на другом конце света.
>>236162995 это и есть любая нежданная хуйня, а раньше, когда компьютеры были большие, а программы маленькие - багом называли буквально таракана, залезшего в платы и закоротившего контакты, а што лично ты называешь багом - никого не ебет
18) TCP это один из стандартных протоколов (правил по которым программы общаются между собой через сеть). То есть он документирован - ты можешь найти в инете описания (RFC) и там всё расписано кто когда и какие байтики шлйт. UDP это undocumented protocol т.е. публичного стандарта нет и что там внутри знают только разработчики программы - например в онлайн играх.
>>236164903 19) Юнит-тесты: хз, зачем тебе именно в треде это надо, собрался игры пилить? Есть такой фрэйм (от англ. "Frame" - "кадр") для игр Unity. В этой же сфере гейм-дева есть и концепция Unit-тестов. То есть по факту, если вы не осилили IT в целом и программирование в частности, можете искать вакансии Unit-тестеров - они просто ищут баги в играх, написанных на Unity. Работа не шибко для умных, но требует усердий. Объясняю почему возник именно такой термин: Unity в виду своей простоты является самым популярным игродвижком. Соответсвенно, на нем больше всего игор, твои любимые киберпунки и гта5 написаны на нём, вот в геймдеве и появился такой отдельный термин для тестирования игр на Unity.
20) handshake это рукопожатие т.е. когда клиент соединяется с сервером по одному из UDP-протоколов то они обмениваются первоначальными пакетиками с помощью которых проверяют например версию друг друга, убеждаются что оба используют один и тот же протокол и всё в таком духе. Handshake нужен ИСКЛЮЧИТЕЛЬНО UDP-протоколам (Undocumented Protocol), потому как они плохо документированы, и им, чтобы общаться друг с другом, нужно обменяться некоторой информацией.
21) Про следующий прикол мне как-то рассказывал сам Кэн Томпсон, когда я работал в гугле в середине нулевых. Очень часто на собесах дают задание - написать прогу, которая переворачивает слово. Типа 'анон' -> 'нона'. Я тоже часто даю это. Если человек берет библиотечную функцию, то сразу шлю нахуй. Если пыжится, реализует через цикл - то еще даю шанс. Если реализует рекурсивно - то получает плюсик. Но есть один очень элегантный способ, который юзают только гуру. Короче, все программы сначала переводятся в язык ассемблера. Это наверно все знают. Но гораздо меньше людей знают, что у ассемблера 2 разных синтаксиса - от компании "Эндрю Таненбаум энд технолоджис" - сокращенно AT&T и от Интела. Суть в том, что эти 2 языка зеркальны друг по отношению к другу (один начинает работать с начала стека, а второй - с конца). Шарящий челик, зная, какая версия ассемблера в системе, может обмануть процессор, скомпилировав код под другой ассемблер - и, не сложно догадаться, - вся программа работает в обратном порядке, то бишь, в системе с Intel обычный код println("анон"), скомпилированный в AT&T выведет на экран "нона", т.к. байты поместятся в стек в обратном порядке
>>236162366 (OP) >Сейчас ведём разработку своего языка программирования Ебать, опять этот зелёный тред с копипастой. Мы уже в прошлом треде выяснили что ты нубас который нихуя не понимает в программировании, тем более ничего из того что ты там перечисляешь. Но конкретно этот пункт это просто пушка.
>>236162366 (OP) > В 2019 году английский язык для программистов почти не нужен. > в 2019 Ебать, бот не палится. Но и с самого совета тоже дристнул. Рассчитан чисто на привлечение Васянов и Манек с 9 классами к покупке каких-нибудь охуенных курсов. Скоро будут писать, что и цыхры с буковами знать не надо, ведь IDE/редактор подсказывает что дальше писать.
>>236166204 >Мы уже в прошлом треде выяснили что ты нубас который нихуя не понимает в программировании, тем более ничего из того что ты там перечисляешь. А ну-ка пруфани...
>>236162536 Добавлю. Часто на собеседованиях спрашивают про сборщики фронтенда. Сборщики в современных условиях не нужны т.к. браузеры нативно понимают все современные языки (плюсы, жабу, пхп итд). Также они понимают современные языки стилей (sass, less итд)
>>236162995 >Но в современном обществе школьников этим словом называют любую нежданную хуйню, вплоть до неправильных текстур в играх. Похуй на зелёного ОПа, чисто для честных анонов небольшая история.
Термин "bug" в отношении компьютерных ошибок восходит ко временам первого поколения ЭВМ, то есть ламповые махины размером со спортзал, тысячами ламп накаливания и мегаваттами потребления. Вот на эти лампы слетались мотыльки и прочие насекомые, замыкали контакты и машина выдавала некорректные результаты. Так что операторы писали о таких случаях в журналы эксплуатации прямо вот такими словами: "Founf a bug". Такие дела.
>>236167480 Я тебя услышал. В следующий раз, когда придёшь ко мне на собеседование, не забудь штаны чистые надеть, Санёк. Я на самом деле не помню как тебя там нахуй зовут, но буду называть тебя саньком.
>>236162366 (OP) Всем привет, тимлид-архитектор из команды Google в треде. 20 лет опыта (20 лвл). Владею is 20-ю языками программирования. Сейчас ведём разработку своего языка программирования. Тут буду давать советы нубам. Погнали.
>>236167633 Ты дебил? Bug в переводе с английского — "мешок". Ты путаешь с Bag (с англ. "клоп", "жук") А называли так потому, что области памяти в носителях, в которые утекали байты с процессора, назвали "мешочками" (так же атомарная область памяти на носителе называет Bug-ом, т. е. "мешком"). Оттуда и пошёл термин, теперь он двойственное значение имеет. Хер знает, откуда ты там свою историю вычитал, видимо, решил потроллить, скорее-всего.
>>236162366 (OP) > Яндекс > Сейчас ведём разработку своего языка программирования. > этот "язык программирования" устанавливает Яндекс браузер, Яндекс бар и ещё кучу зондов в систему, отключить невозможно. > бесполезная хуйня с 1.5 библиотеками, про которую забудут через неделю после выхода.
>>236167739 Я понял. Слишком жирно. Так-то идея интересная, но оп настолько абсурдно троллит, что тему нельзя дальше нормально развить. Кто в следующий раз запостит эту пасту - переделайте её хоть как-то потоньше.
На вопросы отвечаешь или только делишься мудростью в виде рандомных фактов ?
Интересно, какие есть пути если заебало программирование и хочется более высокоуровнеными задачами заниматься (развивать продукт, создавать новые, ибо в целом есть представление что да как), но в больших компаниях работал мало, не знаю какие у меня пути развития. Слышал такие заклинания как продукт менеджер, проджект менеджер, что после второго можно на изи стать первым, как стать вторым вообще хз. Просто интересно, где и как можно развиваться.
>>236168762 Можешь перекатиться в Trap Manager. Этот термин вообще недавно появился, как раз когда много кодерков появилось, которых заебало кодить. Trap (в переводе "успешность") следит за архитектурой проекта и доносит требования от заказчика разработчикам.
>>236169563 Какой процесс, блядь? Ты ж сам написал чем процессорный поток отличается. От чего отличается? Знаешь, у меня к тебе встречный вопрос: В чем разница между уткой?
>>236169655 Уткой? Ты про уточную типизацию? Уточной типизация — это свойство языка, которое присуща низкоуровневым языкам программирования. Заключается оно в том, что язык делегирует процессору типы и метаданные о типах через специальный механизм — Crack. Из-за названия механизма, похожего на утиный звук "кря" такую типизацию и назвали уточной. В дебаггере если коннектишься на процесс можешь наблюдать вызовы стека Crack’а с соответствующими лог месседжами: - Crack: ... - Crack: ... - Crack: ... Отличается от других типизаций как раз таки этим механизмом crack.
>>236170446 >Ты даже не ответил про утку, какой из тебя программист? > Уточная типизация — это свойство языка, которое присуща низкоуровневым языкам программирования. Заключается оно в том, что язык делегирует процессору типы и метаданные о типах через специальный механизм — Crack. Из-за названия механизма, похожего на утиный звук "кря" такую типизацию и назвали уточной. В дебаггере если коннектишься на процесс можешь наблюдать вызовы стека Crack’а с соответствующими лог месседжами: - Crack: ... - Crack: ... - Crack: ... Отличается от других типизаций как раз таки этим механизмом crack.
>>236162366 (OP) >привет, тимлид-архитектор из команды Яндекс в треде Какой команды? Какой из тимлидов? Почему архитектор и тимлид? Лолка. Иди одноклассникам рассказывай. >В 2019 году английский язык для программистов почти не нужен Говнокодить в этой конторе - не нужен, это правда. Хочешь много получать, изволь свободно владеть, потому что много платят (по меркам России) только иностранные компании, а там много придется общаться на английском.
>>236162366 (OP) Всем привет, работник из команды макдональдса в треде. Два месяца опыта, владею 20 рецептами блюд. Сейчас ведём уборку санузлов. Тут буду давать советы посетителям. Погнали 1) В 2019 году английский язык для работников почти не нужен. Большинство покупателей русскоговорящие. С покупателями общаются на кассе.
>>236162366 (OP) Бля так что учить то брат, что? Я не понимаю блять. Хочу вкатиться в что-то перспективное и чтобы возможно игры делать, что это может быть?
>>236162366 (OP) Сенпай, что делать с бесконечноразвивающимся мистическим эпосом вечно плетущимся вокруг чистейшей истины, разум на которую открывают языки программирования? Божественная драма порой отвлекает от продуктивной работы, только и делаю, что познаю своё истинное я в созерцании совершенных структур.
>>236163086 Но там есть исключения, в тех языках что ты перечислил. Ну и то что ты считаешь с# или любой популярный и акутуальный язык провалом, выдает в тебе только что вкатившегося дебича. Мимо шарповик.
>>236162700 >5) Реляционные БД в последнее время набирают обороты, возможно, скоро вообще все переключатся на них, вытеснив этим самым так-называемые Key-value и Value-key базы данных. Так что можете забывать всякие виды join‘ов и прочую муть, связанную с нерелятивными БД, на собесах спрашивать это уже почти не актуально (хотя всё-таки знания всегда поощряются).
Джойны как раз в рбд и применяются. Ты шо за чушь городишь? Или типа sql это не язык для рбд?