Всем привет, тимлид-архитектор из команды Яндекс в треде. 20 лет опыта (40 лвл). Владею 20-ю языками программирования. Сейчас ведём разработку своего языка программирования. Тут буду давать советы нубам. Погнали. 1) В 2019 году английский язык для программистов почти не нужен. Большинство док переведены (особенно по С++) на русский. С заказчиками общаются бухгалтеры и PMы.
>>235812609 (OP) 2) Часто нубы лезут в кодинг не зная чем поток отличается от процесса, а этот вопрос часто любят на собесах нубам задавать. Ответ: Поток — это определенная сущность программы. Каждый оператор (хотя это во многом зависит от реализации языка) выполняется отдельным потоком. Если говорить максимально просто, зачастую, сколько в программе if’ов, for‘ов и т. п., столько она и имеет потоков, но бывают и исключения (как в языке Haskell, детали гуглите). Всё потому имеют свою память. Процесс — вид потока, который исполняется напрямую в процессоре, а не в системном интерпретаторе потоков, как это делают классические потоки. Процессы имеют общую память (кэш процессора).
>>235812609 (OP) 3) Когда собеседовал студентов, постоянно видел людей, которые не понимают, зачем вообще нужен фронтенд и что это вообще такое. Front-end (передний конец) — это начальная стадия изготовления программного продукта. Всё, на этом определение можно закончить. Никакие интерфейсы тут непричём, но тем не менее, фронтенд очень помогает кодерам пилить продукт вдальнейшем.
>>235812609 (OP) 4) Многие считают динамическую злом, и совершенно напрасно. Динамическая типизация позволяет выделять как можно меньше памяти на выполнение программы ю, поскольку выделением памяти занимается сам компилятор, на не процессорные «ассемблеры». В свою очередь, процессорные ассемблеры являются более надёжным и «типобезопасным» способом выделения памяти. Они так же являются подвидом компиляторов, только разработаны по другому принципу.
Бля маня заебал пудрить мозги своей ебалой, уже не первый раз вижу. Ведь даунич прочитает и пойдет с этой хуйней на собес или в баре таким же неучам пиздеть с умным видом
Как мне стать программистом, разработчиком? Я вот учусь на разработчика моб. приложений, но нихуя никаго интереса, а раньше был. Не знаю, либо я тупой либо преподают на отъебись (ну я соответственно забил терь хуй на учёбу, т.к. желание пропало) , может самому обучиться как-то и нахий диолом ненужен? Вот сейчас сессия, будет под 30 хвостов в универе, а сдавать прям ничего не хочется. Уже второй раз поступаю... но бля никак, может мне забить хуй? Или реально нет смысла в универах РФ учиться? А? Есть кто живет в нормальном достатке, без образования? Или я нихуя не добьюсь в этом мире и буду сдыхать с ЗП в 25к в городе миллионике ? :..(
Можно ли где-то начать карьеру программиста, разработчика нихуя в этом не шаря по началу ? Что нужно знать, понимать чтобы взяли джуном? Сколько лет опыта и где нужно иметь для джуна? Со скольки начинается зп начинающего программиста, разраба?
5) Реляционные БД в последнее время набирают обороты, возможно, скоро вообще все переключатся на них, вытеснив этим самым так-называемые Key-value и Value-key базы данных. Так что можете забывать всякие виды join‘ов и прочую муть, связанную с нерелятивными БД, на собесах спрашивать это уже почти не актуально (хотя всё-таки знания всегда поощряются).
>>235812996 Ты дебил? В этом и суть треда. Не успеешь оглянуться, а там в 2025 уже новый RFC о потоках выпускают и он соответствует тому, что оп писал.
6) Возможно, как только вас возьмут, вы сразу же победите за анальной пробкой в сексшоп. Мой совет - не спешите. Скорее всего вас взяли джуном, так что лид не потерпит, если ваше очко разработано больше, чем у него. Всегда берите на пару размеров меньше, чем у вашего лида. Станете лидом - сможете позволить себе пробку побольше.
>>235813956 Это ты долбоёб, если ты считаешь, что здесь хуйню постят. Иди книжки почитай, неуч блять. ОП может неточности и допускает, но в целом всё так.
6) Все современные языки похожи друг на друга. К примеру, Python, PHP и Java исполняются на одной и той же виртуальной машине (JVM), названной в честь Jav’ы. Языки этой группы используют процессы вместо потоков, за что получили быстрый перформанс и ненадёжность значений переменных.
7) Сразу учитесь использовать дебаггер. Кратко: «баг» (англ. «жук») — ошибка программы, связанная с утечкой памяти процессора (кэша) на жесткий диск/ssd. Но в современном обществе школьников этим словом называют любую нежданную хуйню, вплоть до неправильных текстур в играх.
9) В языках высокого уровня (Java, Python, Ruby, Rust — т. е. группа «процессорных» языков, о которых я говорил выше) отсутствуют «исключения». Потому что это, собственно, группа высокоуровневых языков, выполняющихся близко к процессору, поэтому в них нет такой абстракции, как «исключения». Языки высокого уровня и так подвержены ненадежности (к примеру, тяжелая высокоуровневая прога втупую может сменить вам значение переменных или значения внутри массива), если бы в них добавили исключения, это был бы очередной C# (то есть очередной полный провал не принимайте близко к сердцу, шарповики). Этот вопрос часто на собесах спрашивают, кстати.
Чем больше таких тредов - тем больше рабочих мест останется мне(будущему выпускнику тех вуза). Так держать ОП! Расскажи кста ещё про классы, очень интересно.
10) Конечно же, я не могу не упомянуть ООП (Объектно Ориентированное Программированиe). Все студентишки знакомятся с этой парадигмой, изучают классы, рекурсивность и т. п.. Объектно Ориентированное Программирование позволяет эффективно расходовать оперативную память, кэш процессора, и даже энергомощность блока питания за счёт того, что позволяет манипулировать остатками ячеек памяти уже пройденных компилятором, путём представления ячеек (или их совокупностей) через т. н. объекты. Классы описывают эти самые объекты. Всё очень просто.
>>235814550 >>235814518 Держи, брат. Насчёт мест: не знаю, я пытаюсь как можно более понятно современным студентам вещи объяснять. Но ты прав, наверное, испугаются и захотят выкатиться из IT.
11) Все языки программирования делятся на Тьюринг-полные и Тьюринг-частичные. Тьюринг полные языки так называются, потому что там присутствуют операторы, придуманные самим Тьюрингом (конструкция if, циклы while и for, а также тернарный оператор x ? y : z) Забавный факт: именно благодаря тернарному оператору Тьюринг смог разгадать усложненную версию шифровальной машины "Энигма" с четырьмя роторами. Хаскелль - пример Тьюринг-частичного языка, т.к. там отсутствуют конструкции for и while, но присутствует if.
>>235814297 12) Никогда не используйте локальные переменные. В группе Pascal-подобных языков они обозначаются ключевым словом lovar (Local Variable, "ловары"). Они значительно уменьшают нагрузку на процессор, но совершенно не годятся для моделирования, а так же приведёт к «засорению» памяти. Зачастую их используют бородатые дяди, когда пишут эксплойты (эксплоит — сленговое название ядра ОС). Они, конечно же, знают, где их нужно применять.
>>235812679 >Каждый оператор (хотя это во многом зависит от реализации языка) выполняется отдельным потоком. Если говорить максимально просто, зачастую, сколько в программе if’ов, for‘ов и т. п., столько она и имеет потоков, но бывают и исключения (как в языке Haskell, детали гуглите). Ебать жир. Хотя современные "ты_ж_программисты" настолько деградировали, что и такую залупу сожрут.
"Потоки", они же threads, являются частью процесса, а значит имеет доступ к тому же блоку виртуальной памяти, что и остальные потомки внутри процесса.
>Процесс — вид потока, который исполняется напрямую в процессоре, а не в системном интерпретаторе потоков, как это делают классические потоки. Процессы имеют общую память (кэш процессора). Что ты несешь, открой таск манагер, шизло. Процессы управляются на уровне операционной системы и к потоком/ядрам внутри процессора связи не имеют.
Поссал в рот малолетнему дауну, который зашел потроллить, но обосрался на старте.
слыш, владелец 20 языками, знать базовые конструкции и синтаксис языка это не равно им владеть.
у меня на освоение одного языка ушло 6 лет, прежде чем я мог бы сказать: Я ЗНАЮ ЭТОТ ЯЗЫК
а ты из тех петушков, что думают: ЗНАЮ НАЗВАНИЕ ТЕХНОЛОГИИ, ЗНАЧИТ ВЛАДЕЮ ЕЮ АЗАЗАЗА
ебать тя в ухо.
язык это как кунг-фу, ты каждый день можешь узнавать что-то новое, не смотря на то, что несколько лет каждый день программируешь на нём. все тонкости, ньюансы, разницы в реализации функций, которые могут возвращать похожие результаты и многие другие тонкие моменты.
даже опытный программист пишет код в обнимку с документацией, и это блядь нормальное положение вещей. ты можешь пол жизни управлять самолётом, но ты блядь обязан КАЖДЫЙ СУКА РАЗ приводить систему самолёта в рабочее положение ПО КНИЖЕЧКЕ, СУКА, ПО ИНСТРУКЦИИ, СТЕП БАЙ СТЕП, БЛЯДЬ. долбоёб сука тупой. 20 языков он знает. ой бляяя.
как говорил Брюс Ли: я не боюсь того, кто знает все приёмы, я боюсь того, кто знает один приём, но владеет им хорошо.
цена грош твоим знаниям 20 языков, гондон сука тупой.
>>235814949 Хуйло малолетнее, какой ты там "праграмист" нахер? У тебя же винда вместо операционной системы. Гугли QNX OS и перекатывайся, может, через годик пользования поймёшь уже, что такое "Треды" (не те, которые на дваче) и "Процессы"... А пока ты не прошёл собес, шизик.
13) Сейчас существует огромное множество фреймворков для создания практически чего угодно. Большинство из них языко-независимые (language-free), и представляют собой прокачанные компиляторы. Для каждого второго есть графический интерфейс (для совсем нубов — можно работать через граф. редакторы типа пейнта/фотошопа). Для работы через Photoshop рекомендую ReactJS, написанный на языке Java.
>>235812609 (OP) Первый совет — и сразу же хуета. В 2020 первый язык, который стоит учить программисту после своего основного рабочего — это английский, чтобы работать напрямую с заказчиком за даллары и съебать из тоталитарной параши. Ты думаешь для чего программистами становятся?
>>235812609 (OP) >1) В 2019 году английский язык для программистов почти не нужен. Если ты работаешь в днищерашкинской лавке, живя внутри федеративного пынестана. Спасибо, на этом я наверное закончу слушать твои морозные советы. И другим не советую, если не хотите сдохнуть в болоте.
мимоизевропы, просто пишу на том языке который актуален в данный момент на рынке. Переход это вопрос недели. Тоже 40 лвл
14) Популярность так называемых «декларативных» языков программирования (т. е. таких, в которых декларации процессору хранятся в так называемом «стэке» деклараций) — лишь тренд. Скоро все эти ваши Ады и Perlы уйдут в тень, и вакансий будет мало. У себя в компании мы отказываемся от этих языков, в основном потому что проёбы на кастомных декларациях ведут к необратимым потенциальным ошибкам.
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, твой адрес может совпасть с адресом какого-то Джона из Калифорнии на другом конце света.
18) TCP это один из стандартных протоколов (правил по которым программы общаются между собой через сеть). То есть он документирован - ты можешь найти в инете описания (RFC) и там всё расписано кто когда и какие байтики шлйт. UDP это undocumented protocol т.е. публичного стандарта нет и что там внутри знают только разработчики программы - например в онлайн играх.
>>235816540 19) Юнит-тесты: хз, зачем тебе именно в треде это надо, собрался игры пилить? Есть такой фрэйм (от англ. "Frame" - "кадр") для игр Unity. В этой же сфере гейм-дева есть и концепция Unit-тестов. То есть по факту, если вы не осилили IT в целом и программирование в частности, можете искать вакансии Unit-тестеров - они просто ищут баги в играх, написанных на Unity. Работа не шибко для умных, но требует усердий. Объясняю почему возник именно такой термин: Unity в виду своей простоты является самым популярным игродвижком. Соответсвенно, на нем больше всего игор, твои любимые киберпунки и гта5 написаны на нём, вот в геймдеве и появился такой отдельный термин для тестирования игр на Unity.
>>235816601 Не поминай умного человека в суе, чмо без навыков. У нас весь отдел горевал, когда это произошло. Я на тот момент уже в Яндексе работал и с ним несколько лет не общался.
>>235817079 Насчёт рекреационных мало что могу сказать, мы отошли в сторону облаков (не амазоновских, офкоз) и используем OpenNebula. Зато у нас полно дефекационных БД по гипервизорам разбросано.
20) handshake это рукопожатие т.е. когда клиент соединяется с сервером по одному из UDP-протоколов то они обмениваются первоначальными пакетиками с помощью которых проверяют например версию друг друга, убеждаются что оба используют один и тот же протокол и всё в таком духе. Handshake нужен ИСКЛЮЧИТЕЛЬНО UDP-протоколам (Undocumented Protocol), потому как они плохо документированы, и им, чтобы общаться друг с другом, нужно обменяться некоторой информацией.
>>235817437 ПФФФФФФффффф, ебать ты неуч, я аж с подливой обосрался, 20 языков он знает, а базы не знает, nezumi он учил, кого ты учил полуёбок, ахахахахах, спасибо, покормил, давай ещё
>>235812609 (OP) >Большинство док переведены Это совершенно не так. Стандарт крестов может и переведен, потому что он меняется раз в 250 лет. Какая-нибудь инфа по модным жс-фреймворкам не успевает обновляться даже в первоисточнике. >С заказчиками общаются бухгалтеры и PMы. В мелких шарагах бывает даже рядовому разрабу бывает нужно перекинуться парой слов с клиентом. Но это уже редкость, да.
21) Про следующий прикол мне как-то рассказывал сам Кэн Томпсон, когда я работал в гугле в середине нулевых. Очень часто на собесах дают задание - написать прогу, которая переворачивает слово. Типа 'анон' -> 'нона'. Я тоже часто даю это. Если человек берет библиотечную функцию, то сразу шлю нахуй. Если пыжится, реализует через цикл - то еще даю шанс. Если реализует рекурсивно - то получает плюсик. Но есть один очень элегантный способ, который юзают только гуру. Короче, все программы сначала переводятся в язык ассемблера. Это наверно все знают. Но гораздо меньше людей знают, что у ассемблера 2 разных синтаксиса - от компании "Эндрю Таненбаум энд технолоджис" - сокращенно AT&T и от Интела. Суть в том, что эти 2 языка зеркальны друг по отношению к другу (один начинает работать с начала стека, а второй - с конца). Шарящий челик, зная, какая версия ассемблера в системе, может обмануть процессор, скомпилировав код под другой ассемблер - и, не сложно догадаться, - вся программа работает в обратном порядке, то бишь, в системе с Intel обычный код println("анон"), скомпилированный в AT&T выведет на экран "нона", т.к. байты поместятся в стек в обратном порядке
>>235812609 (OP) >Сейчас ведём разработку своего языка программирования. >В 2019 году английский язык для программистов почти не нужен. Большинство док переведены (особенно по С++) на русский >доков на llvm на русском почти нет мде, жир просто вытекает
>>235818072 >Если человек берет библиотечную функцию, то сразу шлю нахуй. Это как советы от двача, когда заходишь в хату, взять полотенце с пола и лицо протереть.
>>235818827 Шутки шутками, а такие ж на самом деле есть. ОП красава, потому что нормальным инженерам дал возможность похохотать искренне (как с теорем Сосницкого), но главное, порвал пердаки тупым обезьянам, которые всерьёз парятся и жрут его говно. Это показывает, сколько же реально ебланов среди кодерков. Программисты-анальники, блять.
>>235812609 (OP) Наконец-то вижу тред от грамотного человека, а не школьников-фантазёров всяких. Советую вкатывальщикам запомнить вышесказанное, чтобы путь до middle-senior не занимал годы.
>>235812714 Добавлю. Часто на собеседованиях спрашивают про сборщики фронтенда. Сборщики в современных условиях не нужны т.к. браузеры нативно понимают все современные языки (плюсы, жабу, пхп итд). Также они понимают современные языки стилей (sass, less итд)
>>235813820 >ать всякие виды join‘ов и прочую муть, связанную с нерелятивными БД, на собесах спрашивать да ты что, >>235814119 ты еретик и дурак. JVM это Java. Python и PHP вообще совершенно разные люди писали
>>235819375 Дебил? Python и PHP написал один и тот же челок - Деннис Ритчи. Выполняются они правда не до конца на JVM, самая популярная реализация питона того же - это движок V8.
Нужно ли продолжать долбиться в стенку, если меня тянет на изучение более низкоуровневых вещей? У меня научный склад ума, и я не могу просто принять свойства какой-либо абстракции. Я либо выясняю, что эта абстракция значит и из чего состоит, либо ловлю баттхёрт.
>>235812609 (OP) Я студент-объебос с минимальными знаниями синтаксиса (конкретно это означает, что худо-бедно знаю циклы, операторы, условные конструкции, интерполяцию и понимаю функции/методы). Но я понимаю, что мне нахуй не упало говно вроде дата сайнс или машинное обучение, это поебота полнейшая. Я бы хотел либо делоть сайты, конкретно фронтэнд с крутыми анимациями свистелками-перделками либо игры. Мне хочется, чтобы результатами моего труда пользовались люди, чтобы они буквально видели работу моего кода. Итак, с чего начать и какой язык мне нужен?
>>235814973 >у меня на освоение одного языка ушло 6 лет, прежде чем я мог бы >сказать: Я ЗНАЮ ЭТОТ ЯЗЫК завязывай с двачем, играми, сериальчиками - мой тебе совет Сейчас! любой язык за пол года освоить чуть более чем реально. А раньше да, ебались годами, и больше без толку