Как понять суть программирования (подробнее в содержании)?
============================================================

 Привет всем.  
  

Как понять суть программирования в общих чертах? Чтобы иметь представление об этом.  
  

Попробую пояснить свой вопрос:  

Скажем, мы видим как рисуют художники (на бумаге или с помощью компьютера). Мы видим, что рисунок начинается со структуры, общей формы, каркаса объектов, потом добавляются мелкие детали, свет, тени, цвета.   

Или мы видим как гончар создает кувшин, или как создается автомобиль на заводе: от "пустого" кузова до законченного автомобиля.  

Для наглядности на Youtube много видео, где можно посмотреть этот процесс или телепередача "Как это устроено".  
  

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

Допустим человек хочет начать рисовать, но сомневается, подойдет ли ему это или нет. Он смотрит видео, где показан процесс создания рисунка, от начальных штрихов до конечной картины. Человек видит как создается рисунок, как в нем постепенно добавляются дополнительные детали, тени, цвет. Посмотрев этот процесс человек думает: "Ага, это то, что мне подходит. Это то чем я точно хочу заняться" Или наоборот: "Как же мне взбрело в голову подумать о том, чтобы заняться этим? Мне это совершенно не подходит."   

Человек не тратит сотни часов и дней на изучение композиции, как строится перспектива, как падает свет, как формируются тени, чтобы понять, подходит ли ему рисование или нет, хочет он заниматься этим или нет.  
  

Так вот: как понять суть программирования в общих чертах? Чтобы иметь представление об этом. Может есть какие-нибудь статьи, книги, видео иди другие материалы, которые могут дать мне общее представление о программировании? Или нужно обязательно тратить кучу времени на изучение материала, чтобы понять, подходит ли мне это или нет?  

Может есть какие-нибудь интерпретации, которые объясняют суть программирования в общих чертах?  

Также хотелось бы иметь представление об ООП.  
  

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

Надеюсь я понятно изложил свой вопрос. Спасибо за внимание. 

 Нет, вам программирование не подходит. 

> Человек не тратит сотни часов и дней на изучение композиции, как строится перспектива, как падает свет, как формируются тени, чтобы понять, подходит ли ему рисование или нет, хочет он заниматься этим или нет.

  

Если мыслить так, то возьмите любую программу, например Skype.  

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

Представьте как миллионы пользователей экономят кучу денег и времени с помощью этой программы.   

Подумайте о доходах фирмы.  

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

Понравилась роль программиста ?  
  

С моей точки зрения это всё работает не так. Любому может понравиться картина художника и он захочет стать художником.  

Но уже через 100 часов обучения он бросил это дело, т.к. сам процесс ему не понравился.  

Поэтому лучше понять это в процессе.  
  

Программирование сейчас охватывает очень много сфер, люди придумывают магазины, сервисы, роботов, гаджеты и всем нужны программисты.  

Программист - это тот, кто может сделать идею в работающую программу и решить свою или чужу проблему.  

Чем опытнее программист, тем более сложны задачи он сможет решать.  
  

Если вам нравиться эта идея, то можете выбирать этот путь.  

Если сомневаетесь,я думаю, поможет только практика.  
  

А что на счёт разных языков или технологий... В любой сфере нужно будет иметь немалые начальные знания и постоянно учиться.   

Просто нужно взять что-то одно и выучить. 

 Напишите крестики-нолики, потом змейку, потом тетрис, не понравилось? - идем лепить кувшины. 

 Сходите на какой нибудь хакатон и попробуйте присоединиться к какой нибудь команде, разумеется предупредив, что делать вы ничего не умеете, но и мешать не будете. Посмотрите как все это выглядит, потратите двое суток своего времени. 

 Многие уже расписали здесь, что надо обязательно пробовать, а также многое другое.   

Но если вам интересен сам процесс от А до Я в общих чертах, то вот он:  

1.Сначала вы выбираете сферу, в которой будете программировать или у вас уже есть готовая идея или задача.   

2.Далее вы выбираете язык программирования, с помощью которого вы будете набирать код(в интернете информации полно по выбору языка)  

3.После скачиваете специальную программу, в которой будете писать код.  

4.После того как код написан, вы проверяете его на ошибки, оптимизируете и т.д.  

5.После идет компоновка в готовую программу для продажи(или других целей)  
  

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

Не буду расписывать плюсы и т.п. Можно почитать в интернете об этом:) Удачи вам, чтобы вы не выбрали)) 

 Лучше сделать, чем не сделать и жалеть потом, думая, эх, вот если бы я тогда начал изучать, я бы сейчас... 

 Смотреть и пробовать - разные вещи. Настолько разные, что часто смотреть как кто-то что-то делает скучно, а вот самому делать интересно. И наоборот.  

