2009-07-22 2 views
11

Мне было интересно программировать всю свою жизнь, и последние 6 лет я работал почти исключительно с Java. Я только что закончил учебу в университете и устроился на работу в качестве разработчика Java для компании.Применяемое функциональное программирование

Все эти годы программирование было хобби и любимым прошлым временем, но это имело слегка отрицательный эффект в том смысле, что я настолько привык к Java, что никогда не отваживался на него как язык программирования. Я пытался расширить свои знания о вещах, изучая регулярные выражения, SQL и изучая немного XML, но я никогда не мог быть достаточно вовлечен в новый язык, чтобы научиться правильно использовать его, потому что все они настолько похожи друг на друга , я нашел кривую обучения каждого нового языка, раздражающего. Я чувствовал, что мне нужно пройти весь процесс, чтобы закончить, я начал, поскольку я чувствовал, что другим императивным языкам больше нечего предложить (я знаю, что это заявление может начать бой, это не мое намерение).

Поэтому я решил в какой-то момент изучить магический мир функционального программирования. Я начал читать книгу о Хаскеле и нашел ее интересной с научной точки зрения (я специализировался на математике), но не смог найти практические приложения, чтобы заставить меня идти достаточно, чтобы выучить язык.

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

Я думал, что начну с Scala, так как я являюсь грамотным Java (упростите переход и сделайте более многоразовым, так как они могут «говорить» друг с другом), и поэтому мой вопрос: В вашем опыте изучается функциональный язык «смысл»? Существуют ли реальные приложения, где знание этой парадигмы может пригодиться? Не только для личных развлечений, но и это будет «профессионалом» в отрасли?

+2

Если вы хотите изучить функциональный язык, который работает на JVM и может «разговаривать» с Java, почему бы не использовать Clojure? Это ближе к Lisp, и я думаю, что Lisp является ярким примером того, что такое функциональный язык. Хотя и Scala, и Clojure поддерживают функциональное программирование, когда я думаю о функциональном программировании на JVM, я действительно думаю о Clojure. –

ответ

7

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

  1. Одна из самых больших рекомендаций для успешного параллельного программирования заключается в том, чтобы по возможности избегать изменчивого состояния в ваших поточных объектах. Функциональное программирование учит вас, как это сделать.
  2. Большинство функциональных программистов, когда они преодолевают не-несущественную кривую обучения, утверждают, что их методы делают их намного более производительными, чем они могут быть на стандартных императивных языках. Их код более не содержит ошибок, а часть размера, как и других языков. Подумайте о повышении производительности, когда вы наконец поняли регулярные выражения. Теперь положите это на стероиды. Это, что может чувствовать FP.
  3. Функциональные методы быстро пробиваются в императивное программирование. Подумайте о замыканиях на C# и Javascript, и вскоре (возможно, если повезет) на Java. Вполне вероятно, что два мира скоро соберутся вместе.
  4. Наконец, в собеседовании, знание функционального языка поможет вам выделиться из вашего среднего J2EE/.NET-клона. Это знаменует вас как самостоятельного стартера, дисциплинированного ученика и страстного программиста - независимо от того, действительно ли вы на самом деле являетесь этим. Просто не становитесь еще одним избивающим фанатом Scala, ругая своего будущего босса о том, как он упускает из виду лучшие методы программирования, так как ... вы получаете идею. Никогда не стоит оскорблять потенциального работодателя.

Для меня изучение Haskell сделало программирование намного веселее, чем раньше. Он может сделать то же самое и для вас. Удачи!

1

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

С точки зрения отрасли, если вы можете написать хороший код на функциональном языке, таком как Haskell или Objective Caml, вы неожиданно получите очень высокий спрос на очень небольшое количество позиций. Неясно, будет ли любой здравомыслящий человек считать это «профессионалом», но, безусловно, есть несколько очень интересных компаний, у которых есть открытия, которые предназначены только для функциональных программистов.

8

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

Многие «гуру» говорят, что это будет единственный способ сохранить закон Мура живым. Скорость компьютерного такта достигает вершины, и единственный способ улучшить скорость процессоров будет добавлять все больше и больше ядер. В этом случае функциональная программирование становится удобной, поскольку в этих языках данные неизменяемы, что делает их очень легко парализованными (это можно сделать автоматически).

Вы можете взглянуть на последующие ссылки

Buff, я надеюсь, что это было не слишком скучно;;)

+0

Интригующая идея, спасибо. –

1

Да, это имеет смысл и сразу же полезно в некоторых общих задачах, которые могут возникнуть на производстве (даже если вы пишете их на Java). Например, если вам когда-нибудь понадобится написать парсер (например, для DSL), вы обнаружите, что использование функциональных методов для этого приводит к значительно более чистым и более сжатым кодам.

2

Функциональное программирование продвигалось в финансовом секторе. На самом деле это не удивительно, если вы считаете, что финансовые аналитики в течение многих лет «программируют» в Excel, и это по сути функциональная парадигма (точнее, функциональная реактивная).

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

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

Теперь есть другие причины, чтобы изучить Scala в частности. Тем не менее, это мои причины, по которым вы, возможно, захотите изучить функциональное программирование.

Смежные вопросы