2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу 1, 2  След.
 
 Как научиться программировать?
Сообщение05.09.2010, 11:49 
Аватара пользователя


05/09/10
69
Мне хотелось бы научиться программированию. Я хотел бы знать какая математическая подготовна мне необходима? Что в первую очередь? Какой язык выбрать? Где найти содержательную литературу? Есть огромное желание, нужен совет специалиста.

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 11:52 
Заслуженный участник
Аватара пользователя


03/06/09
1497
Абельсон, Сассман. Структура и интерпретация компьютерных программ. :arrow:
Керниган, Ритчи. Язык С. :arrow:

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 13:15 
Админ форума
Аватара пользователя


19/03/10
8952
 i 
meduza в сообщении #349806 писал(а):
http://newstar.rinet.ru/~goga/sicp/sicp.pdf

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

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 13:46 
Заслуженный участник


09/08/09
3438
С.Петербург
"Программирование" -- это весьма широкая область, поэтому универсальный ответ на подобный вопрос дать довольно трудно. Поищите в гугле программы обучения по теме "компьютерные технологии" ("computer curricula"), или просто посмотрите, что на сайте ACM доступно для скачивания: http://www.acm.org/education/curricula-recommendations

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 17:18 
Аватара пользователя


05/09/10
69
Конкретно, меня интересует создание видеоигр. Пока я в самом начале пути и мне нужно знать, как выработать правильное мышление. Как изучать такой предмет, как программирование? Самостоятельно освоиться очень трудно и черевато расходованием времени на вещи которые никогда не пригодятся.

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 17:39 
Аватара пользователя


05/01/10
513
Владивосток
Есть Интернет-университет Интуит (есть там курсы и по вашему вопросу). Легко найти через гугль.

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 17:41 
Заслуженный участник


09/08/09
3438
С.Петербург
Ska в сообщении #349880 писал(а):
Конкретно, меня интересует создание видеоигр. Пока я в самом начале пути и мне нужно знать, как выработать правильное мышление. Как изучать такой предмет, как программирование? Самостоятельно освоиться очень трудно и черевато расходованием времени на вещи которые никогда не пригодятся.
Какого типа ответ Вы ожидаете получить?
Программирование надо изучать так же, как любую другую инженерную дисциплину: теория + практика.
Или Вы хотите, чтобы кто-нибудь составил для Вас учебную программу, в которой заведомо не будет ничего такого, что Вам не пригодится в дальнейшей деятельности?

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

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение05.09.2010, 22:02 


23/11/09
58
Существует ведь два подхода... 1. Изучать теоретическую основу и штудировать учебники, а затем с относительной лёгкостью начинать писать. 2. С большими трудностями по инструкциям писать и особо не вникая - главное чтобы работало. А затем обогащать свои знания теорией уже осознав всё на практике.

Что легче и проще - решать вам. Однако статистика показывает - что второй путь более ухабист, но быстр.

Могу посоветовать связку Delphi + DephiX. Первое-среда разработки на Pascal, второе - библиотека для создания игр (и много другого).

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение06.09.2010, 15:23 
Аватара пользователя


05/09/10
69
Гм... как быдет правильней? Вначале необходимо выучить Pascal, а затем переходить на ООП Delphi?

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение06.09.2010, 22:21 
Заблокирован


16/03/06

932
Ska в сообщении #349880 писал(а):
Конкретно, меня интересует создание видеоигр. Пока я в самом начале пути и мне нужно знать, как выработать правильное мышление. Как изучать такой предмет, как программирование? Самостоятельно освоиться очень трудно и черевато расходованием времени на вещи которые никогда не пригодятся.

