| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > математика в С# и время для изучения |
| Автор: Grauman 13.11.2008, 16:21 |
| Здравствуйте у меня сразу несколько вопросов: 1.насколько сильно нужна математика в программировании? 2.Сколько примерно нужно времени для того что бы выучить C# почти с нуля ( у меня времени и желания выше крыши) - ну конечно не до уровня гуру, а так чтобы уже можно было писать какие-нибудь программы и уже в процессе написания набираться опыта? 3.Я учу язык по "Шилдг Г.Полный справочник по С#" какую литературу читать после неё. И интересно на каком уровне эта книга - когда с ней разберусь на каком уровне буду как программист по десятибальной системе? Прошу отнестись к моим вопросам серьёзно! |
| Автор: kemiisto 13.11.2008, 16:53 | ||||
Здесь QryStaL прав - зависит от того, что будете разрабатывать. Но математический склад ума, пожалуй, обязателен. Математику не знать, а понимать надо.
Пол года - год. IMHO.
Я тоже с этой книги начинал. Насколько я знаю, на русский переведено только первое издание. Там .NET 1.1 описан и C# 1.0. Книга неплохая, но устаревшая. Обычно советуют Троелсена... Не знаю, мне его книга не понравилась... Есть неплохая книжка Illustrated C#, но её пока не перевели (а может и не будут). |
| Автор: Bogdan1024 13.11.2008, 16:56 | ||||||
Если психануть и не выходить из квартиры неделю, то можно за неделю
Почитай любую толстую книгу по фрэймворку, в которой охватывается как можно больше фрэймворка.
Бгага, ты шо, пикапер? Программеры бывают только двух видов: 0 - не программеры, 1 - программеры |
| Автор: likegift 13.11.2008, 17:05 |
| математика- царица наук. ее желательно знать вне зависимости от рассовой принадлежности, вероисповедания и языкового пристрастия. |
| Автор: Mag 13.11.2008, 17:23 |
| 1. математика в программирование играет важную роль, каждый программист думаю поддержит, что математика нужна для многих задач программирования. Недавно была поставленна задача по банковской сфере, в основу решения поставлено было мат. алгоритмы. Уделите внимание, это поможет вам применять знания в С# 2. Все зависит сколько времени уделять в день, какая до этого у вас была база знаний других языков. Если не брать измором, и учить каждый день, - 2-3 мес. 3. Книга не скажу, что плохая, НО начинающему не рекомендую. Когда сам начал учить по книге этого автора, медленно ишел прогресс в понимании. Сейчас точно скажу, для себя раньше нужно было читать - Троелсен(поддерживаю QryStaL) По ходи по форуму, много очень есть материала, как учить программирование, в сумме сложи для себя и поймешь одними книгами толку не будет, прежде всего включай голову в работу, а МСДН и практика тебе в помощь. |
| Автор: diadiavova 13.11.2008, 20:25 | ||
О математике в программировании уже столько говорено-переговорено... То чем занимается программист, в общем то тоже математика, поэтому вопрос обсуждать "нужна ли программисту математика" всё равно, что спорить по поводу "должна ли балерина уметь танцевать". Другое дело, что люди, задающие этот вопрос, как правило имеют в виду общую математическую подготовку(то что изучают в школе, институте и т. д.). Здесь я согласен с QryStaL, что зависит от предметной области, но с одной оговоркой: областей, где математика может понадобиться программисту таааааааааак много... Причём зачастую математические знания нужны даже не столько для решения конкретных задач, сколько для того(например) чтобы свободно понимать литерату, написанную для программистов. Всё это конечно не значит, что прямо математиком надо быть, но иметь знания, необходимые хотябы для того, чтобы иметь возможность воспользоваться справочником... просто необходимо.
Чтобы писать какие-нибудь(!) программы - достаточно несколько дней. Достичь приличного уровня можно за несколько лет(от способностей зависит и количества потраченного на это времени), а гуру можно не стать никогда(я, например, и без этого прекрасно обхожусь). |
| Автор: VisualProgrammerNET 13.11.2008, 21:13 |
| Здесь ответить можно просто - всё приходит с опытом. Все мы начинали с Hello World и до сих пор шлифуем познания мира .NET. Главное - начать, а там уже само понесётся вниз по течению =) Насчёт математики... в принципе, для большинства задач хватит и уровня 9 класса. Однако, есть одно но! Рано или поздно ты можешь столкнуться с таким, что над решением задачи просидишь не один день и решишь её, используя свои базовые знания в математике, а потом вдруг обнаружится, что все твои расчёты уже давным-давно произвёл один средневековый дядька и упаковал в компактную формулу, а ты и не знал... Так что, чем больше знаешь - тем лучше. Много знаний ещё никому не мешало |
| Автор: Skynin 14.11.2008, 10:41 | ||||||||
Настолько, насколько она есть в предметной области. Обычно - не нужна. Даже когда она нужна - есть постановщики задачи, которые разжуют - что же нужно написать. Когда же сам станешь постановщиком... к тому времени такие вопросы исчезнут
Не меньше пары месяцев. Результат будет зависеть от: 1. таланта 2. выбранного стиля обучения, учебников
Справочники предназначены не для обучения, а для нахождения в них конкретной информации когда знаешь "в общем и целом". Так что уже - не с того начали (см. выше мой пункт 2) Для старта хороши (есть в инете): в порядке нарастания сложности и углубленности: http://www.INTUIT.ru Введение в программирование на C# 2.0 - для полного "с нуля" Есть и в инете и в одном pdf файле Г. Шилдт - "С# Учебный курс" - для полного "с нуля" Х. Дейтел "C# в подлиннике. Наиболее полное руководство." - книга написана в преподавательском стиле, постепенно и без "запугивания", но и с добротным углублением. Э. Троелсен - "Язык программирования С# 2005 и платформа .NET". Т. Петцольд "Программирование для Microsoft Windows на C#" Э. Троелсен"C# и платформа .NET 3.0" Т. Нэш "С# 2008 Ускоренный курс для профессионалов" Остальное штудировать (типа Рихтера, или технологий ASP.NET, ..., ..., )- после пары-тройки месяцев
Разве что потерянное время на невостребованные потом знания не вернуть. |
| Автор: source777 15.11.2008, 23:32 | ||||
| Жизненно необходима. Математику уже затем учить следует, что она ум в порядок приводит. (с) Ломоносов.
|
| Автор: v_enom 16.11.2008, 22:50 |
| я бы не стал учить C# будучи полным нулем в программировании. Будет столько вопросов от куда что берется, что просто надоест и перестанет быть интересным. Чтобы проги писать не нужен обязательно C#. Мой тебе совет, как от студента, в свое время задющего такие вопросы: начинай учить С++. С него на C# очень просто базовые вещи переносятся. (почти одно и тоже) а вот книг хороших, разжованых и понятных больше по С++. Только не бери Строуструпа. Опять ни чего не поймешь. Я учил С++ по Дж. Либрети "язык С++ за 21 день" Очень толковая книга с доступно изложенным материалом. Там есть все по С++ что нужно. с учетом того, что за ником скрывается человек который хочет начать изучать программирование и возможно боиться, что математика у него на недостаточном уровне скажу смело - математика (в привычном для тебя виде) не нужна. (но как было подмечено: нужно уметь разобраться ...т.е. склад ума нужен). Сложности могут быть в алгоритмизации. Не сразу все понятно. Поэтому и нужна хорошая книжка по С++, а не по C#. все что я видел по C# не достаточно разжовано и является лишь пособием по переходу с других языков на C# P.S. сама жесткая математика в программировании которую я видел это пожалуй в графике. |
| Автор: kemiisto 16.11.2008, 22:55 | ||
О нет! Только не C++!
И какая же разница между С++ и С# привела Вас к такому умозаключению? |
| Автор: gta4kv 17.11.2008, 01:19 |
| Разжованых книг скорее по .NET'у все таки больше. Ибо он проще =) Разжовывать особенно нечего то |
| Автор: QryStaL 17.11.2008, 09:54 |
Повеселили с утра |
| Автор: v_enom 17.11.2008, 11:16 | ||||
Ой , ну да... насмешил. Сразу видно, что ты не осилил С++ (наверное указатели? Изучая паскаль годами можно не врубиться в процесс решения задач. А его стиль написания кода вообще убивает наповал. А зачем учить Си вместо С++ ?? чтобы не освоить ООП в полном объеме?...гениально. Конечно лучше учиться на запорожце, чем чем на порше....но на парше учиться комфортнее - хотябы потому коленки помещаются. А С++ и C# в базавых вещах не отличаются, так что твой якобы сорказм тут вызывает смех у меня. учи С++ и будет тебе счастье.
все что я видел даже в сравнение не идет с книгами по С++ потому что сам язык C# "потомок" С++ и многие авторы подразумевают, что читатель уже знаком С++ или java. Имхо я вообще не понимаю,как можно программирование понять глубоко не имея предсталения и пркатических навыков работы с адресами и указателями.от незнания этого вылазиют потом ошибки непонятные и вопросы без ответов. |
| Автор: kemiisto 17.11.2008, 11:36 | ||||||
Я и не пытался. Так я же говорю не о PASCAL 70-х годов, а о его современных наследниках. Не о Delphi. Но ты о них и не слышал... Ладно, мир тебе.
Странные вещи пишите, батенька. Очень странные. Если у Вас не получается уже несколько лет "врубиться" в процесс решения задач, то, поверьте, PASCAL тут не при чём.
А Вы вообще в курсе, что на ООП свет клином не сошёлся. Для начала бы можно ознакомится и с основами структурного программирования.
v_enom, а Вы как, вообще, в курсе, что в нормальных ОО языках указателей нет и быть не должно. Объект - это как раз тот уровень абстракции, на котором ручное управление памятью уже не нужно. Взгляните на Smalltalk, Ruby, C#. Арифметика указателей в С++ - наследство от C. А ошибки могут появится скорее от незнания основ алгоритмизации. |
| Автор: v_enom 17.11.2008, 11:48 | ||||
вы говорите, что у кого-что не получается пытаясь скрыть свое неумение. стыдно писать такое взрослому человеку...или нет? или еще пока невзрослому? а кто ввел "критерий нормального ООП языка" и доказал, что указатель - зло?
да, гуру о Великий. ознакомь меня P.S. kemiisto, когда ни чего толкового не приходит в голову, то начинаем всех учить и советовать? |
| Автор: jorikdima 17.11.2008, 12:57 |
Модератор: Сообщение скрыто. |
| Автор: kemiisto 17.11.2008, 13:12 | ||||||||
Не понял, что Вы хотели сказать.
А как Вы определяете "взрослость"?
Объект - суть есть указатель. Зачем же сущности то множить. Вот, прочтите про http://www.smalltalk.ru/articles/smalltalk.html. Я не гуру. Что Вы язвите? А? Есть много достойных книг. Читайте.
А откуда интересно Вы узнали, что мне ничего толкового в голову не приходит? О, да! Очень содержательное сообщение! |
| Автор: source777 17.11.2008, 22:30 | ||||
Хотя можно согласиться с тем, что C# не самый подходящий для старта язык, куда лучше для обучения программированию подойдут потомки Алгола, т.к. именно в них основное внимание концентрируется на самом алгоритме и они не страдают излишней краткостью, кто знает Perl, тот поймёт... Краткость записи хороша тогда, когда ты уже владеешь алгоритмикой, а для неподготовленного человека она превратит листинг в китайскую грамоту. Кстати почему ты считаешь, что все, кто выступают против указателей, не умеют с ними работать? Многие уже так с указателями наработались, что уже видеть их больше не хотят. Это заблуждение, C-style синтаксис ещё не повод для установления родственных связей между языками.
|
| Автор: diadiavova 17.11.2008, 23:41 | ||||
| Я уж хотел было, отписаться от темы, поскольку считал её исчерпаной, однако как я могу видеть: самое интересное только начинается Вообще: мне кажется довольно странным такой подход, когда человеку, уже определившемуся с выбором языка, начинают объяснять, что он не то язык выбрал. И говорю я это отнюдь не потому, что утверждения типа:
да ещё и стоящие рядом мне лично(ни на чём не настаиваю) кажутся , как минимум странными. Просто если выбор уже сделан, надо именно из этого и исходить. По поводу всех этих споров про ООП - такое ощущение, что это всё уже начинает в религию превращаться. По этому поводу недавно вычитал в одной книженции интереснейшую мыслЮ Если бы в средние века были компьютеры - то одни программисты сжигали бы других за ересь И вот ещё что вызывает вопросы
А что тогда считать поводом? |
| Автор: source777 18.11.2008, 00:07 |
| Схожие концепции + наследнику всегда характерны многие проблемы предка. А у С++ с C# ничего общего, кроме схожего синтаксиса и статической типизации, нет. |
| Автор: diadiavova 18.11.2008, 00:10 |
| Ну если бы языки-наследники имели тот же набор средств, что и предки, то никакого движения вперёд не было бы. |
| Автор: source777 18.11.2008, 00:20 | ||
Не тот же, а концептуально схожий, а если они похожи как страус на лебедя, то тут уж не о каком наследстве говорить не приходится. |
| Автор: diadiavova 18.11.2008, 00:26 |
| Ну тогда это требует уточнений. Не то, чтобы я хотел попорить, скорее понять идею. ИМХО, язык - это всё-таки набор конструкций, при помощи которых можно объяснить машине, что делать. И если в основу C# лёг синтаксис С++ и при этом утверждается, что между ними нет ничего общего, то мне это не понятно. И что тогда вообще считать общим? Вот например языки VB6 и VB.Net можно считать родственниками или между ними тоже нет ничего общего? |
| Автор: kemiisto 18.11.2008, 00:39 | ||||
ИМХО, очень далеко от истины. Важную роль играет "идеалогия" языка, т.е. парадигма программирования, к которой данный язык относится. И хотя С++ и С# оба ориентированы на так называемую императивную модель вычислений (процесс вычисления описывается в виде инструкций, изменяющих состояние программы), первый не является чистым ОО языком. С++ поддерживает ещё и парадигму структурного программирования (вот тут и генетическая связь с C). А C# - "чистый" ОО язык.
Далее, С++ - компилируемый язык (как и C), а С# - нечто среднее между компилируемым и интерпретируемым. Кроме того, С и С++ - языки с ручным управлением памятью, а C# - с автоматическим. ... C# ближе к Java. Они как двоюродные братья. Папы разные (MS и Sun), а мама одна - чужие идеи. Идея компиляции в некий промежуточный переносимый код - это из школы Вирта (ещё со времён PASCAL, который компилировался в т.н. P-code), идея всеобъектности - это из группы Smalltalk. C-подобный синтаксис выбрали, что "покрыть" как можно больше потенциальных разработчиков, которых можно было бы "перетянуть" на создаваемый язык... |
| Автор: diadiavova 18.11.2008, 00:47 |
| kemiisto, В этом смысле С++ вообще язык-универсал. И под дотнет на нём тоже можно писать. Это, однако не делает его другим языком. В то же время в C# "идеолгия" не отличается от той, которая используется в VB.Net. Так что же из этого следует сделать вывод, что C# и VB.Net являются родственниками в большей степени чем C# и C++ ? Может всётаки идеологию от конструкций как-то надо отделять? Как говорится "Суп - отдельно, а мухи - отдельно" |
| Автор: diadiavova 18.11.2008, 01:09 | ||
Это тоже подробности компиляции(или если угодно - трансляции, не суть важно), какое это имеет отношение к самому языку? Не спорю. А ява откуда взялась? Да причина выбора опять-таки - дело пятое. История, подробности обработки и всё такое, на мой взгляд не имеет к делу отношения. Один и тот же язык может иметь и компилируемую и интерпретируемую версии, но это же не делает их разными языками? А история того, кто у кого чего стырил вообще может представлять интерес только для любопытных. Был, например чудный язык J#, как две капли воды на яву похож, только дотнетовский, и что считать их с явой разными языками из-за этого? А почему тогда на J# - овском компиляторе можно было явовские исходники компилить? И ли взять саму яву, один и тот же код можно скомпилить под разные оси, и как в таком случае это обстоятельство интерпретировать, ведь компилится код по-разному, стало быть и языки разные что ли? |
| Автор: kemiisto 18.11.2008, 01:59 | ||||||
Ошибаетесь... ИМХО, естественно.
Вы что-то путаете. Один и тот же код компилится в байт-код, который для всех поддерживаемых ОС выглядит абсолютно одинаково. А вот преобразование этого байт-кода в машинный может происходит по-разному на разных ОС. Как видите наличие некого промежуточного представления кода - крайне важная отличительная черта Java (ну и C#, конечно).
Ну, принято считать, что это разные языки. Хотя в этом случае речь, скорее, идёт о разных реализациях одного языка. Вот, например, у Ruby, помимо одноимённой реализации, есть ещё реализации, ориентированные на платформы
А вот в случае VB и VB.NET - это разные языки (спорно, наверно). Адаптация VB к миру .NET потребовала коренных изменений в языке. Хотя лучше спросить у специалистов в VB, я точно не уверен. А вообще, это такой скользкий вопрос - что считать языком, что диалектом, а что реализацией. |
| Автор: diadiavova 18.11.2008, 02:39 | ||||||
Насколько я знаю - компиляторы разные используются(хотя - могу ошибаться), кроме байт кода в библиотеке ведь ещё что-то есть? Если они разные, тогда почему J# больше поддерживается. Столько сил вложено в создание языка, а теперь бац, и не только поддерживать в новых фреймвоках перестали, но и из старых изъяли. И произошло это как-то в аккурат после неудачного(для майкрософт) завершения судебного процесса (с Sun разумеется). Может, конечно и совпадение, только какое-то уж очень подозрительное.
Абсолютно бесспорно, только вот индексация версий и имя языка сохранились. То есть первый VB.Net называют VB7, а нынешний VB9. То есть - формально это один язык, но различий между 6-ой версией и последующими, возможно, больше, чем у С++ и С#(например в VB6 даже наследования нет).
Это терминология, уместная только в том случае, когда все одинаково понимают, о чём идёт речь. Но всё-таки, для меня язык - это только средство объяснить машине чего хочу, а идеология... я пишу на васике, но вполне свободно чувствую себя на сишарповских форумах, потомучто, языки разные, а идология одна. |
| Автор: kemiisto 18.11.2008, 11:33 | ||||||
Политика MS.
Не знаю. С J++ судилово было, но там претензии Sun касались того, что MS нарушила данную ей лицензию. Не полностью реализовала Java (например, не были реализованы Remote Method Invocation и Java Native Interface), зато добавила кое что от себя (например, COM). Данная особенность J++ вошла в противоречие с основным принципом Java: написаный Java-код должен работать на всех платформах, что и привело к судебному разбирательству между Sun Microsystems и Microsoft. Но с J# разве был иск?
Я бы сказал, потому, что языки разные, а исполняющая среда - одна. И, соответственно, одни и теже библиотеки классов (BCL). Зная BCL и немного синтаксис C#, Вы без труда сориентируетесь в чужом коде. |
| Автор: mr.DUDA 18.11.2008, 11:37 |
| Модератор: Давайте вернёмся к теме обсуждения. |
| Автор: v_enom 18.11.2008, 12:51 | ||||
Если ты считаешь что вот ЭТО пытаюсь оспорить, то дальше можешь даже не читать. потому что ты сам не понял что написал. Иначе скажу, что даже будуче не знакомым с работами уважаемого автора (я думаю многие с ними не знакомы) я почему-то уверен, что оне не пишет, что указатели - зло и что удалять объекты вручную - это ересь. Наверняка он лишь объясняет моменты в которых программист может забыть или потерять неудаленный объект, а среда не может, поэтому лучше сборщика иметь. Но, простите, это не критерий "нормального ООП языка". Это критерий среды, подхода к реализации работы с объектами...но к оо модели это частно говоря притянуто. В C#нету friend class. Да есть другие средства, но френдов -то нету, при этом он остается ООП языком. Я считаю, что критрий нормального ООП языка является его гибкость в работе с классами, которой в С++ хоть отбавляй. Но это я считаю так, а критериев таких все же пока не встречал, значит для МЕНЯ их пока нет. Ознакомьте если сможете.
почему вы перевираете сказанное мной? Я не писал такого. А вот то, что я определил/понял/угадал,что человек с ними не работал - у меня не отнять. В этом нет недостатка, но все же лучше знать что просиходит с памятью не из теории. дальше влезать в споры по поводу языков и компиляторв даже бессмысленно. Считая наследн,скажу, что согласен больше с diadiavova, т.к. вижу что остальные точки зрения лишь вариации на тему оппозици. Спорить, чтобы спорить. Приведу лишь слова Г. Шилдта из справочника по C# "Гениалогическое дерево С# показано на рис. (С-->C++ ---> C or Java). И эжто не случайно. дедушкой C#является язык С. От него он унаследовал синтексис, многие ключевые слова и операторы. Кроме того язык C# построен на улучшенной объектной модели, определенной в С++" и "...С# не потомок java. Скорее его можно считать двоюродным братом." можно добавить, что раз синтаксис уже 3х языков унаследован у С, то это говорит о его качестве и оптимальности для такого круга задач. |
| Автор: Nirvanno 18.11.2008, 12:58 | ||
Grauman, вот Вы пишете, что
По справочникам языки не учат. Во-первых,советую ознакомиться с книгой Эндрю Троелсена "C# и платформа дотнет". А непосредственно азы языка C# можете получить, прочитав и разобравшись с учебником Павловской "C# программирование на языке высокого уровня". Дополнительно можно пройти курс на сайте intuit.ru - онлайн обучение,правда нужно предварительно зарегестрироваться там. Ну и сборник задач и примеров возьмите.Например,"Сборник рецептов" Павла Агурова. Удачи в изучении ;) |
| Автор: source777 18.11.2008, 13:45 | ||||||
Это говорит о том, что С в своё время был очень популярен, а создатели языков не любят изобретать велосипеды, и целенаправлено снижают порог вхождения для своих языков. Кстати насчёт 3х языков ты ошибаешься, языков с С-style синтаксисом не один десяток, что впрочем в равной мере справедливо и для Pascal-style синтаксиса. |
| Автор: PashaPash 18.11.2008, 14:48 | ||
дайте и я пооффтоплю.
C++ - Multi-paradigm. Это значит что он не только OOPL. Но парадигмы OOP он вполне поддерживает. |
| Автор: MasterOfCode 18.11.2008, 19:16 |
| Млин, такой холивар пропустил... Учить нужно не только 1 язык, а например в комплексе, если видишь себя в дальнейшем в обнимку с БД учи еще SQL и все его потомки T-SQL, PL/SQL... Если WEB технологии, то в добавок JavaScript, SQL и т.д. C# язык гораздо легче того же C++, не загоняйте человека в дебри СПП, он там запутается. Помню как меня link error задолбали, или Null Reference, вообще не знал что делать, а че нить не так сделаешь, чуть ли не на каждой строке ошибки валятся + уходят в бесконечное количество header'ов |
| Автор: mr.DUDA 18.11.2008, 19:23 |
| Тема закрыта, дискуссия перенесена http://forum.vingrad.ru/index.php?show_type=forum&showtopic=115193. |