Главная > opinion, programming > Идея проекта challenge

Идея проекта challenge

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

В этой заметке я продолжу обсуждение затронутой темы, но немного в другой плоскости. Я расскажу об идеи проекта challenge, которую давно вынашиваю. Цель проекта challenge — практическое сравнение языков программирования с целью выявления их сильных и слабых качеств. Этот проект должен облегчить выбор языка программирования исходя из специфики задачи, которую необходимо решить.

К примеру, мне предстоит разработать мультипоточный сервер. Некоторые нераздумывая выберут тот инструмент, который хорошо знают, например, Java. Стоп! Почему Java? Почему не C, C++, .NET, OCaml, Common Lisp, Haskell, Erlang, Python, Ruby или какой-то другой активно используемый на практике язык? Ответ прост — большинство программистов хорошо знает всего один язык программирования общего назначения и ускользающе мало кто знает хотя бы по одному языку для различных парадигм компьютерных вычислений (например, императивного и функционального). И я не сомневаюсь в том, что на Java мультипоточный сервер можно написать, но также представляю какой крови это будет стоить. Проблема мне видится в недостаточном понимании сильных и слабых сторон тех или иных парадигм программирования. Т.е. на лицо «зашоренность» многих разработчиков.

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

Мне видятся следующие проблемные области, на которых можно выявить сильные и слабые стороны разных языков программирования:

  1. Мультипоточность и распределенные вычисления;
  2. Пользовательские интерфейсы (не важно какие, текстовые, графические или на основе Веба);
  3. Базы знаний.

Существует неявная цель, которую я преследую в проекте challenge — это изучение новых языков программирования. Способ решение простеньких, «рафинированных», примеров я считаю не очень эффективным. Вместо этого намного продуктивнее и полезнее решить ту или иную задачу из проекта challenge. В свое время эта идея родилась при прочтении книги Кента Бека «Экстремальное программирование: разработка через тестирование«. В ней Кент Бек упомянул, что у него уже вошло в привычку изучать новый язык программирования через написания на нем очередной реализации бибоиотеки xUnit.

У меня уже есть черновые варианты нескольких задач для проекта challenge. В будущем я их опубликую вместе с реализациями и выводами.

Реклама
Рубрики:opinion, programming
  1. Апрель 26, 2007 в 8:49 дп

    К сожалению, это врядли будет иметь хоть какую-то практическую пользу. Во-первых тебе никто не поверит, во-вторых, даже если кто-нибудь и поверит результатам твоих исследований, это никак не повлияет на выбор языка, который он будет использовать в своих проектах. Язык программирования — это вопрос религиозный. Возьми хотя бы споры: Паскаль или C++. Эти споры тянутся десятилетия, но я, например, не знаю ни одного человека, который в результате поменял бы свою точку зрения.

  2. Июль 11, 2007 в 1:13 пп

    Действительно, хорошо можно знать только один язык программирования. Можно знать вообще много языков, но параллельно использовать несколько… пожалуй, это слишком трудно. Хотя есть исключение: SQL + один из императивных языков часто используются.
    Поэтому если выбирать язык по его пригодности для задачи… это сработает в том случае, если задача будет поручаться тому программисту, который знает язык. Если есть возможность выбрать, какому программисту поручать задачу.

  3. Июль 11, 2007 в 1:16 пп

    2 jupy:
    >Эти споры тянутся десятилетия, но я, например, не знаю ни одного человека, который в результате поменял бы свою точку зрения.
    Если человек привержен одному языку… можно отдать эту задачу другому. А тот пусть продолжает программить на своём драндулете.

  1. No trackbacks yet.

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

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

Логотип WordPress.com

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

Фотография Twitter

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

Фотография Facebook

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

Google+ photo

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

Connecting to %s

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