DMdev talks
3.24K subscribers
156 photos
13 videos
89 links
Авторский канал Дениса Матвеенко, создателя DMdev - обучение Java программированию

То, что все ищут по Java:
https://taplink.cc/denis.dmdev

P.S. Когда не программирую - я бегаю:
https://t.iss.one/dmdev_pro_run
Download Telegram
#2 Мой путь

1 сентября 2009 года - я поступил в БГУИР на специальность ИТиУТС (Информационные Технологии и Управление в Технических Системах) и стою возле 5 корпуса университета на открытии учебного года. Переехав из маленького города Мстиславль, Минск казался тогда просто огромным и невероятным! Столько высотных зданий, большие улицы, миллионы людей, даже впервые на метро покатался!

Мне предоставили общежитие как многодетной семье, следовательно было где жить, а стипендия на бюджете - чтобы было что есть. Осталось дело за малым - стать программистом. Предметов было очень много, но я с нетерпением ждал лишь одного единственного - первого занятия по программированию.

К сожалению, а может и, наоборот, к счастью, процесс обучения очень отличался от того, что я себе представлял. На первой лабораторной работе на своем первом языке программирования С задание звучало (дословно): скачиваем методическое пособие с сайта, находим первую задачу и начинаем писать код. И нет тебе каких-либо наставлений или объяснений, только куча вопросов у меня: где писать? как писать? почему все что-то делают, а я не пойму даже с чего начать?

Отсюда я получил урок номер 1: обучение в университетах построено практически полностью на самообучении, начитке кучи лекций и отсутствием практики.

Все бы ничего, я не против такого подхода, просто на тот момент мне казался код программ рандомным набором замысловатых и непонятных символов. Компьютер появился только на втором месяце обучения, следовательно я просто пытался написать код на листочке, анализируя решенные задачи своих одногруппников.

Тем временем, середина семестра подходила к концу, понятность кода ничуть не увеличивалась, руки опускались, и я уже не успевал со сдачами работ...

#my_little_story
👍75🔥11👏6🤯41
Зачем столько однотипных методов of в интерфейсе List?

Начинающие джависты часто спрашивают меня (и, думаю, многие не начинающие тоже задавались вопросом), зачем разработчики языка Java добавили с десяток методов of в интефейс List, которые отличаются лишь количеством параметров.

И правда, зачем? 🤔
И есть ли действительно смысл в этом?

#dmdev_ликбез
🤔23👍3😐3
DMdev talks
Зачем столько однотипных методов of в интерфейсе List? Начинающие джависты часто спрашивают меня (и, думаю, многие не начинающие тоже задавались вопросом), зачем разработчики языка Java добавили с десяток методов of в интефейс List, которые отличаются лишь…
📚 В топ-1 книге для Java разработчиков “Effective Java” by Joshua Bloch отлично описывается зачем приходится перегружать методы таким образом и как выбирается количество элементов без использования varargs.

Если коротко:
для избежания накладных расходов на создание и инициализацию массива в критически важных по производительности местах приложений.

На картинке тот самый кусочек информации из книги!
(3rd Edition, Item 53 “Use varargs judiciously”)

#dmdev_ликбез
#dmdev_top_books
👍31🔥101🤔1
#3 Мой путь

На своем стареньком компьютере я установил не менее старенькую среду разработки Visual Studio 2005 для того, чтобы писать свои программы на языке С уже там, а не на листке бумаги. Почему-то код не стал быть более понятным. Я уже мог отличать ключевые слова, такие как for, if, array[]. Я понимал, где ставить фигурные скобочки, что вот это циклы, это ветвления, а вот это массивы и функции, но не более. Я не мог осознать, как самому это написать и почему ключевое слово return еще и что-то куда-то возвращает.

В один прекрасный день я увидел, как мой одногруппник использует дивный функционал в той же самое среде разработки. Он как будто бы сам выполнял построчно код программы, а не компьютер. Ему отображались все значения переменных, индексы циклов, он даже мог переходить в функции и выходить их них - все! Тот первый переломный момент в моем становлении программистом был уже в конце декабря перед началом сессии - я узнал про отладку программ (Debug).

Я понял как работает процессор, как он выполняет мои инструкции в коде, я дебажил строчка за строчкой. Я стал запоем читать свою первую электронную книгу по С, что попалась под руку. Cделал все лабораторные работы за неделю и сдал перед самым началом экзамена, получив к нему доступ. Сам экзамен я тоже сдал на максимальный балл. Моей радости не было предела. Почти 4 месяца у меня ушло перед тем, как я осознанно стал писать строчки кода в своих программах.

Второй семестр первого курса прошел еще быстрее. Лабораторные работы представляли из себя математические задачи: метод Гаусса, аппроксимации различных функций и все в этом духе. Но меня волновала не математическая сложность, а то, что лично я могу написать код, который будет решать такие непростые задачи за доли секунды, в то время как человеку могло понадобится минуты и даже часы. Осознание этого мотивировало еще больше изучать программирование!

#my_little_story
👍56🔥281🤔1
Какой же жизненный мем 😅
😁486👍1
Индекс DMdev: update

Количество видео DMdev уже давно перевалило за 500!

Хоть информация и подается в структурированном виде, но все равно порой необходимо возвращаться и искать какую-то конкретную тему, которую когда-то смотрел, но хочется освежить в памяти - что-то вроде конспекта.

Именно для таких целей и был создан индекс по курсам DMdev.
В обновленной версии присутствуют описания, таймкоды и даже ссылки на конкретное место в видео по следующим курсам: Java Core, SQL, JDBC, HTTP. Servlets, Maven, Junit5, Groovy, Gradle, Hibernate и Spring.

