Чему мы можем научиться из вашего самого последнего катаклизма? - PullRequest
3 голосов
/ 05 января 2009

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

РЕДАКТИРОВАТЬ: Может быть, некоторые предложения о том, что вы узнали, и как это изменило ваше программирование?

Ответы [ 9 ]

12 голосов
/ 05 января 2009

Не самый последний, но я начал программировать как любитель. Я стал одаренным в этом, изучил все, что мне нужно было узнать, самостоятельно изучая. Я поступил в колледж, чтобы получить 2-летнюю степень в области компьютерных наук, плавал на уроках и точно не узнал никакой новой информации. Это было слишком легко, и, внеся свой вклад в создание досок объявлений и видя, как другие борются, я оценил себя, чтобы быть по крайней мере таким же хорошим программистом, как любой 10-летний ветеран.

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

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

Что ж, хороший 6-месячный опыт из практики исправил это, помог избавиться от некоторых вредных привычек и дал мне хорошее представление о том, как на самом деле должен выглядеть код. Итак, я чувствую себя хорошо, но сталкиваюсь с проблемой, которую не могу решить: у меня есть объект, вложенный на 5 уровней вглубь другого объекта, и я хочу, чтобы он уведомил внешний объект о том, что его состояние изменилось. Я не мог найти очевидный способ сделать это, поэтому я проконсультировался с коллегой, который одолжил мне книгу о шаблонах проектирования Java. Я прочитал книгу, и она открыла мне глаза на то, сколько мне не хватает: был целый мир шаблонов дизайна, которые я никогда раньше не видел, предлагая элегантные решения проблем, о которых я никогда бы не подумал.

А потом меня снова поразило, все это время я так много пропускал, я вообще не мыслит высокого уровня, и хаки, которые я написал для решения тех же проблем, описанных в книге GoF сделал это даже очевидным: Я отстой при написании кода .

Еще 6 месяцев, и я был мастером шаблонов дизайна. Я жил и дышал абстрактными фабриками, долго рассуждая о том, почему MVC значительно превосходит MVP, молился золотому идолу Мартина Фаулера рядом с моей кроватью. Так что, в любом случае, я хотел улучшить свое резюме, изучив несколько дополнительных языков. Я добавил Python, C #, Perl в список, но мне стало скучно изучать одни и те же вещи снова и снова с небольшим изменением синтаксиса. Я решил взглянуть на странный язык и наткнулся на несколько фрагментов Хаскелла. Не зная, что это за язык, я прочитал и обнаружил целую парадигму программирования, называемую функциональным программированием. Просто ради забавы я выучил функциональный язык программирования (я выбрал OCaml вместо Haskell и Lisp), и он полностью изменил мои представления о программировании.

После выполнения этого небольшого эксперимента меня снова поразило: Я сосу при написании кода

Как существовала эта вселенная функционального программирования, когда я об этом не знал? Почему никто не сказал мне об этом раньше? Чтобы думать, я имел обыкновение гордиться своей способностью выкачивать десятки и десятки классов Java, буквально тысячи строк кода, создавая иерархии абстрактных фабрик, конкретных фабрик, посетителей и т. Д. И т. Д. И т. Д. Когда я стал опытным с OCaml, количество строк в моих приложениях сократилось в 20: 1 раз. Десятки потенциальных Java-иерархий рухнули в несколько союзов OCaml, каждый из которых умещается на одном экране. С тех пор я езжу на поезде функционального программирования.

Урок здесь прост: если вы думаете, что вы лучший программист, вы отстой. Мышление «Я знаю все, что нужно знать» наивно и ограничит вашу способность стать действительно превосходным программистом.

6 голосов
/ 05 января 2009
2 голосов
/ 05 января 2009

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

2 голосов
/ 05 января 2009

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

В прошлом году, когда я еще учился в колледже, я откровенен.

1 голос
/ 05 января 2009
1 голос
/ 05 января 2009

Зависимость впрыска и инверсия управления для меня.

1 голос
/ 05 января 2009

замыканий, лямбда-функций ...

0 голосов
/ 05 января 2009

Тип логического вывода. Будучи невероятно расстроенным из-за громоздкой, бюрократической концепции спецификации типов Java, обнаружив SML и увидев, что статическая типизация может быть почти без усилий, стала настоящим откровением (и я даже more расстроился с Java ...). Имейте в виду, я не использовал язык с выводом типа с тех пор (как правило, либо я не могу выбрать язык, либо я выбираю Python), но вид того, что можно сделать, сильно повлиял на мое отношение к что сделано сделано ...

0 голосов
/ 05 января 2009

3GL до 4GL;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...