Дaтa Thursday 22 November 2012 Автор: категория комментарии: 1 8.5 - 6 голосов - Наверное, у каждого программиста возникала ситуация, когда совершенно не знакомые с IT люди просили его объяснить, в чём же состоит суть его профессии. Так уж сложилось, что у большинства людей понятие «программист» ассоциируется либо с замкнутым гиком в очках и свитере, либо с неким гениальным красноглазым подростком-хакером но при этом никто не знает, чем именно он занимается.Как рассказать им об этом, не пугая страшными терминами и фрагментами кода?Я воспроизведу такой рассказ, а также развенчаю несколько мифов о программировании. Чем занимаются программисты? Это не так-то просто рассказать Ответьте мне для начала: как в двух словах можно описать, например, суть профессии хирурга? Хирург проводит операции. Да, отличное описание! Ну а, скажем, футболиста? Играет в футбол! Угу, а хирург «занимается хирургией». А если без однокоренных слов? Пинает мяч? Вот это точно. А что же делает программист, кроме как «разрабатывает программы»? Программист пишет код. Исходный код своей программы, составленный на каком-то специальном языке программирования. Точнее говоря, сначала он продумывает структуры своих данных, потом составляет алгоритмы для работы с этими структурами ну а затем уже представляет это в виде кода. Что ещё за «структуры данных»? Разве он не управляет компьютером, не нажимает кнопки? Эх...Миф 1: программист работает с компьютерамиПопробуйте донести до людей, что программисту для написания кода, в общем-то, совсем не нужен компьютер. Он нужен лишь для проверки корректности кода, для его тестирования но писать сам код и составлять схемы алгоритмов вполне можно и на бумаге (хотя на экране монитора, конечно, это делать удобнее). Разработчик же просто записывает на этой бумаге набор каких-то инструкций, команд или конкретных данных (числа, текст). А кто этот набор исполняет компьютер, телефон или особо умный робот, не так уж и важно. Программист работает с данными, а не с машинами. Ну как, понятно? То есть, программист просто сообщает машине, что бы он хотел сделать а она это исполняет? Ну да, примерно. Так же, как начальник отдаёт распоряжения подчинённым? Вроде того. А если машина захочет исполнить это как-то по-другому? В смысле? Ну, что-то ей не понравится. Или просто исполнять не захочет. Так, давайте уясним раз и навсегда, что...Миф 2: машина умеет думатьПочему-то немалое число людей реально считает, будто компьютер обладает каким-то интеллектом. На самом деле это просто набор железок, которые думать не умеют. Они умеют лишь хранить числовые данные. Размагничен какой-то участок такой железки значит, это ноль. Намагничен единица. Плюс, ещё они могут складывать и вычитать эти единицы, образуя более сложные числа (о двоичной системе счисления лучше не стоит упоминать). Больше компьютер сам ничего делать не умеет, только хранить числа и оперировать ими. Это бездумный болван, который лишь выполняет команды программиста. В общем, код любой программы представляет собой набор команд, а компьютер их тупо исполняет. То есть, он не понимает сути самих команд? Но как он воспринимает текст, который я ввожу на экране? Когда ты крутишь педали на велосипеде понимает ли он, что ему сейчас нужно поехать вперёд? Нет, но ведь едет. Поскольку его цепь преобразует вращение педалей во вращение колёса. Именно! Также и компьютер преобразует введённый тобой текст в набор чисел. Каким образом? У каждого символа текста есть свой числовой код, который знает компьютер. Это называется кодировкой. Например, английская «a» кодируется числом 97, а знак равенства числом 61. Поэтому машина и может понимать текст, который мы ей сообщаем? Нет, она «понимает» не смысл. А лишь то, каким образом этот текст хранить, и как к нему обращаться. Выходит, сначала мы вводим текст, затем компьютер разбивает его на символы, а каждый символ уже представляет в виде числа? Верно. Сложные структуры представляются в виде более простых, которые и «понимает» машина. Скажите мне, из чего состоит жилой дом? Ну Из этажей. А из чего состоят этажи? И так далее. Этажи из стен. А стены из кирпичей. А кирпичи Вот числа для компьютера это то же, что и кирпичи для дома. Символы это стены. Отдельные предложения этажи. А книги целые дома! Но у программистов есть преимущество перед строителями. В зарплате? Не только. Строитель не может строить целыми этажами, он вынужден всегда класть кирпичи. Даже если некий сверхмощный подъёмный кран позволит ему строить готовые этажи, он не сможет строить им целые дома или жилые кварталы. А программист сможет! Раз он уже «обучил» машину понимать конечный текст то, по сути, он «обучил» подъёмный кран строить готовый дом за одно действие. То есть, программист может использовать всё более и более сложные структуры данных? Да. Поэтому первая из составляющих его работы представить понятные человеку данные (текст, изображение, звук) в виде объединения более простых данных, уже понятных компьютеру. Разработчик практически «с нуля» составляет структуру, которая должна полностью описывать понятную человеку вещь причём таким образом, чтобы эта структура была легко расширяемой и изменяемой (ведь в программу часто приходится вносить какие-то новые возможности). Хех! Выходит, что он строит резиновые дома из съёмных панелей! Примерно так. Однако, ещё ему придётся не только описать, что же ему нужно построить но и как всё это построить. То есть, придумать алгоритм. Это вторая из составляющих его работы. Программист придумывает алгоритм на каждое действие? Именно. Поэтому алгоритмов получается очень много. Но его работу облегчает то, что одни действия могут содержать в себе другие, уже описанные им ранее. И здесь ему на помощь приходит язык программирования? Не совсем...Миф 3: язык программирования нужен для составления алгоритмовНет, язык это всего лишь инструмент. Как гитара для музыканта. Само по себе умение играть на гитаре вовсе не гарантирует славы потому что люди, как правило, восхищаются самой музыкой, а не умением быстро и чётко дёргать струны. С другой стороны, вряд ли кто придёт посмотреть на плохого гитариста, какую бы замечательную композицию он не исполнял. Также и с ЯП: знание его синтаксиса и связанных с ним нюансов очень важно, равно как и умение писать красивый и ясный код. Однако, если человек не умеет составлять алгоритмы и структуры данных то он не может называться хорошим программистом.Компьютер не понимает язык программирования напрямую. Как и ранее, он представляет каждую команду языка в виде набора «простейших» команд (сохранить число, обнулить число, прибавить к нему единицу), которые он способен исполнить. «Понимает» язык программист, а машина его лишь исполняет. По сути, любой язык программирования это набор команд, служащих для общения с нею. Правда, многие из нынешних языков программирования уже содержат «в себе» набор заранее составленных алгоритмов, которые разработчик может использовать в качестве готовых. Поэтому язык всё же немного облегчает процесс составления алгоритмов. То есть, если один программист составил какой-то алгоритм, то его тут же могут использовать другие? Да, и это происходит
Чем же занимаются программисты, и как объяснить это остальным?
Ледоколъ истины Сократ мне друг, но истина дороже (Платон)
Контент / Разное / Чем же занимаются программисты, и как объяснить это остальным? - Ледоколъ истины
Комментариев нет:
Отправить комментарий