Анон, нужна твоя помощь. Собрались мы тут с посонами на бордах, решили вкатываться в программирование. Все люди уже солидные, бородатые, адекватные. Быстрых результатов не ждем, сколько лет надо будет учиться - столько и будем. Набрались терпения, мотивируем друг друга, чтобы не дропнуть, пока получается. Главная наша цель сейчас - избежать поверхностных знаний и ненадежных умений. В общем, уважаемый высококультурный в профессиональном смысле анон-программист, поясни по хардкору, пожалуйста, следующие вещи: (мы занесём всё в нашу базу знаний, систематизируем и расшарим для всех интересующихся) 1. Можно ли написать работающий код, к примеру, на собеседовании, взглянув на который тебя сразу не примут. Несмотря на то, что код формально задачу выполняет. Чем говнокод и говнокодер отличается от грамотного, правильного, красивого, профессионального и т.д. Молим, приведите примеры, чем конкретнее и подробнее, тем лучше. Понятное дело, что в каждом языке программирования и технологии есть свои узкие особенности, но, возможно, есть и что-то общее. Хотя узкие вещи тоже любопытны и интересны. 2. Перечислите ключевые слова, понятия, необходимые для освоения любому начинающему программисту. То, что входит в "золотую середину" теоретической базы, необходимую для осознанной, вдумчивой разработки. То, что отличит тебя от обезьян, сделает обладателем программистского разума. Чтобы ты мог не обосраться на тех же собеседованиях хотя бы в базовых вещах. Золотая середина в плане теории, на наш взгляд, - это и не совсем уж технические дебри, которые даже в долгосрочной перспективе не будут иметь прикладного значения, но и не отсутствие теоретических знаний вовсе. Часто к этому прибавляется убеждение о их бесполезности, занудности и даже немодности. И да, если у кого-то возникнет желание к нам присоединиться, милости просим, будем любить и боготворить. Контакты сообщим в треде
>>1013588 (OP) >1. Можно ли написать работающий код, к примеру, на собеседовании, взглянув на который тебя сразу не примут. Несмотря на то, что код формально задачу выполняет.
Только этим и занимаюсь:
if a = 'true' puts true elsif a = 'false' puts 'false' else puts 'undefined' end
> Перечислите ключевые слова, понятия, необходимые для освоения любому начинающему программисту - Алгоритмы (основы) - Типы данных - Переменные и их базовая классификация - Понятие о подпрограммах (процедурах и функциях), библиотеках - Структуры данных (основы) - Общая информация о парадигмах программирования (напр., ООП) - Паттерны проектирования - Компиляторы и интерпретаторы
Небрежно накидал то, что пришло в голову навскидку
>>1013613 Ну если с миру по нитке долго собирать, то можно попробовать. "Всё подряд" можно потом систематизировать > Лучше всего - найти опытного программиста Это понятно, но где его найти?
>>1013618 в том-то и дело, что языки у всех разные. Нас достаточно много. Если выделить основное, то это C++ (студенты, которые хотели бы наконец-то разобраться, понять, осознать, что делаешь, чтобы не просиживать в универе штаны) Java (те, кто хотели бы в светлом будущем заняться Android-разработкой) Full Stack для веб - тут помимо общих для всех HTML, CSS и JavaScript есть последователи PHP и Python. В мечтах видят себя веб-разработчиками, готовы учиться, страдать и превозмогать
Кем бы ты ни был, велика вероятность столкнуться с базами данных. Так что всем необходимо получить основы по этой теме и SQL. Это то, что нас объединяет. В том числе познакомиться с NoSQL, хотя бы узнать, что такое существует
>>1013588 (OP) >Чем говнокод и говнокодер отличается от грамотного, правильного, красивого, профессионального говно код: 1. нечитаем. программа это набор абстракций и их взаимоотношений. если ты не понимаешь что делают отдельные части программы и с чем они связаны, то ты имеешь дело с говнокодом. читаемый код обязан быть логичным и настолько простым, насколько это возможно. 2. хрупок. когда для того чтобы добавить новую фичу в программу или изменить уже имеющуюся тебе нужно переписывать дохуя кода, ты имеешь дело с говнокодом. ну или ты долбоеб и не распланировал возможности и цели программы заранее.
читай про mvc, решает обе эти проблемы. там еще куча методик есть, но это почти самая базовая.
> Перечислите ключевые слова, понятия, необходимые для освоения любому начинающему программисту. То, что входит в "золотую середину" теоретической базы, необходимую для осознанной, вдумчивой разработки. То, что отличит тебя от обезьян, сделает обладателем программистского разума. Ну нахуя тебе это сейчас надо? Думаешь на джунов идут с ахуенными знаниями как строить архитектуры программ? Придумай какую-нибудь идею, посмотри/спроси какие средства нужно для того чтобы ее реализовать, в процессе реализации выучишь все что надо. Потом уже можно посмотреть как свое говно переписать так, чтобы было не совсем говно, а сейчас мозги себе ебать таким не рекомендую.
ежели желаешь уйти в академическую сторону, то есть ахуенная паста на лурке под названием "Высшее образование в IT своими руками v2 Высшее образование в IT своими руками v2". но начать лучше с mit cs 6.001x или с harvard cs50(который полегче).
>>1013588 (OP) 1. Именование. Когда переменные именуются без смысла невозможно понять что человек хотел сделать не вникая в его код, написанный корявым почерком. Короткий пример кода если он хорошо именован достаточно просто трансформируется в рсмысленный набор связанных предложений на английском языке.
2. Слишком много всего.
Вообще когда я вёл курсы в местной шараде по контракту моего работодателя, я давал детям что-то вроде кодерской рулеточки, но просил не самих писать а искать на гитхабе, уметь компилировать и модифицировать найденное. На плюсах это очень хорошо позволяло преодолеть боязнь "большого" кода и инструментов.
>>1013588 (OP) Ты это я полгода назад. Перекатился из КИПовца в программисты на с#/c. Мой тебе совет - не заморачивайся на счет теоретических знаний, все равно забудешь без практики их использования. Хватит книжки Совершенный код, постепенно почитывай ссылки на источники из нее. И не забывай решать какие-нибудь практические задачки, тот же калькулятор например накрудошлепь
1. Для начала Совершенный код Макконелла, там полно примеров говнокода. Потом практика.
2. Основы алгоритмов. Хотя бы на уровне названий и сложности. Для чего вообще нужны алгоритмы и почему нельзя завалить мощностями. Большое О. Бинарный поиск. Структуры данных. Где какие использовать. Какие оптимизированы на скорость доступа, а какие на добавление элементов. Парадигмы: процедурное, ООП, функциональное. Жизненный цикл объектов. Гарбэйдж коллектор. Что происходит в памяти. Стек и куча. Объекты и ссылки на них. Почему лучше, когда объекты неизменяемые.
>>1014373 Ну почему сразу секта? Сообщество, комьюнити. Кто-то в инете озвучивает сериалы, кто-то пилит игры, устраивает конкурсы и т.д. А мы вот собираем инфу и пилим образовательную систему с функцией взаимомотивации и взаимопомощи её участников. Как будто что-то плохое...
>>1014383 >А мы вот собираем инфу КТО МЫ? КТО ВЫ?? Где вы располагаетесь? Ты тут один представитель? Какое комьюнити? Какая ещё образовательная система? Ты уж либо говори конкретно, либо ничего, не понятно нихуя.
Какой ваш лвл? Откуда вы друг друга знаете? Какой профит "учить вместе" (алсо, так нихуя и не выучите)?
>>1013588 (OP) Завтра ищешь в интернете книжку Dive into python. Похуй если ничего не поймешь. Затем идешь на python.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию питоньего кода - PEP8, чтобы от зубов отскакивало. Когда напишешь свою первую имиджборду, по пути изучив верстку на html+css, скачиваешь и изучаешь любой питоний асинхронный вебсервер, рекомендую Tornado или Gevent. Как переделаешь имиджборду, чтобы выдавала по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop, сверхбыстрые асинхронные key-value хранилища, MapReduce. Отсос хиккующих выблядков / просто неудачников типа рейфага или сисярп/джава-хуесосов, которые сосут хуй по жизни не заставит себя ждать и уже через пол года ты будешь получать такие суммы, что любая баба будет течь при одном упоминании твоей зарплаты.
>>1014123 За пол года си шарп. Читал Альбахари и попутно говнокодил всякую поебень. Си более менее с института помнил (по образованию радиотехник). Пишу программы для счетчиков на си и типа что то скады на шарпе. На собеседовании плел про ЛЕГКО ОБУЧАЕМ, ГЛАЗА ГОРЯТ и почую хрень, про программирование меня особо то и не спрашивали.
>>1013908 Самостоятельно осваиваю питон с нуля. Если принимаете таких как я - давай сразу ссылку на дискорд, нет желания ставить телеграм и ебаться с прокси.
>>1013623 Передайте своим программистам на с++, что бы учили с++. Скажите, что бы забыли, что char* может хранить строки. Они верующие? Тогда передайте им, что если они решат хранить так строки, то после смерти попадут в ад ну или куда там еще. Если нет, скажите, что в 20-том стандарте за такое будут бить deprecated по голове. Только std::string На то есть причины. Скажем оптимизация малых строк, нормальные функции работы с этими строками, и о чудо, можно узнать размер строки за O(1) вместо O(n)!
Потом скажите им, что слова new и delete - табу. Однократное нарушение табу карается мучительной экзекуцией. Десятикратное нарушение табу карается изгнанием Вниз. Повторное нарушение табу после изгнания карается абсолютной Смертью. Просто используйте std::unique_ptr, std::shared_ptr, std::weak_ptr. Когда какой использовать? Ну тут уж сами почитаете, но основная идея в том, что если где-то на что-то ссылаетесь, то у вас в голове рефлекторно должен вставать вопрос: "В каких отношениях находятся ссылающийся и ссылаемый?". Ссылающийся владеет ссылаемым и контролирует его время жизни - unique_ptr. Ссылающийся совладеет ссылаемым - shared_ptr, Ссылающийся не владеет ссылаемым - weak_ptr(Если нет гарантии, что время жизни ссылаемого не меньше чем у ссылающегося)/просто указатель(Если гарантируется, что ссылаемый не умрет за время жизни ссылающегося). Разумеется C-программисты с вами не согласятся. О, эти ребята любят просто передавать туда-сюда куски памяти, а умных указателей у них нет. Ну что поделать. А еще вы и сами можете столкнуться с тем, что нельзя решить умными указателями. Но случается это редко. Очень. Настолько редко, что если уж случилось, вам сперва следует проверить, нет ли где ошибки. Может неудачный дизайн?
Ну и в конце концов, смотрите cppcon, читайте Александреску и Страуструпа и мойте руки перед едой.
>>1014915 Есть вообще хороший мануал в таком стиле? Ну вот скажем, как если бы кресты зарелизили в 11ом, последователей так мало, что приходится конкурировать с растом и в то же время, не надо кормить ритуальным говном, которым кормят уже лет 30?
Крепкий, новый C++? Иногда возникает необходимость эффективной работы с памятью.
Мимо бывшый крестовик, уже лет 10 не бравший шашечки, а взявши давеча, скопировал код из интернета для одной вычислительной задачи, поменял захордкоженные массивы на вектора и скомпилировал запустил и получил segfault cраные конструкторы копирования Плюнул, вернулся на жабу, пошаманил с jvm/системой и посчитал задачу, требующую 40Г памяти на 16Г машине.
>>1013588 (OP) >Можно ли написать работающий код, к примеру, на собеседовании
Вопрос: а нахуя? Напиши код и закинь его в гитхаб, где твой код уже пройдет рефакторинг и будет обложен тестами. От тестовой задачи как правило от тебя просто ждут решения. Никто не собирается тебе ебсти мозги, а может быть даже положат хуй после того, как ты им покажешь свой рабочий код в гитхабе и вообще не попросят ничего больше (ты ж на джуниора устраиваться будешь, наверняка).
>Чем говнокод и говнокодер отличается от грамотного, правильного, красивого, профессионального и т.д. Молим, приведите примеры, чем конкретнее и подробнее, тем лучше.
Ну тем, что он соответствует той или иной парадигме программирования и принятым стандартам, например. Вообще как не удивительно, но чем меньше кода, тем лучше. Во всяких ООП-шных языках принято, чтобы были тонкие контроллеры и толстые модели, причем толстые модели как правило еще разбирают на сервисы, репозитории, фабрики и прочее говно. Ну это, к примеру. В процедурных языках все немного иначе, в функциональных свои заморочки, а в брейнфаке даже, если и напишешь говнокод, то все равно никто ничего не поймет.
> Перечислите ключевые слова, понятия, необходимые для освоения любому начинающему программисту. То, что входит в "золотую середину" теоретической базы, необходимую для осознанной, вдумчивой разработки.
Блядь, да их же дохуища. Лучше уж начинать с чего-то более-менее структурного. Поймите, в какую область вы хотите вкатиться, и из этого можно вам конкретный совет привести, что вам изучать, хотя я бы стандарт посоветовал изучить все, что связано со структурами и алгоритмами обработки данных, потому что без этого в любом языке по сути никак.
>>1015033 У кого как. Но основная идея в том, что бы вместо выделения памяти под строку в куче(Что не очень быстро), поместить строку в стек(Что быстрее). Однако в стеке места мало, потому туда помещают только небольшие строки. Какая строка считается небольшой? Как именно это реализовано? Это и многое другое читайте в документации к компилятору, которым пользуетесь.
Главная наша цель сейчас - избежать поверхностных знаний и ненадежных умений. В общем, уважаемый высококультурный в профессиональном смысле анон-программист, поясни по хардкору, пожалуйста, следующие вещи: (мы занесём всё в нашу базу знаний, систематизируем и расшарим для всех интересующихся)
1. Можно ли написать работающий код, к примеру, на собеседовании, взглянув на который тебя сразу не примут. Несмотря на то, что код формально задачу выполняет. Чем говнокод и говнокодер отличается от грамотного, правильного, красивого, профессионального и т.д. Молим, приведите примеры, чем конкретнее и подробнее, тем лучше. Понятное дело, что в каждом языке программирования и технологии есть свои узкие особенности, но, возможно, есть и что-то общее. Хотя узкие вещи тоже любопытны и интересны.
2. Перечислите ключевые слова, понятия, необходимые для освоения любому начинающему программисту. То, что входит в "золотую середину" теоретической базы, необходимую для осознанной, вдумчивой разработки. То, что отличит тебя от обезьян, сделает обладателем программистского разума. Чтобы ты мог не обосраться на тех же собеседованиях хотя бы в базовых вещах. Золотая середина в плане теории, на наш взгляд, - это и не совсем уж технические дебри, которые даже в долгосрочной перспективе не будут иметь прикладного значения, но и не отсутствие теоретических знаний вовсе. Часто к этому прибавляется убеждение о их бесполезности, занудности и даже немодности.
И да, если у кого-то возникнет желание к нам присоединиться, милости просим, будем любить и боготворить. Контакты сообщим в треде