2014 dxdy logo

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

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




Начать новую тему Ответить на тему На страницу 1, 2, 3, 4, 5, 6  След.
 
 программирование
Сообщение16.05.2008, 12:26 


12/05/08
10
РФ г. Норильск
какие именно разделы высшей математики изучают при обучении программиста?

 Профиль  
                  
 
 программирование
Сообщение17.05.2008, 15:28 


12/05/08
10
РФ г. Норильск
здравствуйте. я студент технического вуза (специальность "электроснабжение") но в будушем хочу стать программистом. на какие предметы нужно большее внимание уделять? и какие у вас еще будут советы? (хотя бы примерный план действия) блогадарю всем кто ответить.

 Профиль  
                  
 
 
Сообщение17.05.2008, 15:51 


14/09/07
51
СПб
Все :D . Основы анализа, линейная алгебра, операторное исчисление, теория вероятностей, численные методы и так далее. Посмотрите лучше учебный план интересующей специальности.

 Профиль  
                  
 
 
Сообщение17.05.2008, 17:27 


08/01/08
21
Главный совет: начните становиться программистом прямо сейчас. Купите себе книгу и приступайте к самостоятельному изучению. Какую именно книгу, какой язык изучать -- тут можно уже поспорить. Было бы хорошо, если бы вы нашли себе "наставника-гуру" -- человека с опытом, к которому можете обратиться, и который толково ответит на ваши вопросы. Возможно, он вам и посоветует первую книгу.

Если будете выбирать книгу и язык сами, руководствуйтесь следующим. Если хотите сразу больше изучить как работает машина на как можно более низком уровне, то изучайте Си. Да, это будет сложновато как для новичка, но в общем не проблема. Хочу заметить, не беритесь за Си++, там новичку делать нечего. И в программировании графических (с окнами) программ под Windows тоже пока что делать нечего. Ваши инструменты это простой текстовый редактор и компилятор, и всё.

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

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

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

 Профиль  
                  
 
 
Сообщение17.05.2008, 19:36 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
 !  PAV:
Темы объединены

 Профиль  
                  
 
 
Сообщение22.05.2008, 18:29 
Супермодератор
Аватара пользователя


29/07/05
8248
Москва
Дело в том, что сейчас уже профессия "программист" распадается на большое количество более-менее узких специальностей, так что сказать, что "я в будущем хочу стать программистом" - это значит почти ничего не сказать. Можно быть очень хорошим специалистом в одной области программирования и очень мало знать о другой области.

Для профессии программиста в первую очередь важно владение технологиями и концепциями, а математика - это вторично. В большинстве случаев. Технологии же эти очень разные. Язык Си - это, конечно, очень хорошо, но некоторые виды программ чаще разрабатывают на других языках. Иногда это зависит от традиций, принятых в конкретной компании. Разработка содержательной части приложения, которая должна быстро и хорошо выполнять какие-то сложные действия и расчеты - это одно. Разработка оконного интерфейса и взаимодействия с пользователем - другое. Разработка начинки оконной программы, чтобы она быстро реагировала на внешние события, а какие-то действия умела делать параллельно в фоне - это третье. Программирование Web и различных интернет-приложений - четвертое. Разработка клиент-серверного взаимодействия нескольких программ по сети (или даже на одной машине) - пятое. Работа с базами данных - шестое. Распределенная работа на нескольких машинах - седьмое. Программирование различных устройств hardware - восьмое. Решение элементарных задач максимально эффективно, потому что они вызываются в глубоких циклах - девятое. Есть области, в которых программисты работают в рамках некоторой среды; например, вычисления в Matlab или какой-то зверь "программист 1С" (я не знаю, что это такое). Список наверняка можно продолжать еще далеко, но уже видно, насколько все сложно.

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

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

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

 Профиль  
                  
 
 
Сообщение28.05.2008, 16:15 
Заслуженный участник


14/12/06
881
PAV писал(а):
Мой обычный совет в таких случаях - это посидеть на сайтах с вакансиями, почитать и примерно понять, какие есть направления и какие к ним предъявляются требования со стороны работодателей. Примерно определить для себя, в какую сторону хочется двигаться (по крайней мере в начале). И постараться изучать в первую очередь то, что потребуется для этого, чтобы постараться как можно быстрее иметь возможность устроиться на работу и пробовать себя в деле. А расширять кругозор и доучиваться можно будет дальше бесконечно.

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