Есть предложение - научиться автоматизации. Ведь основная задача компьютерных программ - автоматизация рутинных процессов. Отсюда вытекают идеи - что программировать. Большинство программ создано для автоматизации информационных процессов, то есть для автоматического сбора заданной информации, логической и арифметической обработки ее, передачи результата потребителям.
Например, редактор электронных таблиц MsExcel позволяет автоматизировать многие информационные процессы.
Из каких основных частей программа состоит:
*интерфейс (таблица, кнопки ввода и таблица, картинка вывода информации). Для этого можно просто использовать ячейки электронной таблицы или инструмент "формы" (кнопки, счетчики, списки, табло, карты, схемы, ...).
*исполнительная часть (обработка поступившей информации). Для этого можно использовать 10 групп функций (Общие, текстовые, математические, статистические, логические,....). То есть не нужно помнить формулы этих функций или мучиться с кодами для программирования процедур или функций, а усвоить только их назначение.
=======
Компьютеры есть сейчас во многих учереждениях (офисах), часто - для формы, а не для дела. Например, бухгалтер или завхоз по приказу заведующего конторой ведет много записей (списки работников, клиентов, расход материальных или денежных средств, учет рабочего времени, мероприятий, и пр. пр. пр.). И вот они ведут такой учет вручную, печатая все документы в редакторе MsWord, считая суммы или дробные данные на калькуляторе (документы для отчетности). По сути - компьютер используется как печатная машинка и хранилище документов.
А ведь можно в редакторе электронных таблиц MsExcel составить десятки документов в одной книге, причем в документах можно вносить изменения так, что нужные изменения произойдут на всех листах документа, если только в титульном листе внести изменения. По простым алгоритмам будет пересчитано математическое и логическое содержимое всего документа. Документ будет как на ладони - только щелкай по заголовкам страниц. Можно предусмотреть много автоматических проверок, тогда ошибки операторов будут предотвращены.
===
Почему руководители проектов ценятся выше (более, чем в 2 раза) простых программистов? Потому, что первые создают общий замысел программы (что автоматизировать и как наладить взаимодействие), а детали реализуют вторые, что значительно проще.
=========
Видеоигры программируют не одиночки, а целый коллектив, так как нужно много оригинальных деталей "рисовать", реализовывать довольно сложный и неповторимый сюжет, как в мультфильме.
Для себя (с целью упражнений) можно простую логическую "игрушку" запрограммировать, но искушенному потребителю - "шедевр" подавай! Год работы для бригады (если есть увлекательные идеи от руководителя проекта (режиссера)).

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение06.09.2010, 23:57 


23/11/09
58
Ska в сообщении #350086 писал(а):
Гм... как быдет правильней? Вначале необходимо выучить Pascal, а затем переходить на ООП Delphi?


ну Вы так опять будите идти первым путём... вторым путём будет примерно так:
1. установить программу
2. открыть что-нибудь из примеров и нажать кнопку "скомпилировать"
3. если всё работает - что-нибудь изменить и посмотреть, что всё работает. (таким образом вы поймёте как работает программа и вообще вся суть разработки в ней)
4. попробуйте найти в интернете урок какой-нибудь.. типа "как сделать текстовый редактор"
5. скачайте пример из урока... прочитайте - попробуйте изменить.
6. как разберётесь.. почитайте теорию.... если заинтересует... по тому, что вы делали! =)
7. качайте новые уроки...

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение07.09.2010, 06:18 
Аватара пользователя


05/09/10
69
Мне подходит первый вариант, но высе же за изучение чего браться вначале, чтобы мои знания были содержательными, а не фигаро здесь фигаро там?

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение09.09.2010, 14:40 
Аватара пользователя


20/12/08
236
изниоткуда
SICP тут уже советовали. Крайне полезная вещь, безотносительно дальнейшего направления развития.

(Оффтоп)

И никаких Интуитов, честное слово

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение09.09.2010, 15:19 
Заслуженный участник
Аватара пользователя


03/06/09
1497
--

 Профиль  
                  
 
 Re: Как научиться программировать?
Сообщение11.09.2010, 02:36 


11/09/10
2
Для начала определись тебя только игры интересуют или само программирование тоже?
Сразу тебя обломаю, без хороших навыков в программировании писать игры сложнее тетриса не светит, поэтому если не собираешся плотно за это дело засесть то лучше не трать время.