Не думаю что можно понять что-то об интересующем занятии не попробовав его.  
  

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

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

 Посмотреть на то как создается рисунок действительно проще, но прежде чем удастся нарисовать что-то хорошо, придется потратить кучу времени и сил.  

Для того чтобы получить минимальное представление о программировании не обязательно тратить годы. Пройдите онлайн курс по языку, например питон неплох для быстрого старта:  

[python-rutour.rhcloud.com](http://python-rutour.rhcloud.com/)  

или  

[www.codecademy.com](http://www.codecademy.com/) (если хоть немного знакомы с английским)  

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

Не ожидайте что все будет просто. 

 Откройте среду Scratch и погоняйте кота в разные стороны экрана. Так вы быстро поймете, что такое программирование и нужно ли оно вам. 

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

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

 Вы написали этот вопрос вы не жалете что потратили время на его написание? Тем же чем вы занимались когда писали этот вопрос занимается программист. Если интересно видео - посмотрите видео как кто-то печатает например в ворде. Просто сидит и печатает текст на компьютере иногда делая пометки на бумаге - это будни программиста. Как составляется программа? Создается пустой файл и набирается в нем текст. Потом следующий и т.д. Когда насобирается достаточно файлов - программа готова...  
  

Это я к тому что тратить время, а потом что-то случиться. Потом ничего не случиться и потом будет опять время которое вы опять будет тратить. Думать что вот зачем я тут тратил время, а там... Если так думать то почему мы все не проводим время за постоянным дайвингом, серфингом, не сидим постоянно на набережных и не делаем много чего еще что нам более приятно чем что либо другое.   

Ответ прост: мы сегодня и сейчас тут и занимаемся тем, чем занимаемся и мы не занимались другим потому что занимались этим и мы не могли заниматься чем-то другим потому что мы занимались этим самым - тем чем занимались. Это важно понять и принять. Чем раньше - тем лучше.  
  

Еще хочу сказать про художников: скажите как художник определяет пропорции при смешивании красок? Чем он руководствуется когда смешивает краски? Как художник смешивает краски? ... Вы думаете что Рафаель все время был в кайфе когда рисовал картины? С чего вы взяли что рисование это было занятие Леонардо де Винчи? Это по поводу того что мое / не мое. Мы не знаем что чье, мы либо делаем либо нет. Да лучше делать то, что нравиться. Однако делая то, что нравиться не всегда это подходит, не всегда приятно и не всегда удовольствие....  
  

Все гораздо сложнее 

 Я работаю программистом 4й год. Первую программу написал 8 лет назад. И сейчас я уверенно могу сказать, что не имею достаточно экспертизы, чтобы ответить на подобный вопрос. Однако могу проследить как менялось мое собственное понимание этого со временем.   
  

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

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

Сейчас я убежден, что программирование это не просто перевод.   
  

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

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

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

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

Это похоже на получение [теоретического научного знания](https://gtmarket.ru/concepts/6874#t3.1), не находите? 

 Как понять подходит или нет? Вам код писать нравится? А так зайдите на youtube введите Java уроки и посмотрите как пишут. Классы и вообще все ООП принято описывать в UML диограммах, поищите в гугле) 

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

 У вас некорректная аналогия. На примере автомобиля. Программирование - разработка, проект автомобиля, создание проектной документации, инструкций для производства. То что описали вы, это процесс работы программы "в железе". 

 Все очень просто, тебе или нравится или не нравится. Все! Это единственный важное качество (если вы конечно честны сами с собой).  

Хочется лепить горшки - лепите. Хочется создавать приложения - становитесь программистом. Нравится рисовать - становитесь художником.   

Зачем все усложнять. Зачем вам нужно понимать суть? Суть в том что это либо творческий, либо служебный процесс. Программирование творческий, а например быть менеджером - служебный.  

Я бы выделил только два но:  

Первое. У вас всего две ячейки для навыков. Основное занятие и хобби.  

Второе. Решите чем для вас будет навык. Способом заработка, или отдушиной/развлечением/средством уединения/и т. д.   

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

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

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

[www.ozon.ru/context/detail/id/5322055](http://www.ozon.ru/context/detail/id/5322055/) 

 Не понимаю в чем проблема. Если вы начали аналогию программирования с написанием картин, то продолжайте. Хотите увидеть результат? Прога или картина. Хотите процесс? По программированию есть стримы. Если вы решили в ООП удариться, то смотрите в сторону C++/Qt ибо C++ сам по себе логичен, лаконичен, а Qt - полностью объектно ориентированный. А на счет времени, думаю, в любом случае придется долго привыкать. 

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

 Человек в конце концов может иметь хобби, миллионы людей в свободное время занимаются вещами абсолютно противоположными их основной профессии или роду деятельности.   

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