Мне бы хотелось к этому добавить, как мне кажется, самое главное.
Есть такие вещи, как знания и навыки, а есть такая вещь, как образование.
Так вот совокупность знаний и навыков не составляет образования.
Конечно, без знаний и навыков не может быть образования, но иметь знания и навыки не значит иметь образование (причём, сколько бы знаний и навыков не имелось бы).

Образование -- это, грубо говоря, как раз то, что позволяет решать принципиально новые задачи, для решения которых приобретённых знаний и навыков пока недостаточно.
Если бы в учебном заведении можно было обучить решению всех задач, которые могли бы встретиться на работе, то людей давно бы заменили роботами.
Удаётся научиться решать лишь очень небольшое количество типовых (простых) задач; те задачи, которые придётся решать на работе на порядки более сложные и совершенно незнакомые.
Даже знания, которые приобретают в учебных заведениях напрямую за редким исключением не потребуются на работе -- оно и понятно, даются лишь самые важные, базовые знания, которые "не нужны" при решении конкретных задач.
Способность в разумные сроки самостоятельно добыть нужные для решения конкретных задач знания и навыки, да применить их эффктивным образом и даёт такая вещь, как образование.

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

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

 Профиль  
                  
 
 
Сообщение30.05.2008, 11:12 


07/08/07
97
В общем-то уже ответили. Для разных областей нужны разные знания. Одно дело - научные приложения, другое - коммерческие, или интеграция, программирование для Инета и пр. Определись с областью, а там будет видно.
Для каждой области есть сейчас, практически, хорошая книга. Почитай вот, скажем, Кормена.

 Профиль  
                  
 
 
Сообщение11.06.2008, 15:04 
Заслуженный участник


14/12/06
881
Зангези писал(а):
Все . Основы анализа, линейная алгебра, операторное исчисление, теория вероятностей, численные методы и так далее. Посмотрите лучше учебный план интересующей специальности.

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

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

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

Повторюсь ка я, сказав, что есть такая вещь как знания и навыки, а есть такая вещь как то, что мы зовём образованием, правда, мало кто из нас сможет чётко сформулировать, что же он под этим понимает.
Это потому только, что нам ни в ВУЗах, ни в школе совсем не говорят, что же такое это образование-то из себя представляет конкретно.
Но это уже другая тема.

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

Большой вопрос в том, что же такое образование и, главное, как конкретно оно приобретается?
Если рассмотреть внимательно несколько людей близкого возраста, то окажется, что они по-разному решают сложные задачи, которые они должны решить на работе.
В смысле, одни из них решают, а другие ну никак не могут решить.
Самое загадочное, что люди, так по-разному решающие сложные задачи, могут иметь таки просто тождественный набор знаний и навыков, окончив, например, один и тот же ВУЗ (получить образование и окончить ВУЗ -- это совсем разные вещи, не правда ли?).
Наивно думать, что человек, смогший окончить ВУЗ, даже, если он там что-то недоучил, не сможет пойти в библиотеку и дочитать, доучить.
Более того, как только начальство сталкивается с неспособностью решать сложные задачи, оно первым делом посылает молодого специалиста в библиотеку дочитывать и доучивать, даже более того, обычно молодого специалиста с порога сразу посылают в библиотеку дочитывать и доучивать...
Факт тот, что не все оказываются в состоянии доучить и решить-таки стоящую задачу -- вот что удивительно.
У тех оказывается недостающим что-то помимо знаний и навыков.
И что приобресть самостоятельно не столько сложно, сколько долго (те же лет пять-десять и потратишь в самом лучшем случае).

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

Продолжение следует...

 Профиль  
                  
 
 Re: программирование
Сообщение11.06.2008, 16:39 


05/08/07

194
leg031 писал(а):
здравствуйте. я студент технического вуза (специальность "электроснабжение") но в будушем хочу стать программистом. на какие предметы нужно большее внимание уделять? и какие у вас еще будут советы? (хотя бы примерный план действия) блогадарю всем кто ответить.

Если хотите стать хорошим программистом, бросайте Ваш вуз и поступайте на соответствующий факультет матмеха хорошего универа.

 Профиль  
                  
 
 Re: программирование
Сообщение11.06.2008, 17:44 


07/12/05
240
Питер -> Ulm -> Koeln -> Ulm -> Bretten -> далее везде
abc_qmost писал(а):
leg031 писал(а):
здравствуйте. я студент технического вуза (специальность "электроснабжение") но в будушем хочу стать программистом. на какие предметы нужно большее внимание уделять? и какие у вас еще будут советы? (хотя бы примерный план действия) блогадарю всем кто ответить.