Даже зазубрив учебник без практики толку будет мало.. тут практика это все. Самый простой путь в твоем случае я вижу - это сначало выучить (читай понять и очень четко) основные понятия используемые в программировании. Паскаль причем ты правильно выбрал, он конечно старье и никому ненужен, но у него есть некоторые преимущества: 1) он довольно прост в плане того что тебе придется учить для того чтоб писать на нем программы и очень подходит для новичков. 2) Зная паскаль ты сможешь начать учить делфи. Вобще ты сразу можешь начать учить делфи и писать "на паскале" например засунув на формочку(окошко) текстовое окно и выводя туда результаты вычислений твоей программы. синтаксис паскаля делфи с радостью жрет так как он и есть паскаль но с наворотами. Единственное что могут не работать некоторые библиотечные фукции паскаля в делфи (но обычно есть вагон альтернатив). Просто делфи тебя напугает обилием объектно-ориентированных конструкций, которые ты врядли нормально освоишь не зная азов структурного программирования(тобишь паскаля). Вобщем я бы сделал так - нашел бы толковую книжку по паскалю (лучше чтобы она была толстой и была одновременно справочником) и в какомнить turbo pascal-е бы начал учить сам паскаль.. самые азы.. как только в общих чертах разберешся что к чему - можешь переходить на делфи и работать там, тут тебе понадобится книжка по паскалю и какая нить книжка или статьи по делфи.. в литературе по делфи вобще мало внимания уделяется самому языку там больше рассматривают формирование виндосных окошек и элементов управления которые будут на них сидеть (ГУИ) и использованию готовых библиотечных функций. Тоесть в любом учебнике по делфи тебе расскажут о том как создать программу с кучей окошек которая будет заниматся какойнить ерундой(а это тебе интересно не должно быть если хочешь заниматся играми). Так вот тебе нужно будет этой ерунды немножко хлебнуть и поклепать окошки но увлекатся не советую так как тебе сначало нужно нормально выучить язык паскаль. Собственно сам делфи тут тебе нужен будет только для того чтобы отвлекатся от зубрежки синтаксиса расслабицо так сказать.. заодно и базовые навыки появятся по окошко-шлепанию. Так вот, как только почувствуешь что с паскалем ты разобрался, тоесть знаешь синтаксис и можешь даже чтото написать не заглядывая в справочник и не смотря как пишется оператор if, когда сможешь сделать двойной цикл и пройтись по элементам двумерного массива (пикселям картинки например) и это для тебя не будет проблемой, когда сможешь найти в этом массиве самый яркий пиксель(задачи по нахождению минимума максимума по цвету пикселя) и тому подобные вещи, а это достигается практикой - буквально изучил чтото новое - написал программу, так вот если ты все это изучил то можешь начинать учить ООП в паскале.

Собственно тут ты можешь немного притормозить и сделать чтото типа курсовой для себя самого. Тоесть отработать на практике то что ты выучил. Я бы предложил сделать какую нибудь простенькую игру (я сам так делал на паскале - это мне очень помогло), либо логическую типо компьютер задает вопросы а ты должен вводить ответы и в зависимости от того чего ответили выставлять оценку (а потом этим тестиком с веселыми вопросами проходишся по знакомым), либо, что гораздо интереснее и полезнее, сделать игру с графикой.. тут выбирать особо не приходится ты можешь рисовать линии (готовыми функциями, прост оуказываешь координаты точек начала и конца), кружки, квадратики, отдельные точки и на основе этих, жутко мощных графических инструментов формироват графику в игре. я делал так - рисовал кружок .. ему линиями рисовал рот и кружками глаза он у меня бегал и исследовал огромный (3 экрана) мир с кучей монстров (1 тупой моб который бегает и убивает все к чему прикасаецо).. тоесть программа там примерно такая по пунктам (все это в цикле) - очищение экрана, вырисовка кадра, вычисления(игровая логика), проверка была ли нажата какая-то клавиша - если нажата то реакция на нажатие. Рисовать графику можно в turbo pascal используя модуль graph (uses graph; вроде), либо в делфи повесить на формочку элемент Image и рисовать в нем через функции gdi. В обоих случаях экран это 2мерный массив цветов (пиксели) и все функции для рисования линий и томуподобные работают с этим массивом.

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

