Алгоритмист

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

 

А вот какое объяснение слова "алгоритмист" мне удалось найти сейчас в сети интернет:

 

"Народ, тут мне сказали, что я не алгоритмист и вообще... Объясните плиз, что это за разновидность такая?'

 

Ответ: "Алгоритмист — это тот, кто может (должен), например, сказать: "мы можем сейчас это временно реализовать со списком, но надо будет через год переделать на дерево, потому что при нагрузке в миллион записей это окажется основным узким местом". Или, например, такое: "Эта задача в наших условиях разрешима только методом A, но у него при хорошем среднем времени — худшее время недопустимо, поэтому его работу надо вынести в отдельный тред."

 

И далее на подобном полукитайском наречии.

 

Вот еще одна интерпретация:

 

Илья Иослович. "Аспирантура и потом":

 

На заседании этого совета я сидел рядом с академиком Н. Н. Моисеевым, и он меня тихо спросил: «Что это они говорят — алгоритмист, что это такое?» Я ему так же тихо ответил: «Алгоритмист — это человек, который не умеет программировать».

 

Алгоритмист и программист – это порой смешиваемые понятия. Смешивают даже понятия алгоритм и программа. А по-моему, лучше когда, как говорят в Украине, мухи отдельно, котлеты – отдельно. Поэтому ниже привожу выдержки в пользу такого разделения – выдержки, относящиеся к понятиям алгоритмист и программист.

 

Материал из Википедии — свободной энциклопедии:

 

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

 

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

 

Ископаемые алгоритмы (1978 Чачко А.Г. - Искусственный разум)

 

Спустя почти 4 тысячи лет, когда мне пришлось учиться математике в школе и вузе, слово "алгоритм", не было модным. ... Казалось бы, алгоритмист добровольно связал себе руки... Сомневаюсь, знал ли я, что такое алгоритм, в середине 50-х годов, оканчивая политехнический институт. Сегодня, двадцать лет спустя, перед моим мысленным взором проходит череда алгоритмов, с которыми удалось познакомиться за эти годы. Ладно, выбираю вот этот.

 

"Спинка. Набрать 86 петель, провязать 4 ряда "рябушкой" и затем перейти на чулочную вязку. На 43-м см от линии низа закрыть на пройму с обеих сторон по 6 петель, затем с каждой стороны провязать по 2 последние и 2 первые петли вместе и 1 раз - 2 последние вместе. На спицах должно остаться 62 петли - продолжать вязать их до плечевого скоса (17 см). Плечевой скос выполнять..."

 

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

 

А вот извлечение из того же источника (1978 Чачко А.Г. - Искусственный разум), также касающееся понятия "алгоритмист".

 

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

 

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

 

Мерой четкости. Степенью ясности. Полнотой определенности.

 

Насчет требования ясности все, вроде бы, ясно. А вот "разработка программ" и "алгоритмирование" – мне, например, по тексту извлечения не совсем ясно: это одно и то же или не совсем так. Поэтому поищем что еще говорят умные люди относительно понятий алгоритмист и программист.

 

Вот, пожалуй, по теме: диалог специалистов АВОК (forum.abok.ru/lofiversion/index.php/t21837-1200.html)

 

"Программист пишет программу и инструкцию пользователю к ней. Здесь "программа" находится в системе "компьютер-пользователь" и есть её создатели - алгоритмист и программист.'

 

То есть, согласно этому извлечению, есть алгоритмист и есть программист.

 

А вот другой специалист возможно думает иначе – программист ("кодер") всегда алгоритмист (http://www.forum.mista.ru/topic.php?id=656341):

 

Как перебрать все варианты комбинаций? Кодер он всегда алгоритмист. Придумывает сложнейшие алгоритмы. Например, как сложить два числа. Как сравнить два числа. Даже цикл может придумать.

 

Вадим Зубанов по этой теме высказывается, на мой взгляд, наиболее четко (http://uforum.uz/archive/index.php/t-858.html):

 

Должен ли программист быть специалистом? Скажем так - непосредственно "программист" - кодер это ПТУ-шник, больше от него не требуется. Это у нас все смешали в кучу. В системах чисто расчетных (ПО для космических аппаратов, самолетов, автомобилей, проектировочноые задачи) есть (должен быть) алгоритмист, который выдает программисту блок-схему. А потом уже работают программисты непосредственно.

 

Вот так: алгоритмист работает над алгоритмом (блок-схемой), а программисты работают над программами. Как говорят в украинской Раде: Мухи отдельно, котлеты – отдельно.

 

Но спектр авторитетных мнений еще не исчерпан:

 

Программист — а; м. Специалист, занимающийся программированием компьютерных программ. (Большой толковый словарь русского языка. 1-е изд-е: СПб.: Норинт. С. А. Кузнецов. 1998 ... Толковый словарь русского языка Кузнецова).

 

Как по мне, то надо было бы утверждать что-то одно. Либо: Программист – специалист, занимающийся программированием. Либо: Программист – специалист, занимающийся составлением компьютерных программ. Правда, и то и другое, как и исходное определение, мало что объясняют.

 

Вот еще определение понятия "программист" (материал взят из Википедии — свободной энциклопедии):

 

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

 

(Толковый словарь по вычислительным системам Под ред. В. Иллингуорта и др. — М.: Машиностроение, 1989)

 

Лично у меня складывается впечатление, что для начала следует определиться с понятием "алгоритм" – прежде, чем пытаться выходить на понятие "алгоритмист".

 

Итак, ищем, что умные люди думают по части понятия алгоритм:

 

Алгоритм — Википедия (извлечения с небольшой корректировкой)

 

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

 

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

 

Само слово «алгоритм» происходит от имени хорезмского учёного Абу Абдуллах Мухаммеда ибн Муса аль-Хорезми (алгоритм — аль-Хорезми).

 

Современное формальное определение алгоритма было дано в 30—50-е годы XX века в работах Тьюринга, Поста, Чёрча (тезис Чёрча — Тьюринга), Н. Винера, А. А. Маркова.

 

Формы записи алгоритма:

 

-словесная;

 

-схематическая или графическая (блок-схемы);

 

-код для вычислительных машин – порядок действий, описанный на алгоритмическом языке.

 

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

 

Как видите, здесь в изрядной мере смешиваются понятия программа (код) и алгоритм.

 

Еще определения (алгоритм - значения и толкования слова в словарях):

 

Значение слова Алгоритм по Ефремовой:

 

1. Определенная последовательность операций или вычислений (в математике).

 

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

 

3. перен. Обобщенная схема какой-л. деятельности.

 

Значение слова Алгоритм по Ожегову:

 

Алгоритм - Совокупность действий, правил для решения данной задачи.

 

Значение слова Алгоритм по Психологическому словарю:

 

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

 

К понятиям алгоритма и алгоритмиста примыкает еще одно родственное понятие: алгоритмизация процессов (БСЭ)

 

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

 

Вот такой получился спектр мнений, определений и чего-то еще. А теперь позвольте мне начать говорить так сказать лично от себя. Лет 15 назад я встретился в Ростове со своим коллегой, который, как и я, занимался разработкой программ по топливоиспользованию. Работали мы тогда еще в основном в Quattro Pro – предшественнице Excel. Он и объяснил мне, что лично он не программист, а алгоритмист, объединяющий в своем лице технолога, составителя алгоритмов и программиста. Причем, стадия составления алгоритмов в смысле блок-схем у него, как и у меня, опускалась. Мы сразу составляли свои "алгоритмы" непосредственно на персональном компьютере в виде программ. И тогда подобно Мольеровскому герою господину Журдену, который не знал, что он всю жизнь говорил прозой, я обнаружил, что едва ли не всю свою взрослую жизнь я был алгоритмистом.

 

Я работал на предприятии ДонОРГРЭС, которое в качестве отделения входило в состав Всесоюзного Треста ОРГРЭС – наладочной организации с исследовательским уклоном. У нас был штат программистов, в основном математики по образованию, и несколько технологических цехов. Технологи разрабатывали алгоритмы в виде блок-схем, программисты писали по ним программы, в частности для АСУ ТП. Я тоже рисовал подобные блок-схемы для АСУ ТП в качестве технолога, т.е. алгоритмиста, хотя термин "алгоритмист" у нас не употреблялся. А до этого я уже много лет занимался программированием, в основном на языке Фортран, и никаких алгоритмов для себя я не рисовал.

 

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

 

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

 

С появлением персональных компьютеров, многие из моих коллег (точнее процентов пять) обратились в технологов, алгоритмистов и программистов в одном лице. Я полагаю, что это сочетание должно объединяться одним словом – алгоритмист. Технолог может не быть алгоритмистом и программистом, программист может не быть технологом и алгоритмистом, но алгоритмист должен быть одновременно хорошим технологом и в той или иной мере программистом. Алгоритмист должен быть одновременно хорошим технологом потому, что иначе он не сможет переложить технологический процесс на алгоритм. И в тоже время алгоритмист должен быть в той или иной мере программистом, иначе он не сможет составить хороший алгоритм, в смысле полной пригодности составленного алгоритма для последующего его переложения на понятный компьютеру алгоритмический язык. Ну а поскольку рисовать алгоритмы в этой схеме не обязательно, то алгоритмист может быть только технологом и программистом в одном лице. Лично мне проще, легче и удобнее сразу составлять программу, чем рисовать каких-то "чертиков" (то бишь, блок-схемы) на листе.

 

Итак, я рассказал о существующих интерпретациях понятия "алгоритмист", рассказал свою личную историю алгоритмиста, аналогичную историям десятков моих коллег. Теперь, как мне представляется, пора нам и поразмышлять по части понимания запутанного понятия "алгоритмист".

 

Согласно И.А.Крылову, сапожник – это тот, кто делает (тачает) сапоги, пирожник – кто делает (печет) пироги. Насколько я понимаю, по правилам русского языка алгоритмист – это тот, кто делает алгоритмы, а программист – это тот, кто делает программы. Получается, что в узком понимании слова алгоритмист должен просто составлять алгоритмы, например переводя словесные описания технолога на язык блок-схем. Программист в узком понимании – это своего рода переводчик с языка блок-схем на так называемый алгоритмический язык, в результате чего получается программа, пригодная для ее применения с использованием компьютера или других вычислительных средств.

 

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

 

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

 

Теперь обратим внимание еще на один момент. Плотник должен уметь плотничать. Столяр – столярничать. И т.д. А есть еще слово алгоритмизация – кто должен заниматься этой алгоритмизацией, если не алгоритмист?

 

Лет 30 назад я познакомился с книгой об алгоритмизации промышленных или технологических объектов. Точного названия не помню, а в сети интернет я этой книги не нашел. Но нашел книгу: А.И. Долгова "Алгоритмизация прикладных задач", также дающую хорошее представление об этом предмете – об алгоритмизации. Вот извлечение из этой книги:

 

Алгоритмизация – это процесс разработки и описания алгоритма решения задачи. В наиболее общем случае алгоритмизация включает следующие основные этапы:

 

1 краткая содержательная формулировка задачи, решаемой на ЭВМ;

 

2 построение математической модели рассматриваемого в задаче объекта или процесса;

 

3 разработка алгоритма решения задачи;

 

4 оформление документации.

 

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

 

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

 

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

 

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

 

26 апреля 2013 г. Протасов Н.Г.

 

P.S. Просмотрел свою статью, что называется, свежим взглядом. Больно уж я растекался мыслию по древу. Стих такой напал. Итак:

 

Алгоритмист – это специалист, который занимается алгоритмизацией.

 

Алгоритмизация – это преобразование исходной информации к алгоритмическому виду.

 

Это, на мой взгляд, довольно точные, хотя и очень короткие, определения терминов. А о том, что такое алгоритмический вид информации, поговорим в отдельной статье: Алгоритмизация.

 

Смежные темы:

ВХР глазами алгоритмиста

Анонсы других статей

Copyright © 2009 - 2024 Алгоритмист | Правовая информация
Карта сайта
Яндекс.Метрика