Моя история начинается где-то в 1985 году. Родившись в 1971 году в маленьком городке в Гессене, Германия, я вырос в то время, когда к телефонам подсоединяли дома с помощью кабелей, требовалось, чтобы вы говорили в собачью кость, у меня были гудки и дисковые переключатели. , что заняло слишком много времени, чтобы вернуться к нулю, когда вам нужно было быстро набирать номер.

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

Моим первым компьютером был C64, который поставлялся без запоминающего устройства. Итак, я выучил Commodore Basic, написав свои первые программы и не выключая компьютер, так как тогда программа уходила в большую черную пустоту. Моя программа для хранения и поиска адресов была написана около 4 раз, и все из-за того, что держать компьютер включенным в течение ночи было невозможно. Но с каждым разом программа становилась лучше.

Позже мой брат создал вещь под названием «набор данных», которая представляла собой кассетный плеер, связанный с c64. Благодаря этому у меня была возможность хранить и извлекать свой код. В зависимости от качества ленты это была скорее система хранения с однократной записью, чтением и отказом…

Я до сих пор помню звук этого набора данных и звук, издаваемый кодом при записи на кассету. Позже этот набор данных был заменен дискетами 1541. 5.25…

После 13 долгих лет в школе, иногда где-то в 1990 году, и после обязательной альтернативной службы (вместо того, чтобы пойти в армию, что мне показалось довольно глупым), я решил пройти 15-месячный курс обучения написанию компьютерных программ. «Организации-Информатик», так курс назывался в Германии.

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

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

В чем я не был хорош, так это в людях. Понимание их поведения и того, что то, что они говорят, редко совпадает с тем, что они имеют в виду, было (и остается им по сей день) несколько ограниченной моей способностью. Осознание того, что я отличаюсь от других, было мыслью, которая слишком долго таилась в глубине моего разума. Ад, который был школой, научил меня тому, что понимание этих странных существ, называющих себя людьми, никогда не станет частью моих личных знаний. Но кого это волнует, пока вокруг есть компьютеры.

Много лет спустя, в тяжелое время 2014 года, я пошла к психологу, чтобы узнать, что со мной не так. Официальный диагноз после 6 месяцев оценки был «синдром Аспергера», МКБ-10 F84.5. Реальность, стоящая за этим техническим термином, позволяет мне понимать данные так, как это редко понимают простые смертные. Но это не помогает мне понять нелогичные системы, такие как люди. Хотя, будучи женатым мужчиной и отцом двоих сыновей, мои способности справляться с этими гуманоидами уже не так уж плохи. Ну, по сравнению с… компьютерами во всяком случае.

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

В моем путешествии по царству программирования я шел разными путями. А в 1998 году я познакомился с языком программирования под названием Java. Какой прекрасный язык, написать один раз и запустить где угодно, с таким ясным и лаконичным синтаксисом и документацией, которая так хорошо написана, логична и полезна. Какое счастье, что не нужно платить за большие неуклюжие компиляторы, такие как Borland C++, и иметь возможность просто скачать jdk и начать хакать.

А в 2000 году я впервые использовал Java в коммерческом проекте в качестве фрилансера. Да, AWT ужасен, а Swing немногим лучше, но уродливые интерфейсы выглядят одинаково независимо от системы, в которой они работают. И то, что я не дизайнер, помогло мне создавать уродливые пользовательские интерфейсы…

Java был постоянным партнером в моем путешествии по различным проектам, как фрилансера, так и наемного работника, а теперь снова в качестве фрилансера. Мои ограниченные способности дизайнера все больше и больше толкали меня в мир бэкенда, где я действительно чувствую себя как дома. Работа с бэкендами, проектирование потока данных, понимание внутренних особенностей данных — все это приносит мне удовлетворение. Бэкэнд — это то, где правда. Внешний интерфейс обычно представляет собой просто дизайнерскую оболочку, которая пытается скрыть неспособности серверных частей.

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

Нет, учиться для меня означает понимать внутреннюю сущность языка. Свободно владеть им и его инструментами. Как я делаю в Java, с его обширными экосистемами Maven, Spring, Hibernate.

Поэтому я решил пройти курс на devslopes, и этот курс стал причиной, по которой я пишу эту статью. Поскольку частью курса является написание статей о своем опыте.

Буквально пару минут назад я закончил босса врага недели 3. Создал приложение с нуля, взял дизайн, превратил его в работающее приложение. И вот я, не дизайнер, которым я являюсь. Теперь я должен справиться с этой неспособностью. И я решил стать лучше в этом. Так что разработка полезных интерфейсов станет частью моего дальнейшего путешествия. Ага…

Java и Swift теперь мои компаньоны. Java в качестве моего ежедневного инструмента, с помощью которого я пишу код для своих клиентов, и Swift в качестве моей следующей цели, которой я хочу свободно владеть.

Многие вещи действительно хороши в Swift. Например, возврат более одного объекта за раз. Или странная вещь, что параметры метода могут иметь разные имена: одно для вызова извне, а другое для использования внутри метода. Избавьтесь от завершающего «;» в конце каждой строки.

И некоторые вещи действительно странные в Swift. Например, замыкания. Завершающие замыкания без имен аргументов. В настоящее время они действительно не кажутся мне естественными. К счастью, Java-версия потоков с интенсивным использованием замыканий более естественна, и я могу использовать эти знания, чтобы понять, как замыкания работают в swift. Думаю, через пару недель это уже не будет для меня противоестественно.

Или тот факт, что мне снова приходится иметь дело с типами по значению вместо Java-способа копирования по ссылке. Java (помимо основных типов) чисто объектно-ориентирована, без типов по значению. В Swift теперь у меня есть типы по значению и типы по ссылке. Чувствует себя странно. Но, может быть, они имеют свое применение…

В Swift у вас есть действительно неизменяемые объекты. В то время как это понятие не является частью языка Java. В Java у вас есть модификатор final. И во многих проектах обязательно, чтобы все параметры метода были «финальными», отчасти из-за неправильного предположения, что эти модификаторы final превращают объекты в неизменяемые. Это не так. Это просто означает, что вы не можете переназначить новое значение конечной переменной. То, что вы делаете внутри объекта, который находится в переменной, помеченной как final, совершенно не зависит от того, был ли сам объект помечен как final. В Java нет эквивалента «let» и «var».

И мне очень нравится эта концепция в Swift. Это то, чего не хватает Java.

Думаю, что время от времени буду публиковать о своих текущих успехах. Итак, хватит на сегодня. Впереди у меня долгий путь, и мне это нравится. Учиться для меня значит жить. Я сам не неизменное существо, так что да, я хочу учиться, я хочу жить, я хочу меняться.