Если хотите стать хорошим программистом, бросайте Ваш вуз и поступайте на соответствующий факультет матмеха хорошего универа.

И что дальше? Понимать математику, лежащую в основе алгоритмов, там может быть(!) и научат, но ведь это только лишь часть необходимых навыков.
Более того, они не каждому программисту и нужны - вот мне, например, да.
А коллегам, которые делают Frond-End, наверное, не очень.

 Профиль  
                  
 
 Re: программирование
Сообщение11.06.2008, 18:10 


05/08/07

194
finanzmaster писал(а):
abc_qmost писал(а):
leg031 писал(а):
здравствуйте. я студент технического вуза (специальность "электроснабжение") но в будушем хочу стать программистом. на какие предметы нужно большее внимание уделять? и какие у вас еще будут советы? (хотя бы примерный план действия) блогадарю всем кто ответить.

Если хотите стать хорошим программистом, бросайте Ваш вуз и поступайте на соответствующий факультет матмеха хорошего универа.

И что дальше? Понимать математику, лежащую в основе алгоритмов, там может быть(!) и научат, но ведь это только лишь часть необходимых навыков.
Более того, они не каждому программисту и нужны - вот мне, например, да.
А коллегам, которые делают Frond-End, наверное, не очень.

Сверху вниз идти легко. Но не наоборот.

 Профиль  
                  
 
 Re: программирование
Сообщение11.06.2008, 18:28 


07/12/05
240
Питер -> Ulm -> Koeln -> Ulm -> Bretten -> далее везде
abc_qmost писал(а):
Сверху вниз идти легко. Но не наоборот.

Так-то оно так, только еще раз подчеркну, что
1) на матмехе может быть и научат
2) стоит посетить какой-нибудь сайт вакансий, например, joblist.ru и посмотреть что чаще (и насколько чаще) от программистов требуют - фундаментальные математические знания или владение более прикладными вещами.

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

 Профиль  
                  
 
 Re: программирование
Сообщение11.06.2008, 18:59 


05/08/07

194
finanzmaster писал(а):
abc_qmost писал(а):
Сверху вниз идти легко. Но не наоборот.

Так-то оно так, только еще раз подчеркну, что
1) на матмехе может быть и научат
2) стоит посетить какой-нибудь сайт вакансий, например, joblist.ru и посмотреть что чаще (и насколько чаще) от программистов требуют - фундаментальные математические знания или владение более прикладными вещами.

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

Уровень образования в нашей стране значительно упал. Думаю, что с высокой вероятностью leg031 выйдет из своего вуза недоучкой. Но еще сохранились островки, где дают хорошие знания - это несколько университетов в нашей стране. leg031, например, может выбрать прикладную информатику. Про немцев мне нечего сказать, но я работал в университете г. Буффало в США. Мне понравился ихний подход к обучению: учебный процесс поставлен так, что студент вынужден работать (в противном случае неминуемо следует отчисление).

 Профиль  
                  
 
 
Сообщение10.07.2008, 10:34 
Заслуженный участник
Аватара пользователя


12/10/05
478
Казань
Хотелось бы посоветовать будущему программеру:
1) Учите английский язык. Ей-богу, не знаю, как это сделать максимально быстро с максимальной отдачей (т.е. научиться переводить технические тексты). Первое время у меня на перевод help-a уходила уйма времени. Можно сказать, что я знаю англ. только по технической документации на API и микросхемы, но имхо, учить язык таким путем неправильно, поскольку слишком долго.
2) Изучайте какой-нить язык программирования.
Я начинал с Паскаля, потом взялся за Си, потом Си++, сейчас - Java.

Имхо, лучше всего начинать с Java. Почему? Потому что:
а) все-ж прививает объектный подход к проектированию. Могу сказать о себе, что все прелести ООП понял только при изучении Java.
б) по Java куча всяческой литературы и информации, довольно неплохой.
в) язык простой в изучении (на мой взгляд, и не только на мой ). Слышал, в США начинающих обучают Java, а не уродливому BASIC-у.
г) Вы, как специалист по Java, наверняка будете востребованы.

Ну и еще, вдогонку :) Не сидите долго с книжкой, "изучая язык"! :) Пишите программы, имхо, лучше 1 раз попробовать, чем 10 раз прочитать!

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

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



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

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


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

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