P.S. Сейчас идет работа по добавлению курса Bash и ссылок на GetCourse
👍44🔥26👏2
#4 Мой путь

На втором курсе меня подселили в общежитии к ребятам постарше. В университете начались занятия уже по новому для меня языку программирования С++, который я осваивал благодаря книжке размером ~1500 страниц от автора Х. Дейтел. Саму книжку, кстати, я нашел и попросил у своего соседа по комнате. Так начался новый дивный мир в объектно ориентированное программирование (ООП). Только тогда я понял, сколько всего я еще не знаю и что я был всего лишь в самом начале очень длинного пути.

Изучение твоего второго языка программирования обычно запоминается, особенно если он сильно отличается от первого. Но в моем случае синтаксис показался довольно простым после С, лишь сама концепция ООП полностью меняла мой шаблон восприятия кода программ, сложившийся за предыдущий курс университета, и естественно их написание. Тем не менее, эта парадигма открыла мне глаза на то, какие действительно огромные программы можно создавать!

Но могу сказать с уверенностью, что именно второй семестр второго курса был следующим переломным моментом…

Во-первых, у меня появился третий язык программирования - Assembler, изучение которого длилось целых 3 семестра ввиду специфики моей специальности. Он помог мне в мельчайших подробностях разобраться в том, как все устроено на машинном уровне, как работают регистры, аккумуляторы, какие бывают команды процессора, как в принципе устроена память компьютеров. Мне почему-то очень нравился этот минимализм. Например, как приходилось выкручиваться в коде с помощью меток, когда у тебя даже не было циклических конструкций на вооружении.

Во-вторых, это было то самое время, когда я услышал впервые слово Java. Именно услышал, потому что самого языка программирования мы не изучали на моей специальности. Это был Игорь, мой сосед по комнате в общежитии, который показал, как можно круто и легко писать на Java. Я сначала не очень заинтересовался: мне показалось, что язык как-то слишком уж прост. Нет этих крутых ссылок, указателей, указателей на указатели, деструкторов - все казалось каким-то действительно простым. Особенно если учитывать, что все происходило в то время, когда я программировал на Assembler.

#my_little_story
👍55🔥12🌚4
#5 Мой путь

Вот и начался третий курс. В университете все было довольно скудно по части программирования. Я все-таки решился попробовать пописать на Java чисто ради интереса. Тем более учитывая еще и то, что прошли очередные летние каникулы без строчки написанного кода. А точнее, они прошли в моем родном городе на стройке, на которой я еще раз убедился, что заниматься умственным трудом гораздо приятнее.

На просторах интернета я нашел электронный вариант первого и второго тома К. Хорстманна, которые в последующем захватили меня на весь семестр. Причем на столько, что я окончательно и бесповоротно влюбился в этот язык программирования. Я даже не могу передать словами, какое эстетическое удовольствие я испытывал, просто писав программы на Java. Я каждый день с нетерпением ждал окончания лекций и лабораторных работ, чтобы побыстрее вернуться к своему компьютеру и вновь погрузиться в изучение.

Одним прекрасным декабрьским днем 2011 года я увидел объявление на стенах университета о том, что компания EPAM Systems проводит конкурсный набор на свои курсы по Java. К слову, в то время в БГУИР были лаборатории от трех компаний (IBA, EPAM, Itransition), которые довольно часто делали подобные объявления по курсам. Я решил, что пора проверить свои знания и записался на свое первое собеседование.

К сожалению для меня, первый этап был совсем не о программировании: нужно было продемонстрировать владение иностранным языком.

Я учил английский все 11 классов в школе и первые три семестра в университете, но так и не мог связать нескольких слов. Не могу сказать, что я расстроился. Наоборот, я ожидал подобного и начал опрашивать своих знакомых в общежитии, знакомых моих знакомых, кто уже проходил подобные собеседования и мог рассказать, что проверяют на первом этапе. Как итог: я купил небольшую книжку “Английский для изучающих информационные технологии” и стал просто каждый день читать и переводить ее до тех пор, пока все слова не стали мне знакомыми.

Следующее, что я начал подготавливать - это несколько текстов на английском, которые представляли из себя ответы на потенциально возможные вопросы для проверки речи. Я просто выучил их наизусть.

К счастью для меня, аудирование не проверяли, потому что этот аспект я бы точно никак не подготовил за такой маленький срок...

#my_little_story
🔥42👍167
Подражание

Люди по своей природе склонны машинально повторять любые действия, которые мы наблюдаем. В подтверждении этого был проведен интересный опыт на обезьянах.

Когда одна обезьяна брала что-нибудь пальцами руки (например, карандаш), в части мозга, отвечающей за управление движениями, активизировались нейроны.

Но что более удивительно, когда та же обезьяна просто смотрела на то, как кто-то другой брал карандаш - активизировались те же самые нейроны в мозге.

Если пойти еще дальше, то эти же нейроны активизировались и даже тогда, когда обезьяна намеревалась взять карандаш или просто представляла это действие у себя в голове.

Отсюда:
1️⃣ Не стоит удивляться, что у программистов такая тяга к тому, чтобы копипастить код и подражать в написании/переиспользовании различных подходов других программистов 😅

2️⃣ И да, даже просто обдумывая у себя в голове перед сном, как завтра будем решать проблемную задачу на работе - мы тоже обучаемся!

PS. Это я вычитал из книги “Мозг и душа. Как нервная деятельность формирует наш внутренний мир”.
Там еще невероятно много познавательных фактов о мозге и о том, как мы воспринимает мир с помощью него

#dmdev_top_books
👍35🔥6🤔4