Главная > programming > Тестовый пример на позицию java-алгоритмист компании HFLabs

Тестовый пример на позицию java-алгоритмист компании HFLabs

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

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

Поэтому, важно изучать другие парадигмы программирования, чтобы научится мыслить другими категориями и становится более разносторонним программистом. Не лишним будет изучить Smalltalk (ООП), Scheme (основы функциональных языков программирования), OCaml (гибкая системы типизации), Prolog (язык на основе правил), Haskell (фактически промышленный ленивый функциональный язык), Erlang (распределенное многопоточное программирование) и другие.

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

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

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

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

Пока нахожусь в процессе реализации поставленной задачи на Java, но помимо самих алгоритмов решил сделать упор на новые технологии, которые на реальных своих проектах не могу использовать в силу их плохой изученности и как следствие повышенных рисков:

  1. Java 5 (новые возможности языка);
  2. Contract4J (программирование по контракту);
  3. Spring 2 (IoC и AOP);
  4. AspectJ 5 (реализация AOP);
  5. TestNG (модульное и функциональное тестирование);
  6. Maven 2 (комплесная система ведения проекта).

Помимо вышеописанных технологий также использую уже проверенные временем:

  1. Subversion (контроль исходных текстов);
  2. Eclipse JDT (среда разработки);
  3. Jakarta Commons (полезные библиотеки);
  4. Apache Log4j (журналирование);
  5. EasyMock (mock-объекты).

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

Из-за загруженности базовая 0.1 версия ожидается не раньше чем через две недели, выложу её либо в виде архива, либо на SourceForge.

P.S. Дабы не позорится лишний раз и не портить отношения с HFLabs я не стану выкладывать «боевые» алгоритмы, которых ещё пока и нет, только самый простой многопроходный 😉

Реклама
Рубрики:programming
  1. Октябрь 10, 2006 в 7:08 дп

    Работа над примером заморожена, переключился на другой мой проект semap.

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: