(16.05.2012 22:59)Serge Sadov писал(а): Что я непонятного сказал? Прежде, чем начать что-то описывать языком машинного кода, программой, надо построить алгоритм, по которому это будет делаться. Алгоритм для человека, а уже он потом переведет его в машинный код. Перевести готовый алгоритм действий в машинный код большого ума не надо, именно потому программисты такого низкого мнения о кодерах. А вот составить грамотный алгоритм вместе с математическими методами (если это нужно для задачи, например при программировании шифровании, обработки видео) - это надо постараться.
Я примерно так вас и понял, но пример привел другой.
"Что я непонятного сказал?".
А вы ничего не сказали, т.е не дали определения алгоритма. Никакого - ни совпадающего с общепринятым, ни отличного. И не дадите. А вот определение кодера в вашем понимании теперь можно дать. Это человек, переводящий блоксхему в цифробуквенное изображение. Но, так как это можно сделать программно, оно бессмыслено.
Приведенный вами пример, это просто два разных способа отобразить алгоритм сортировки пузырьком. И, как вы правильно пишите, кто угодно может отобразить его иначе, не только третьеклассник, но и программа. Они, программы, кстати, есть, и позволяют отображать код блоксхемой и наоборот. Если интересно - наберите в гугле UML. Более того, есть еще один вариант, реализованный в C#. Там можно просто сворачивать код до того, что остаются видимыми только сами функции и входящие в них переменные. Видимо, на самом деле, вы имели ввиду, что алгоритм - это идея пузырька, а все остальное - просто его реализация. Впрочем, это моя догадка, вам видней. Не зря вы не стали приводить пример алгоритма в какой нибудь большой программе, скажем виндоус. Ясное дело, их тоже можно изобразить такими блоксхемами, но там уже не будет простой и ясной идеи, разве что сама идея - окна, но она не тянет на алгоритм . Блоксхема иногда наглядней, если это что то простое, как ваш пузырек. А, если она на 1000 листах, то это уже вопрос вкуса и привычки, а наглядность потихоньку исчезает. Но это не повод видеть принципиальную разницу между ней и другими вариантами записи когда программы.
Что еще более обессмысливает эти игры с классификацией и делением на кодеров и программистов, так это то, что ваш пример вообще может не требовать кода с точки зрения, например, моей. Это просто объект C#, который я вызову как целое, такой же, как любой другой элемент языка, скажем сложение, деление, цикл, переход. Ну и кем окажусь я, если произведу сортировку просто вызвав этот пузырек одной командой, или включив его в форму перетаскиванием, двойным кликом и т.п.? Именно так производится, например, шифрование или подсчет контрольной суммы. Никаких алгоритмов, вызываешь объект и все. Все эти игры давно в прошлом. Да, там, на микрософте сидит пара мужиков и пишут эти алгоритмы, может быть, даже на ассемблере, для скорости. Но вот как быть со мной, когда я это реализую у себя? Я кто?
Если я буду рисовать только блоксхемы, и перегонять их в код программой, я программист, а, если я их в гробу видел, и пишу сразу код - я кодер?