Мне вот руби очень нравится по синтаксису, но всего 100 вакансий и 1 вакансия для ждуна/стажера, это как-то маловато еси чесно... Что посоветуете? Мб в битрикс залетать? Там вон стажировка уже намечается через 2-3 недели, всего 50 человек будет, шансов так-то дохуя, при желании можно увеличить до 99%. Но бля чето так залупоненько учить то что потом мне надо будет отбросить навсегда.
>>280738001 Мне просто руби нравится потому что его японский чувак сделал, а я люблю зимняя сказка, поэтому нравится.
Ну и синтаксис кайфовый, единственное что разочаровало меня как новичка - нет инкремента/декремента, в таком-то языке, где всё якобы для упрощения написания кода сделано. Но я доверяю ему, т.к. он японе-
>>280738014 На джаве больше вакансий накопать + весь андроид на ней пишется, мало ли захочешь свичнуться (потому-что тоже большое количество вакансий и не сложный кат). Ну и все таки шарп это майки, мне кажется в России (если ты здесь) последующие годы мало компаний будут его выбирать в качестве инструмента.
>>280738055 Забей посох на синтаксис, это чисто нубское мышление, все си-подобные языки по факту схожи, поймешь это со временем, главное количество вакансий+предметная область где чаще используют
>>280737894 (OP) Все зависит от целей. Если хочешь работы - 1с/пхп Если хочешь высокооплачиваемой работы - Java Если хочешь поддерживать оливье, которое по быхой склепали 2 студента и съебались в закат - руби Если уважаешь себя - шарп Если есть желание ебаться в жопу - Жаваскрипт Если есть желание делать велосипеды - Си/Плюсы Если ты зайчик и хочешь чтобы все об этом знали - Раст Если ты глупенький, но хочешь зайти за умного - Го Если ты умный, но хочешь сойти за глупого - Питон
Короче, к чему. К тому, что все зависит от что ты там на входе имеешь и что хочешь на выходе получить.
>>280738593 То есть ВСЕ веб-разработчики имеют "желание ебаться в жопу"? Т.к. все веб-разработчики должны знать жабаскрипт по дефолту. Хоть ты сто раз бекендер, так или иначе будешь знать жс.
>>280739643 Чел ты гониш? Я понимаю руби всё, слился, но пхп - куча легаси, много работы, шарп - есть легаси, есть что-то новое, работы средне, самый селёдка под шубойтый язык в 2к23 и наверное навсегда вобще.
>>280739713 Ну. Во-первых, сейчас это просто хайп. Как было с растом, как было с нодой, как было с формами, как было дельфи. Во-вторых, в среде умных, которые хотят казаться еще умнее - на тебя будут показывать пальцем, говоря про наносекунды, про то, что эти наносекунды - экономят бизнесу миллиарды денег на серверах, и для нормального бизнеса - это уже весомо.
>>280739855 На питоне - пишется буквально все, няша. Вот у нас используется, чтобы пользователь мог железки автоматизировать как ему надо(если на контроллере сработала тревого - запустить сигнализацию, если наступило утро - отключить в этих помещениях освещение и т.д.). Такой-то клей, связывающий зоопарк железок. Можно конечно было бы Lua, но как-то решили, что питон попривычнее будет.
>>280737894 (OP) Завтра ищешь в интернете книжку The Ruby programming language. Попосох если ничего не поймешь. Затем идешь на rubyonrails.org и изучаешь Getting started от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию руби-кода от гитхаба, чтобы от зубов отскакивало. Когда напишешь свой первый блог за 15 минут скаффолдами, по пути изучив RSpec, скачиваешь и изучаешь любой редактор, рекомендую Sublime Text. Как перепишешь свой блог со скаффолдов на кастомные модели и контроллеры, можешь идти дальше - тебя ждет увлекательный мир Rails: мозговыносящий haml, сверхудобный sass и coffescript, мозговыебательные отношения в ActiveRecord, сверхбыстрая Puma, гемы, тысячи их. Отсос у хиккующих выблядков / просто хипстеров типа ноджэс или скала/гвидо/пыхо-хуесосов, которые работают в приличном офисе за хлеб, масло и красную икру не заставит себя ждать, и уже через полгода у тебя будет столько коммитов, что любой рельсовик будет течь при одном упоминании твоего профиля на Github.
>>280741088 Не вижу аргументов не использовать го. Зато вижу миллиард аргументов не использовать шарпы или джаву, мамины любители миллиарда врапперов сделанных из миллиарда других врапперов
Если бы ты был опытным разработчиком, ты бы понял что борьба со сложностью это и есть программирование. Абстракции над абстракциями, да. 'врапперы над врапперами', ага. Если бы ты на го писал что-то сложное - ты понял бы меня.
>>280737894 (OP) Я С++ учу с Qt, уровень пока на уровне написания простенького клиент-серверного приложения на QtSoket. Ну и что могу сказать. Если хочешь стать годным кодером: но не имеешь базы, учи низкоуровневый язык. Идеально начинать ассемблера. Но если ты не достаточно красноглазый и у тебя есть личная жизнь то C/C++. Зная Си тебе любой язык пойдет на изи. Я допустим по приколу решил питон попробовать, имея базу на Си, питон освоил за пару дней. Принцип написания алгоритмов то везде один и тот же. Кароч С++ этозаслужил подарки
>>280741319 Кста С++ топ еще в том что он реально кроссплатформенный, На с++ ты можешь писать как код для микроконтроллеров, так и для Android, iOS, Windows, Linux, MacOS и практически всего вообще
>>280737894 (OP) Ну ты просто решай для себя, что лучше? Вкатиться быстро, а потом уже перестраиваться, когда у тебя есть работа или как даун учить плюсы или питон и вкатываться два года без гарантий?
>>280741674 Assembler, ну мб Java. Но если без стеба то вообще попосох какой язык программирования. Синтаксис это чисто оболочка, Самое важно это алгоритм а он везде будет один и тот же, ну кроме ассемблера, там вообще пиздец. А синтаксис можно при желании за неделю выучить...
>>280739625 Это самый красивый язык на планете с буквально лучшими код конвеншинами. Писать на нём = творить прекрасное. Любой, кому приходилось долго и не на отъебись писать на нём что-то, подтвердит мои слова. Но судьба распорядилась с ним жестоко, и он никому напосох не нужен(
>>280737894 (OP) Мне кажется, за этот год такое явление как Джуны почти полностью вымрет на российском рынке труда, и в таком состоянии всё будет ещё минимум лет пять. За их места и низкие зарплаты уже даже не только несчастные мидлы, но и сеньоры грызутся с пятью сотнями откликов на каждую вакансию менее, чем за сутки. Максимум на какую-нибудь галеру за 25-30к/мес пролезешь, где будешь по 9-10 часов в сутки в офисе сидеть.
>>280739806 Так то оно так, но питон экономит деньги бизнесу тем что за 2 недели можно склепать внутренний проект небольшой командой практически любого масштаба, и уже в зависимости от потребностей показать клиенту и начать делать нормально или продолжить использовать как есть, если доработок не требуется. Плюс все мл на питоне, так что хз, хороший язык мне кажется для того чтобы начать изучать программирование и вкат, хорошо фокусирует не на особенностях языка, а на проектировании приложений
>>280737894 (OP) Многие начинающие программисты, особенно обучающиеся в провинциальных вузах, часто не знают, в какую сторону им развиваться, и что они должны знать для того, чтобы эффективно работать по специальности. Удивительно, но каждый день используя продукты и технологии, созданные другими программистами, они даже не догадываются о том, как они устроены.
Построенные на теории массового обслуживания и стандарте GSM сети мобильной связи; PHP-скрипты, исполняющиеся на удаленных серверах и передающие свою выдачу через Ethernet по TCP/IP на компьютеры с NDIS-драйверами; процессоры, переупорядочивающие и спекулятивно исполняющие наборы инструкций для того, чтобы скомпенсировать вызванную ограничениями полупроводниковой электроники и скоростью света остановку роста тактовой частоты; рассчитанные на ЭВМ корпуса самолетов и автомобилей, лекарства и структуры ДНК; компьютерные игры, ради крохотного блика в которых пишутся мегабайты заполненных интегралами Френеля статей; электронные фильмы и книги; алгоритмы NLP и TreeNet, вызывающие нам из огромных баз данных поисковую выдачу — вот то, что окружает нас каждый день благодаря программистам, благодаря оригинальным подходам и фундаментальным знаниям, благодаря продуманной и отточенной десятилетиями методологии разработки и управления сложностью ПО.
Далее приведен теоретический минимум для программиста на основании наиболее ярких отраслей IT, вошедших даже в программы нормальных университетов, на основании собеседований и постоянно пригождающихся на практике знаний.
1. C++, стандарт, Comeau, 1TBS, Страустрап/D&E/Джосаттис/Вандервуд, Дьюхэрст/Мейерс/Саттер, RAII/copy-and-swap/exception-safety, правило пяти, Александреску/Абрахамс-Гуртовой, type erasure, CRTP, NVI, SFINAE, Koenig lookup, Duff's device, Boost, Сик-Ламсдейн/Карлссон, TR on C++ performance, тест Степанова, forwarding problem/move semantics, SPECS
2. Компиляторы, особенности реализации стандарта, ограничения реализации, интринсики, отличия стандартных библиотек (контейнеры, rand), ABI, реализация виртуальных функций, виртуального наследования, исключений, RTTI, switch, указателей на функции и методы; оптимизации, copy elision (RVO, NRVO), sizeof на различных платформах, дефайны компилятора и среды, __declspec, ключи компилятора, empty-base optimization, статическая и динамическая линковка, манглинг, распределенная компиляция, precompiled header, single compilation unit, (strict) aliasing/restrict, inline/_forceinline, volatile
3. Мультитредность, обедающие философы, deadlock/livelock/race condition/starvation, атомарность, lock инструкции процессора, memory model/barrier/ordering, CAS или LL/SC, wait/lock/obstruction-free, ABA problem, написание lock-free контейнеров, spin-lock, TLS/per-thread data, закон Амдала, OpenMP, MPI, map-reduce, critical section/mutex/semaphore/condition variable, WaitForSingleObject/WaitForMultipleObjects, green thread/coroutine, pthreads, future/deferred/promise, модель акторов
4. Язык ассемблера, Зубков/Хайд/Дреппер/Касперски/Фог/Абраш, x86, FPU/MMX/SSEn/AVX, AT&T и Intel-синтаксис, masm32, макросы, стек, куча/менеджеры кучи, соглашения вызова, hex-коды, машинное представление данных, IEEE754, little/big endian, SIMD, аппаратные исключения, прерывания, виртуальная память, реверсинг, срыв стека и кучи, return oriented programming, alphanumeric shellcode, L1/L2/RAM/page fault и их тайминг, язык ассемблера ARM
5. Аппаратное обеспечение, Хоровиц-Хилл/Титце-Шенк/От физики к Си от panchul, полупроводниковая электроника/спинтроника/фотоника, транзистор, триггер, схемотехника, микрокод, технология создания процессоров, logic synthesis, static timing analysis, FPGA, Verilog/VHDL/SystemC, SISAL, Arduino, устройства памяти (ROM → EEPROM, RAM, SSD, HDD, DVD), RISC/CISC, Flynn's taxonomy ([SM]I[SM]D), принстонский и гарвардский подход, архитектуры процессоров, архитектуры x86, VID/PID
6. Процессоры, конвейеризация, hyper-threading, out-of-order execution, спекулятивное исполнение, static/dynamic branch prediction, префетчинг, множественный ассоциативный кэш, кэш-линия/кэш-промах, такты, кольца защиты, память в мультипроцессорных системах (SMP/NUMA), тайминг памяти
8. Вычислимость, машина Тьюринга, нормальные алгоритмы Маркова, машина Поста, диофантовы уравнения Матиясевича, лямбда-функции Черча, частично рекурсивные функции Клини, комбинаторное программирование Шейнфинкеля, Brainfuck, эквивалентность тьюринговых трясин, проблема останова и самоприменимости, счетность множества вычислимых функций, RAM-машина, алгоритм Тарского, SAT/SMT-солверы, теория формальных систем
9. Языки программирования, грамматики, иерархия Хомского, теорема Майхилла-Нероуда, лемма о накачке и лемма Огдена, алгебра Клини, НДКА → ДКА, алгоритмически неразрешимые задачи в формальных языках, Драгонбук, Фридл, регекспы и их сложность, PCRE, БНФ, Boost.Spirit + Karma + Qi/Ragel, LL, LR/SLR/LALR/GLR, PEG/packrat, yacc/bison/flex/antlr, статический анализ кода, компиляция/декомпиляция/обфускация/деобфускация, Clang/LLVM/XMLVM/Emscripten, GCCXML, OpenC++, построение виртуальных машин, JiT/AoT/GC, DSL/DSEL
10. Алгоритмы и комбинаторная оптимизация, Кормен/Скиена/Седжвик/Кнут/Ахо-Хопкрофт-Ульман/Пападимитриу/Шрайвер-Голдберг/Препарата-Шеймос/e-maxx.ru, структуры данных, алгоритмы, сложность, символика Ландау, теорема Акра-Баззи, time-space tradeoff, классы сложности, NP-полные задачи, КМП, графы и деревья, потоки в сетях, матрица Кирхгофа, деревья поиска (особенно RB-дерево и B-дерево), occlusion detection, куча, хэш-таблицы и идеальный хэш, сети Петри, алгоритм русского крестьянина, метод Карацубы и матричное умножение Винограда-Штрассена, сортировки, жадные алгоритмы и матроиды, динамическое программирование, линейное программирование, diff-алгоритмы, рандомизированные алгоритмы и алгоритмы нечеткого поиска, псевдослучайные числа, нечеткая логика
11. Численные методы, дихотомия/метод Ньютона, интер- и экстраполяция, сплайны, метод Гаусса/Якоби/Зейделя, QR и LU-декомпозиция, SVD, МНК, методы Рунге-Кутты, метод Адамса, формулы Ньютона-Котеса, метод Ритца, метод Бубнова-Галеркина, метод конечных разностей/элементов, FFT/STFT, сходимость и устойчивость
12. Машинное обучение, Рассел-Норвиг/Bishop, подходы к моделированию AI, переобучение/кроссвалидация, байесовские сети, нейросети, сети Кохонена, Restricted Boltzmann machine, градиентный спуск/hill climbing, стохастическая оптимизация (метод Монте-Карло, метод отжига, генетические алгоритмы, муравьиные алгоритмы), SVM, gradient boosting, кластерный анализ, метод главных компонент, LSH, обучение с подкреплением, MDP, information retrieval/data mining/natural language processing, машинное зрение, Szeliski, OpenCV, image processing, OCR, фильтры Собеля, каскад Хаара, Viola-Jones framework, SURF, введение в психофизиологию зрения, IPython/pandas/scikit-learn
13. Теория информации, сжатие, Хаффман, RLE, BWT, LZ, коды коррекции ошибок, сжатие с потерями (изображения, аудио, видео), информационная энтропия, формула Шеннона, сложность Колмогорова
14. Криптография, Шнайер/Ященко, Принцип Керкгоффса, симметричная (DES, AES), асимметричная (RSA), качество ГПСЧ, алгоритм Диффи-Хеллмана, эллиптические кривые, хэширование (MD5, SHA, CRCn), DHT, криптостойкость, криптоатаки (атака гроссмейстера), WEP/WPA/WPA2 и атаки на них, цифровая подпись и сертификаты, PKI, HTTPS/SSL, доказательство с нулевым разглашением, пороговая схема
21. Инструментальные средства разработки, IDE, IntelliSense, отладчики (VS/Olly/WinDbg/kdb/gdb) и трейсеры (strace/ltrace), DWARF debug information format, дизассемблеры и декомпиляторы (IDA/HexRays/Reflector), системы контроля версий (SVN, GIT), merge/branch/trunk, системы именования файлов и бранчей, continuous integration, ant, code coverage, статический анализ (lint, cppcheck), динамический анализ (valgrind, фаззинг), верификация и валидация ПО (Frama-C, RAISE (RSL), Coq), профайлинг, багтрекеры, документирование кода, системы сборки (CMake), пакетные менеджеры (NuGet)
22. Фреймворки, Qt, moc и метаинформация, концепция слот-сигнал, Саммерфилд-Бланшет/Шлее, PoCo, промышленные библиотеки: GMP, i18n, lapack, fftw, pcre
23. Операционные системы, Silberschatz/Рихтер/Соломон-Руссинович/Робачевский/Вахалия/Стивенс/Love/Linux Kernel Internals, менеджер памяти, менеджер кучи и ее устройство (LAL/LFH/slab), менеджер устройств, менеджер процессов, context switch, реальный и защищенный режим, исполнимые файлы (PE/ELF/Mach), объекты ядра, отладочные механизмы (strace/ptrace/dtrace/pydbg, Debug API) и минидампы, bash, сетевой стек и высокопроизводительные сервера, netgraph, CR0, IPC, оконная подсистема, система безопасности: ACE/ACL и права доступа, технологии виртуализации, RTOS (QNX), программирование драйверов, IRQL, IRP, файловые системы, BigTable, NDIS/miniport/FS drivers/filter driver, Mm-, Io-, Ldr-функции, DKOM и руткиты, GDT/IDT/SDT, ядра Windows/Linux/BSD, POSIX
31. Функциональное программирование, Haskell/Ocaml/Scheme/Alice или Oz, SICP/TaPL/YAHT/Purely Functional Data Structures/Харрисон-Филд, HOF (map/fold/filter), система типов Хиндли-Милнера, монады, тайпклассы, АТД, dependent types, ленивость/энергичность, логическое программирование (Prolog или Mercury), конкурентное программирование (Erlang или Oz)
32. Веб-программирование и скриптовые языки, Фланаган/Zend PHP5 Certification Course + Study Guide, Apache/nginx, CGI/FastCGI, PHP/Zend Framework/ReactPHP/Zend Engine/Doctrine или Propel/CodeIgniter или Symphony или Yii, Python/Django/Twisted, Ruby/RoR, ASP.NET MVC, JavaScript/jQuery/React/Google Closure/ExtJS/node.js, ООП в JavaScript, HTML5, CSS3/табличная и блочная верстка, RSS, canvas/WebGL, Ajax/WebSockets, вопросы безопасности (XSS, SQL injection, CSRF), highload, C10k problem, SWIG
33. Проектирование GUI и представление информации, Раскин/Тафти, юзабилити, основы дизайна и типографики, закон Фиттса, основы верстки, LaTeX
Этот теормин вполне справедливо критикуется за отсутствие системности изложения и ВНЕЗАПНЫЕ соседства различных как по глубине, так и по содержанию топиков. Это не бага, это фича. Системное изложение программы по практически любому из пунктов заняло бы места не меньше, чем оглавления пухлых талмудов, поэтому лучше как раз названия этих талмудов и приводить. Как же тогда работать с этим списком? Следует брать хорошие книжки по тематике и читать их до тех пор, пока все упомянутые слова не встретятся в процессе чтения. Авторы и в страшном сне не могли предположить, что кто-то решит, что устройство Даффа посчитают по глубине и объему чем-то равным полуторатысячестраничному Священному Стандарту. Однако этот критерий вполне рабочий — можно перечитать сотню книг по C++ для начинающих, и ни разу не встретить упоминания о нем, но если читать действительно полезные книги и статьи (для тем, подобных C++, такие книги существуют и перечислены), то все слова довольно быстро встречаются. Смысл программы, обусловленный ее размером, именно в том, чтобы дать возможность оценить, достаточное ли количество книг по теме прочитано.
Весьма значительное количество критики теормин встречает и со стороны людей, считающих себя программистами, которые полагают, что все это знать невозможно. Эти люди, к сожалению, просто не понимают, в чем разница между эрудицией/памятью и знаниями. Ценность для программиста имеет не запоминание точного формата какого-нибудь из пакетов NBNS, а овладение подходами, которые использовались при разработке, другими словами не способность воспроизвести, а способность воссоздать или опознать, в том числе в другой области. Именно способность человека к анализу и синтезу (которая все же не берется из ниоткуда, а достигается активным познавательным трудом) отличает его от гугла, который даже в очень отдаленной перспективе не научится решать даже div2 250. Именно на развитие этой способности и направлен теоретический минимум, который в процессе работы обязательно придется дополнять domain-specific знаниями, будь то особенности игровой физики, разработка оперденей на Java или создание реальных микросхем.
В отдельный абзац стоит выделить вопрос от тех, кто сомневается в своих способностях освоить теормин, либо полагает, что способность его применять будет редко востребована и ослабнет. В целом, теорминимум в большинстве пунктов несколько уступает учебным программам факультетов CS нормальных университетов, так что за 5 лет его освоить вполне возможно, даже совмещая с работой. Конкретно в геймдеве активно используются (по разным подсчетам в обсуждениях) от 1/3 до 2/3 перечисленных пунктов. Недостающую активность можно восполнять, к примеру, консультируя других на Stack Overflow.
Отдельную категорию людей, высказывающуюся в стиле «я такого не знаю, я такое запрещаю» составляют те, кто полагает, что цель программиста заключается не в улучшении мира, а в зарабатывании денег. Им этот теоретический минимум действительно не нужен, а следует поискать самоучители по тому, как правильно и со знанием всех тонкостей воровать, обманывать и заставлять работать вместо себя других.
>>280737894 (OP) ой да посох знает, я до 26 не знал куда вкатиться, поэтому изучал всего по чуть чуть: весь веб, питон, шарп. Потом меня взяли в контору, где используется только шарп, вот тогда и понял, что пойду вкатываться по полной шарпистом
Мне вот руби очень нравится по синтаксису, но всего 100 вакансий и 1 вакансия для ждуна/стажера, это как-то маловато еси чесно...
Что посоветуете? Мб в битрикс залетать? Там вон стажировка уже намечается через 2-3 недели, всего 50 человек будет, шансов так-то дохуя, при желании можно увеличить до 99%. Но бля чето так залупоненько учить то что потом мне надо будет отбросить навсегда.