Программирование, как черная дыра творческой личности

Jun 17, 2008 16:43


Вот уже 30 лет занимаюсь программированием. Количество языков, на которых я написал хотя бы одну программу, перевалило за 45 штук. За это время я сильно разочаровался в программировании, эвээмах и задумался - а почему мои ожидания не оправдались? Почему не сбылись надежны на безудержный рост личной производительности труда, усиление интеллекта и снижение порога трудности при штурме проблем тысячелетия?

Точноно ответа пока нет, но надежда не угасает. Захотелось взглянуть на программирование с птичьего полета. На сайте tiobe есть картинка трендов популярности языков: 
Java(20% рынка), C(15%), C++(10%)...

Видно, что почти у всех лидирующих языков с 2001го года тренд идет вниз. Perl(5.5%) также на спаде с 2004. Visual Basic(10%) года.держится на одном уровне и это понятно - его держит привязка к продуктам Microsoft, а не его собственные достоинства.  На подъеме языки, связанные с интернет- и сетевыми технологиями: PHP(10%), Python(5%), C#(4%), Ruby(2.6%), JavaSctipt(3%).

В десятку наиболее популярных языков не вошел ни один язык AI, т.е. искусственного интеллекта. Оценка динамики по категориям языков:

Category                                  / Ratings June 2008 / Delta June 2007
Object-Oriented Languages  56.0%                          +3.9%
Procedural Languages          41.5%                           -2.4%
Functional Languages             1.8%                           -0.3%
Logical Languages                   0.8%                           -1.2%

Category                                 /     Ratings June 2008 / Delta June 2007
Statically Typed Languages           58.4%                           +0.4%
Dynamically Typed Languages     41.6%                            -0.4%

Можно также заглянуть в http://langpop.com/

Из таблиц видно, что лидируют объектные языки со статическими типами, и отрыв продолжает расти. Некоторые важные тенденции на сайте не отражены: продвинутые графические средства (Qt, Delphi, Visual Basic...) позволяют объектное конструирование. Т.е. человечество стремится вспять - от использования языка и алфавита к пиктограммам и жестам. Следующий шаг - выращивание программных систем и ценозов, но как скоро он будет сделан?

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

Можно сделать вывод: для желающих сегодня иметь большую зарплату нужно изучать Java, C, C++. Для тех, кто мечтает быть программистом завтрашнего дня пригодятся PHP, Python и т.д. К услугам программистов-футуристов средства Artificial Intelligence.

Где та волшебная информационная глина, о которой мечталось в юности? Почему закон Мура не работает в области информации? Некоторые достижения есть - тот же датамайнинг, но хочется неизмеримо большего. С задачами исследования и анализа данных и систем я сталкиваюсь постоянно. И зело надоело чувствовать себя полуслепым котенком с клубком ниток, когда не знаешь - за что нужно ухватиться, чтобы размотать клубок. Общий подход обычно такой: а давайте-ка мы попробуем применить Х, где Х - это вейвлет-анализ, генетические алгоритмы или простая комбинаторика.

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

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

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

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

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

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

Общий объем работы на пару лет, при условии наличия хорошего инструментария. Планируемые результаты:
1.       Некоторая процедура диагностики проблемы, пересчет в шкалу Альтшуллера
2.       оценка верхнего барьера решаемости разными методами
3.       технология выбора и проектирования решающей системы
4.       получение и тестирование решения проблемы
5.       Инструкция по применению метода

Отсчет пошел 2008/06/17

programmizm

Previous post Next post
Up