Следующий шаг - ООП (я так понял ты такое слово уже слышал). Ни одна серьезная игра на паскале (или си без плюсов к примеру) не пишется в наше время и везде используют ооп в какойто степени.
Язык паскаля с ооп называется object pascal, правда в делфи он называется делфи но это по сути просто смена названия. Причем учить именно язык а не как компонентики на форму шлепать(не ну это тоже конечно). Тоесть тебе нужно будет знать что такое классы, а это наверное в программировании самая объемная тема. Кроме самого языка еще надо прикупить книжек про ооп как таковое, лучше конечно на примере паскаля. Причем важно чтобы ты это не зазубрил а именно понял (а это только практика).

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

Воот. Как только все предыдущие вещи ты стал на тройку с плюсом знать можешь доставать в интернете DelphiX (Когда я пытался его ковырять я не знал ничего про ооп и поэтому так нифига не понял толком.. игру про клоунов правдо сделал :) ). Собственно это игровой движок (или графический я хз даже). Он использует для отрисовки графики толи DirectX толи OpenGl (и то и другое это некоторая штуковина, через функции которой рисуются в современных играх вся графика), но с этими штуками тебе дела иметь не придется (если будешь работать с графикой серьезно - то придется почти наверняка). Насчет 3д незнаю, а вот 2д графика в DelphiX точно юзается, и советую тебе забыть временно о 3д и настроится на 2д. Найди в инете уроки или статьи по DelphiX и повторяй что делают там а потом на основе изученного пытайся сделать что-то сам. Я лично делал игру про клоунов (бегает чувак с пулеметом и стреляет в клоунов которые вылезают из автобуса который ездит туда-сюда, если клоун прикоснулся к игроку то гейм овер. + есть машинка можно в нее сест ьи давить клоунов если их становится очень много. А цель этой шедевральной игры расстрелять автобус из тогоже самого пулемета чтобы он взорвался и клоуны больше не плодились) после того как прочел статью о создании космического симулятора на DelphiX (ну это стандартный летательный корабль может двигатся вправо влево и висит внизу экрана и надо стрелять во всякие летящие космические объекты которые летят тебе навстречу). Почему не стоит делать 3д сразу? Ответ прост потому что опыта у тебя мало а чтобы сделать простейшую игру в 3д придется почитать теории и побится головой об стену изза того что нихрена невыходит и ниче непонятно. Время которое ты потратишь на 2д игры поможет тебе во первых опыт получить в прогерстве дополнительный, во вторых игровая логика в 2д и в 3д почти одна и та же. А когда у тебя опыта прибавится сделаешь пару тройку 2д игрушек то начинай 3д.

Ну дальше я тебе не советчик, ибо сам нубас тот еще.

Еще есть такая вещь что игры делают в основном на C++. Но учить его я тебе сразу не рекомендую так как он сложнее для обучения.

Еще можно посмотреть в сторону .NET а именно C# + XNA. Возможно в будующем под винду будут на нем игры делать (так как всем этим делом руководит мелкософт). Синтаксис там C-подобный и много всяких новомодных штук, но при этом взрывов мозга при изучении будет меньше чем на c++. Да и формочки там клепать можно с такой же скоростью как и на Delphi или даже быстрее.

А вобще зная 1ин язык второй учится значительно быстрее так как принципы +- одни и те же.
Исключения наверно составляет ассемблер (Он тебе кстати не понадобится, хотя знание его может открыть глаза на некоторые вещи) и функциональные языки ибо там принципы уже другие.

Да еще есть вариант сразу открыть делфи + ДелфиХ или сиШарп + ХНЯ и пробовать кем-то написанные игры или сэмплы изменять.. да поначалу обрадушеся заменив 3д модельку из игры на свою и изменив количество патронов у глав героя. Но на этом твои возможности без знаний закончатся. Ты конечно можешь читат ьучебники и пробоват ьпонять что написано в коде этих игрушек но ИМХО это займет времени намного больше чем если поступать как я писал выше.

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

Ладно пойду я спать.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group