Самый быстрый и эффективный способ начать программировать на языке C# с нуля? Подскажите плиз опытные программеры

★6
ВНИМАНИЕ! КОММЕНТАРИИ ПЕРВОГО УРОВНЯ В ВОПРОСАХ УПОРЯДОЧИВАЮТСЯ ПО ЧИСЛУ ПЛЮСИКОВ, А НЕ ПО ВРЕМЕНИ ПУБЛИКАЦИИ.
Попытайтесь прислушаться к такому совету.  Форумы и книги по с# — это хорошо, но это далеко не для начинающего. Чтобы овладеть  c# с нуля без навыков, нужно:
  — овладеть фундаментом по программированию. Знать основные базовые подходы и приемы в программировании.
  — овладеть подходами объектно-ориентированного программирования
  — и только потом полистать книженцию по c#.

Чтобы говорить предметно, то:
  — изучить фундамент программирования и основные приемы в нем на основе студенческих учебников по Си ( я бы конечно за паскаль, но раз речь по C#, то пусть будет сразу с Си)
  — изучить подходы в объектно-ориентированном программировании на основе c++. Книги для студентов издательства Питер весьма не плохи. (они же и для Си)
  — ну а потом можно полистать любую книгу по c#, после первых двух пунктов уже можно будет листать любую книгу по программированию.
Месяца 2-3 на это уйдет, если кто то будет рядом подсказывать.

upd. Полистал инет. Нашел. Для азов — Программирование на языке высокого уровня C/C++ — Павловская, издательство Питер
avatar
Андрей К, C/C++ и С# лучше не смешивать. Даже в VS синтаксис визуально разный, не говоря уж об управлении памятью и т. д. и т. п. Если без опыта — можно начать с каких-нибудь видео на ютубе (например, www.youtube.com/channel/UCmdZlsCXz57nazOdp_o5wAg ), тысячи их. А дальше — ставить себе задачки и выполнять.
Кто-нибудь лучше может подсказать примеры связи с Quik`ом на шарпе? Видел статейки на робострое — не понравились.
avatar
India, я сторонник того, что далеко не в синтаксисе дело. Более того, выступил бы за то, чтобы начать с паскаля.
avatar
Андрей К, Вы думаете Тимофей реально программировать будет?)) Пару деньков помучается, вспомнит свою статью про эффективность многозадачности и опять поедет на радио. Но вдруг зацепит — перейдет из лудоманов в программисты… новая тема для книги… правда в жанре фантастики :)
avatar
India, это тоже правильно
Андрей К, Паскаль пожалуй что слишком уже далек от реальной жизни. При выборе языка я бы ориентировался на API, который предоставляет имеющийся у меня уже в наличии брокер. Чтобы с одной стороны не платить лишнего, с другой стороны чтобы была возможность свои наработки запускать в сколько-нибудь боевой среде.
avatar
SergeyEgorov, ну почему же? все мои серьезные разработки сделаны на Delphi. C# пришлось только тогда открывать книгу, когда стал готовиться углубленно к серьезной вакансии на свое проф повышение. Да и правда иногда вынужден чисто из за тслаб или подобных задач.
avatar
Андрей К, Я извините в своем высказывании про Паскаль забыл уточнить что в разрезе биржевой торговли на Российском фондовом рынке он не очень актуален. Или я что-то упустил и есть какой-нибудь API у какого-нибудь брокера на эту тему?
avatar
SergeyEgorov, боюсь наш дискусс нужно вести предметно. 
  — transaq connector например дает свое api в виде dll. Ее прикручиваем к приложению и все.
  — plaza2 тоже цепляется через COM. Поэтому можно любой язык.

c# я использую только, если нужно проверить идею в тслаб и там проще всего будет это сделать и не возможно ее проверить в mt5.
avatar
SergeyEgorov, гляньте комменты secret-а.
а по топику — почему-то многие восприняли потребность Афтара накодить что-то под trading-purpose/utility, а не для иных целей
avatar
India, спасибо за ссылочку. Обязательно посмотрю эти уроки
Андрей К, спасибо
изучить подходы в объектно-ориентированном программировании на основе c++
К слову, c++ (как и #) не имеют отношения к ООП. Подобное УГ просто притянули за уши к ООП, это был маркетинговый ход в период расцвета смоллтока.
avatar
sortarray sortarray, Странно? Почему тогда при кодировании на C++ или C# приходится любое поведение оборачивать в классы, экземпляры переменных которых по сути и представляют собой некие виртуальные представления реальных объектов? Ну и даже в книге GOF основные примеры почему то на C++, и лишь часть их дополнительно расшифровываются на Smalltalk?
avatar
SergeyEgorov, это видимо снобизм такой :) сейчас все ходовые ЯПы являются мультипарадигмальными с разной долей примеси ООП. Принципы ООП не являются секретом — инкапсуляция, наследование, полиморфизм. В С# все это есть. Абстрагирование может осуществляться через классы(классика), либо через прототипы(JavaScript). То что ООП нередко добавляют в язык позже — это нормально, не все задачи можно решать эффективно в рамках функционального программирования, а языку нужно как-то наращивать коммьюнити и выживать.
avatar
SergeyEgorov, классы к ООП непосредственного отношения не имеют, В ООП объекты и сообщения.  Во всяком случае, специальный синтаксис для класов. GOF также к ООП отношения не имеет, это просто тысяча  и один рецепт «как не зная что такое ООП, умудряться пейсать чтото похожее на ООП». Смоллток они там использовали, скорей всего просто для понта, могли бы и обойтись. Но это днище о котором Вы говорите — плюсы, GOF, действительно сейчас *принято* называть ООП, так что, не буду спорить. Де-факто — это просто жалкие пародии.
avatar
Ну программировать на уровне небольшой программки можно быстро научиться, идя по любому пути изучения. Только такие программки бессмысленны, так как не решают актуальных задач. Чтобы делать что-то полезное с помощью программирования нужны годы, надо быть готовым к тому, что терпения может не хватить.
Максим Виссарионович, да, мне тоже так кажется
Тонкость в том, что кроме изучения синтаксиса языка нужно еще постичь собственно внятные приемы кодирования. Понять основы можно за неделю, чтобы научиться писать работающие программы, может потребоваться несколько лет.

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

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

Единственная, известная мне книга, на русском языке, которая внятно и доходчиво показывает как можно правильно структурировать внутренности программы, чтобы ее можно было не только запускать, но еще и читать и модифицировать — это Принципы, паттерны и методики гибкой разработки на языке C# Роберта Мартина.

Можно попробовать посмотреть мои совершенно бесплатные тренировочные видео по программированию на C# для начинающих трейдеров.
avatar
SergeyEgorov, «Принципы, паттерны и методики гибкой разработки на языке C#»

Думаю в самом начале освоения программирования нужно делать акцент только на том, чтобы программа работала, как нужно. А принципы и паттерны — это сильно дальше.
avatar
professor facepalm, Я в данном случае не думаю, я рассказываю о своем опыте обучения именно трейдеров и именно практическому программированию. Моя практика показала что в практической торговле на фондовом рынке нет «простеньких задачек», которые можно было бы реализовать так, чтобы сначала «программа просто работала как нужно», а когда-нибудь потом сильно дальше можно было бы взяться за принципы и паттерны.

Мы проверяли подход, когда все поведение утрированно говоря кодируется в методе main или в вызовах обработчиков элементов GUI. Собственно сами трейдеры оказывались в ступоре, когда эти методы разрастались до размера в 300 — 500 строк и становились не то что неуправляемыми, их невозможно было даже дочитать до конца, не потеряв нить происходящего.

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

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

Вообще на мой взгляд для трейдеров, которые любят торговать и хотели бы остаться в деле еще долгие годы, вопрос «изучать или не изучать программирование?» не стоит. Либо они изучают программирование, либо в некоей, на мой взгляд не очень долгой перспективе они обнаруживают что больше не могут успешно торговать.
avatar
просто взять и начать это делать. если есть к делу интерес — пойдет быстро. если интереса нет — и браться не стоит — лучше нанять.
avatar
l-way, ну это универсальный совет
неожиданно… напоминает вопрос как выучить английский за 5-10 занятий
если кратко, садишься и начинаешь что то делать, попутно образовываясь на форумах и сайтах с документацией

avatar
Vlad, )) спасибо!
cs50.harvard.edu/
если выше лет ми спик фром май харт, курс cs50 можно пройти онлайн, а можно и скачать с торрентов запись с сабами, правда там перевод машинный, но если постараться можно понять и без них.
avatar
Тимофей, ох и тернистый путь Вам предстоит =)

Сначала стоит определиться со средой разработки(MS Visual Studio, MonoDevelop), посмотреть несколько обучалок по работе с ней.

Дальше есть два пути:
1) долгий, идти методично от простого к сложному, получая при этом понимание абстракций и концептуальных идей самого языка программирования, принципов программирования и проектирования, архитектуру .NET. Предстоит чтение книг, совсем не тоненьких(например, лежит на столе Кристиан Нейгел «С# 5.0 и платформа .NET 4.5»). 
2) короткий, выбрать конкретную задачу и решать именно ее(для начала это даже будет лучше, руки сразу не опустятся). Грубо говоря, если нужно чтобы форма с кнопкой, по нажатию на которую выводится сообщение, Вы и начинаете копать: как сделать форму? как на нее кинуть кнопку? как привязать событие к нажатию кнопки? как вывести текстовое сообщение? И на такие вопросы раскладываете любую задачу.

В любом случае придется изучить синтаксис языка, без него никуда, типы данных, базовые конструкции языка(циклы, ветвления). C# — объектный язык программирования, поэтому концепции данной парадигмы тоже придется изучить. Для создания визуальных интерфейсов пригодится WinForms, хотя сейчас процветает WPF. Когда окрепнут базовые навыки можно начать изучать взаимодействие с операционной системой и ее компонентами(файловая система, реестр, сеть, память и т.п.), построение своих объектов, создание собственных модулей.

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


Возможно получилось сумбурно

P.S.
Кристиан Нейгел «С# 5.0 и платформа .NET 4.5 для профессионалов» — конечно для начала тяжеловата будет, но в ней есть и архитектура .Net, основы языка и основы работы с MS Visual Studio 2012
avatar
Андрей Рычков, спасибо за подробный ответ!
Самое грустное, что нужно потратить время, чтобы подстроить свой мозг думать «как компьютер» или «что должен сделать компьютер». Вот тут и получается, что «быстро» — это про «базовую часть» и про элементарные задачи верно, но чтобы владеть инструментом этого будет мало

И желательно учиться с преподавателем, которому можно адресовать все свои вопросы, особенно если «с нуля»
avatar
Вам сейчас тут наговорят с три короба:) «Быстро и эффективно» с нуля не бывает. Пройдет, минимум год, при должном упорстве, Вы напишите что-то сложней хелловорлда, может быть, года через три Вы напишите серьезную программу,  в лучшем случае. И изучают, в принципе, не столько язык, сколько программирование — парадигмы, подходы, шаблоны, алгоритмы и тд.
avatar
sortarray sortarray, спасибо
Кстати, большинство тут, я смотрю, говорят, что якобы, язык не имеет значения, ИМХО это не так. Тупые языки, типа решетки, жабы, учат решать задачи через жопу, by design, это сильно влияет на мышление программиста. Язык имеет значение.
avatar
Регайся на mva.microsoft.com/training-topics/c_topic_page_rus и проходи быстрые курсы
avatar
Лол
avatar
Язык-то выучить не сложно — намного сложнее алгоритмизировать.
avatar
как и с любым языком — начать писать программы. Дай себе недельку чтобы привыкнуть к синтаксису, если есть программерский бэкграунд, если его нет — допустим месяц. Дальше пили софт. Тем более с#, в отличие от плюсов, хорошо заходит)))
avatar
owner, а как начать писать программы?
имеет ли смысл пытаться разобраться в уже написанных программах?

или просто с учебником сидеть и писать примеры из него?
Тимофей Мартынов, если просто списывать с учебника, то пользы никакой не будет.  Возьми несколько источников, допустим видеокурс для начинающих и годную книгу(посмотри рецухи на том же амазоне). Какое-то время нужно потратить на освоение базовых идей программирования(функции, циклы, типы данных итд.), так как у всех СИ-подобных языков такие концепты очень похожи, все это можно усвоить, просто изучая синтаксис непосредственно С#. Важно чтобы ты начал говорить с программерами на одном языке, так как ты сможешь в случае проблемы четко сформулировать ее и посмотреть на StackOverflow решения, либо задать вопрос на том же форуме, если на него еще не отвечали, также это поможет в большинстве случаев избежать ловушки «несознательной некомпетентности»(самый тяжелый случай)))
Если списываешь откуда-то код, постарайся понять как он работает, после модифицируй и работай с ним самостоятельно, рассматривай каждую свою ошибку в коде, как хорошую возможность улучшить свой кодерский скилл.
Самое главное — ты должен понимать зачем ты это делаешь и видеть конечный результат, иначе при первых сложностях (а их будет много) бросишь.
avatar
owner, лан, посмотрим
главное чтобы время было))
без навыков программирования?
avatar
Андрей К, ну да
В универе насколько помню, базовому курсу, после которого юные программисты стартуют дальше уже сами в развитии, уделяют пол года по 4 часа теории в неделю и 4 часа практики. 
avatar
Я 2 недели ходил на курсы программирования и понял что с наскоку не получится. Надо долго учиться. Решил вернуться к торговле руками.
avatar
George Soros, ого, ты ходил на курсы?:) чото дало?:)
Тимофей Мартынов, не особо. ну препод был угарный Перлин Владислав в центре Специалист на Пролетарке. Много всякой всячины про иудаизм, тору, чайник рассела рассказывал. ну общие какие-то мысли по основам программирования и так для общего развития полезно. Но я понял, что надо это дело долго и серьезно изучать чтобы конкурировать с программерами типа Секрета. ну в идеале в универе 5 лет на программера учиться. с кондачка или по курсам/учебникам мало что получится. решил для себя что игра не стоит свеч, торгую руками.
avatar
www.specialist.ru/
Конкретно про C# не знаю, однако некоторые другие курсы весьма познавательные. На торрентах уроки встречаются.

Я изучал этот язык по Герберту Шилдту
avatar

Только зарегистрированные и авторизованные пользователи могут оставлять ответы.

Залогиниться

Зарегистрироваться

теги блога Тимофей Мартынов

....все тэги



UPDONW
Новый дизайн