Как выучить язык программирования c с нуля?

17 ответов на вопрос “Как выучить язык программирования c с нуля?”

  1. Modora Ответить

    Эффективное обучение C# разработчиков или Правильное программирование на C# с нуля (Фишки для новичков в программировании организационного характера)

    Добрый день тебе, Читатель.
    Причиной написания этой статьи стало моё увлечение C# и некотоые наблюдения, изложенные ниже.
    Я и помогавшие мне тренеры по избранной мной дисциплине, применяли свой опыт и наблюдательность, преследуя простую цель: Хоть кому-то облегчить жизнь программиста, сделать обучение лучше и удобней. К тому же это такое, своего рода, инсайдерство — Чистой воды GNU философия, приложенная к Майкрософтовскому продукту.
    Как и многие другие, я столкнулся с отсутствием систематических и позволяющих получить понимание предмета материалов, рассчитанных на людей, к программированию ранее отношения не имевших. Говоря иначе, стало ясно, что — Нету в Укрнете такого ресурса или библиотеки с online консультантом профи, которые давали бы возможность взять и понять основы программирования. Вы скажете, минуточку, а как же Сертификационные центры Майкрософт. Есть ещё мощный и системный «Кибер Бионик Систематикс». Есть академия «ШАГ», прости Господи, ставшая притчей во языцех. Но все же обучающая. Все же…
    Конечно, всё это есть. Платно, но ладно — «Бог с ними». Лишь бы доступно. Лишь бы с пользой для людей…
    Здесь речь пойдёт не совсем об этом. Здесь статья о Старте. Той ситуации, когда человек хочет научиться и ищет информацию. Ищет. Ищет. Хочет. Очень хочет. И, всё-же, находит (Речь же всё таки идёт о наших студентах:) и, конечно-же, делает ошибки (Речь же всё таки идёт о наших студентах:).
    Вот на их (ошибок) базе и базе здравого чувства юмора, мы и построили данный материал.
    Надеемся, он понравится Вам.
    Посещая профильные курсы по программированию, например Стартовый C#, Вы можете просто слушать тренера и выполнять Задачи, прилагаемые к Видео урокам по С#. Вы также можете посмотреть видео ролики по C#, доступные на прочих ресурсах, посвященных программированию в .NET и предлагающих быстрый старт, основанный на использовании инструментов этой Microsoft платформы, и предлагающих получить знания по CLR через понимание C# как языка программирования, доступного для изучения «с нуля». Несмотря на заявленную продолжительность обучающих курсов в 32, 76 или 112 часов. Поверьте мне, Вам придётся смириться с тем, что вы не сможете научиться программировать, потратив на это всего неделю-другую. Но, за этот промежуток времени, Вы вполне можете усвоить основы модели и организовать рабочий процесс, по-сути, облегчив свою работу, создав условия, максимально оптимизирующие процесс обучения программированию на C#, а также выявив «узкие места» и способы их решения.
    Именно на этих «сложностях» мы и постараемся акцентировать внимание в данном материале, в тоже время стараясь давать и решения. Большинство «проблем в обучении C#» связаны с неусидчивостью, невнимательностью и, что куда более важно, нежеланием практиковать решения с абстрактно-пространственном мышлением, тем самым не позволяя, в процессе обучения, назвать проблемы и сложности – задачами и решить их. Мы надеемся, что данный материал поможет Вам в преодолении тех самых «ступенек новичка», с которыми сталкивается любой начинающий разработчик, желающий изучить C#.
    Приступим.
    1) Изучение С#. Первые задачи
    Мы не зря выделили слово задачи. Практикуя такой подход, как замена негативных установок позитивными решениями, Вы нанесёте сокрушающий удар двум самым сильным врагам программиста С# – прокрастинации и спешке. Первочерёдная задача любого программиста напоминает задачу «ямабуси», странствующих буддистских монахов. Первым делом, если Вы хотите научится писать на C#, как и на любом другом объектно-ориентированном языке, Вам придётся обрести Осознанность. Вы должны четко осознавать, что Вам объясняют, зачем Вам нужны эти знания, какие идеи у Вас возникают при получении этих знаний и, что самое главное, Вы должны чётко осознавать, что ваш тренер по программированию не зря делает всё так, как делает. Программисты часто склонны переоценивать свой опыт. Тяга к упрощению создаваемых конструкций, случается, даёт обратные плоды – человек привыкает к тому, что его решение — это всегда «просто», а значит, малозатратно по времени и прилагаемым к решению усилиям. Так возникает прокрастинация – откладывание решений на вечное завтра и «реакция 2», названная так потому, что неосознанные новички в программировании действуют по двум моделям: либо «Я ничего не знаю и потому никогда это не пойму!» и «О! Так я это читал! Это как с тех видеокурсов по C# — Я всё это знаю!». Страх и гиперактивность — плохие помощники. А это именно они. Потому запомним вывод: никогда не торопитесь, всегда знайте зачем и почему Вы учитесь программированию здесь и сейчас, выполняйте учебный план, делая задания только правильно и в срок и лишь после этого двигайтесь дальше.
    2) Работа с примерами кода в C#. Вопрос внимания и приоритетов
    На начальном уровне, используя такие возможности, как очное обучение С#, видеоуроки по С# и пользуясь литературой, большинство новичков в программировании превращают плюсы в минусы. Поддержка, организованная тренером, доступом к видеоматериалам по C#, с включёнными в него задачниками и доступом к примерам в интернете, заставляют изучающих базовый C#, думать, что программирование — это нечто вроде «конструктора ЛЕГО», где код просто указывает, какие модули где лежат и что собирая их решаются задачи. Но это абсолютно не соответствует истине! Работа программиста — это написание кода. Жизнь программиста — это Понимание кода. Все тренировки производятся во имя Понимания роли тех или иных элементов, синтаксиса и понятий C#, а также среды, в которой разворачивает решения C# программист. Начало обучения программированию — это трата огромного количества времени тренера, на вопросы и разговоры о примерах C# кода, чтобы внимательно и спокойно понять, как можно работать с тем, что делает код.
    3) Работа с действием. Практический разбор решений С#
    Работа с примерами кода, осознанное и последовательное изучение логики C#, инструментария MS Visual Studio, верное определение приоритетов, основанное как на анализе полученных знаний в C#, так и на мнении тренера, знающего гораздо больше, страхуют Вас от «подхода менеджера», предпочитающего копипасту написанию. Код нужно писать. Это действие, свойственное программистам. И если Вы уж решили научиться программировать на C#, привыкайте Вводить решения. Строка за строкой, разбирая решения с тренером, постигая логику, понимая, почему написано так, а не иначе. Такой подход приведёт Вас к тому, что рано или поздно Вы вдруг заметите, что уже не только видите, почему писали так, а не иначе, но и можете написать иначе, проще и удобнее. «Найти и изменить» — вся суть современного программирования, на C# или любом другом современном языке. Когда Вы пишете программу, Вы всегда ищете данные, затем меняете их, вводя всё большее количество взаимосвязей, в свою очередь меняющих данные так, что из них получаются те самые – нужные данные, что были определены задачей.
    4) Используйте задачники и отладчик для понимания возможностей C#. Пишите свой собственный код
    Понимание примеров, знание синтаксиса, умение разбираться в системной логике и логике процессов, знакомство с ключевыми определениями абстрактно-пространственной модели C#, понятия класса C#, объекта C# и C# функции, а также умение создавать проекты в MS Visual Studio, дают Вам право пробовать свои силы. Помните, внимательность и сдержанность актуальны и здесь. Разработка своих вариантов задач из учебника и практических заданий, которые дополняли видеоуроки по C#, написание своих версий без обращения к базам исходного кода – нужна любая практика, тренирующая Вас не только как реализатора, но и как «генератора идей». Не забывайте про использование отладчика, заставляющего C# программиста проходить созданные им конструкции, строка за строкой, снова и снова, пока код не будет оптимизирован и работоспособен. Гордость за выполненную работу – вот желаемый результат в обучении IT специалистов в Украине, тем более если речь идёт о обучении программиста, избравшего путь изучения C#. Гордость, легко конвертируемая в любую избранную мотивацию. Ведь по настоящему хорошего специалиста всегда хотят все!
    Осталось лишь одно правило правильного обучения C# разработчика, это постижение сути следующего ниже подраздела нашей статьи.
    5) Хлопок одной ладонью или правило 10 000 вопросов. Необходимость комплексного и систематического подхода к обучению программированию на C# и в изучении .NET платформы
    Если Вы научились писать код, то, наверное, это значит, что Вы уже не новичок в C#. Теперь Вы обрели самостоятельность и знаете, как принципы личностной организации рабочего процесса, так и «узкие места» и методы работы, позволяющие проходить их с лёгкостью и изяществом опытного программиста C#. Что же это значит? Вы стали C# разработчиком? Нет. Вы только сделали первый шаг. Нужен отрезвляющий хлопок одной ладонью, или говоря без притч и ассоциативного ряда с буддизмом, попросту пощечина, выданная самому себе с улыбкой. Теперь Вы можете переходить к тому, что называют Углубленное изучение C# или ответом тренеру, всё это время державшему нуба в чёрном теле. Пришла Ваша очередь, вот что это значит. 10 000. Именно 10 000 вопросов! Никак не меньше! 10 000 вопросов услышит от вас тренер в онлайн-консультации, в процессе очных занятий углубленного изучения C#, просмотра видео уроков и их обсуждения. Осознанных, неспешных, выдержанных и логичных до бешенства. Здесь и сейчас, как мы и учили Вас. Ведь Вы не просто начинающий C# программист, а человек, достигающий своих целей, умеющий мыслить абстрактно-пространственными категориями и знающий важность комплексного обучения программированию C# и изучению .NET платформы. И, да! Вот ещё кое-что. Надеюсь, теперь Вы и теперь не собираетесь обманывать себя тем, что Вы научитесь углубленной разработке на C# за пару-тройку недель.

  2. Dumuro Ответить

    В первой строчке мы создаем переменную (объявляем ее). Пока что она не несет в себе никакой информации. Во второй и последующих мы меняем ее значения.
    Операторы
    Арифметические операторы (= + – / *).
    Операторы сравнения (== != =).
    Чем отличается = от ==? = – это знак присвоения, а == – знак сравнения.
    num = 5;
    num==5;
    В первом случае мы присваиваем переменной num значение 5 (если переменная была равна 40, то теперь она равняется 5), а во втором случае мы проверяем не равна ли переменная num 5 (если до этого она была равна 40, то она и останется такой же).
    Условные операторы (if else)
    И сразу пример:
    string text;
    If (num==2){
    text = “Переменная равна 2”;
    }
    else {
    text = “Переменная не равна 2”;
    }
    Т.е на русском конструкция с if else имеет вид
    Если выполняется (какое-то условие){
    то происходит что-то
    }
    если не выполняется {
    то происходит что-то другое

    }
    Вернемся к операторам сравнения:
    == равно
    != не равно
    < меньше
    > больше
    >= больше или равно
    Примеры
    if(num!=4) если num не равно 4(равно чему угодно кроме 4).
    if(num<2) если num меньше 2 (2 уже не подходит).
    if(num< =2) если num меньше или равно 2. Логические операторы (! || &&)
    Есть и другие, но они вам пока не нужны.
    ! это “не”
    || это “или”
    && это “и”
    Примеры:
    if((num>=2)&&(num< =4)) num будет равен числу от 2 до 4 (выполняются оба условия)

    if((num==4)||(num==6)) num равен 4 или 6 (выполняется только одно условие)

  3. Goldenshade Ответить

    Всем доброго времени суток!
    Это статья о том, почему же все-таки стоит выбрать C++ в качестве первого языка программирования для обучения студентов, и немного о проблемах преподавания в ВУЗах. Часть суждения, касающегося процесса обучения, основывается на личном опыте преподавания (три года, во время учёбы в аспирантуре), а также на общении с преподавателями и студентами.
    Рассматриваются преимущества языка программирования C++ именно для обучения и с точки зрения лучшего понимания основных концепций. Остальные кандидаты на роль первого языка (Pascal/Python/C#/Java) не рассматриваются, дабы не разжигать холивар. Еще раз отмечу: не для промышленной разработки и не с точки зрения такого субъективного критерия, как удобство.
    Написано под впечатлением откровенно рекламного поста «Delphi XE5 как основа для обучения программированию» (на момент написания, доступна только версия «от гугла»).

    0 Введение

    Для начала, хотелось бы отметить, что для студентов не профильных специальностей вопрос выбора первого языка программирования не рассматривается. Основы алгоритмизации (если они необходимы) можно осваивать хоть на Python, хоть на C++ (Java, C#, Pascal и т.д.). В данном случае, чем проще язык, тем он лучше: у людей необходимо сформировать хоть какую-то культуру алгоритмического мышления и понимания базовых конструкций. Студентам некоторых специальностей (юридические, экономические, гуманитарные), изучение ЯП совсем не требуется.
    Несмотря на всю очевидность написанного выше, многим студентам-экономистам первого курса преподают программирование на Pascal на практических занятиях по информатике. Студентам, которые ещё толком не умеют работать с MS Word. Польза от таких занятий весьма и весьма сомнительна. Точно так же, студентов-математиков могут пару лет учить программировать на C++/C#/Java… но зачем? Гораздо полезнее для последующего применения своих знаний изучить программы вроде Mathcad, Simulink, Surfer и т.д.
    Учитывая вышеизложенное, рассмотрим процесс выбора первого языка исключительно для студентов профильных специальностей (например, «Программная инженерия») и смешанных специальностей с уклоном в сторону IT (например, «Прикладная математика и информатика»). Во-первых, учебный план таких специальностей предполагает достаточное количество лекций и практик (т.к. рассматривается первый язык, учитывается только первый курс): для двух связанных дисциплин (информатика и программирование) около 230 часов, в зависимости от специальности. Во-вторых, наличие заинтересованности и определённого склада ума у студентов. Такие студенты чаще всего уже пробовали программировать, а возможно даже и написали сайт/игрушку. Две эти причины, в совокупности, дают неплохую базу для начала обучения и понижают порог вхождения для обучения языку. К тому же, выпускникам рассматриваемых специальностей предстоит в дальнейшем работать в индустрии разработки ПО. Следовательно, выбор первого языка для них особо важен.

    1 Почему же C++?

    На первом курсе закладывается базис для дальнейшего обучения и формируется подход студента к дальнейшему получению знаний. Язык программирования играет здесь не последнюю роль.
    Для того чтобы выбрать C++ в качестве первого языка программирования существует четыре причины:
    Компилируемый язык со статической типизацией.
    Сочетание высокоуровневых и низкоуровневых средств.
    Реализация ООП.
    STL.
    Рассмотрим данные причины более подробно.
    Компилятор. Тут C++ предстаёт во всей красе. Множество компиляторов, консольные команды, этапы сборки программы… Да, первую программу нужно написать в простом текстовом редакторе без подсветки синтаксиса и автокомплита, найти чем и как её можно запустить. Такой подход формирует у человека некоторое понимание того, как всё устроено:
    Код программы – это просто текст, который сам по себе не заработает.
    Компилятор – это отдельная программа, которой надо указать, что и как сделать с исходным кодом, чтобы он превратился в исполняемый файл. Текстовый редактор – это тоже отдельная программа, предназначенная для написания исходного кода.
    Существуют опции сборки, и существует не один компилятор.
    Исходный код, написанный программистом, может быть предварительно обработан и изменён (например, препроцессором).
    Будущий специалист осознает, что код сам по себе не запускается (в дальнейшем он быть может и заинтересуется, как работает, например, интерпретатор Python или JIT-компиляция). Человек будет задавать себе вопросы: «А почему?», «А в чём отличие?», «Как?». Не будет иллюзий по поводу того, что всё работает по нажатию двух волшебных кнопок или в интерактивной командной строке. Студент будет знать, что процесс сборки программы можно настроить и что исходный код может быть обработан сторонними программами. В будущем, при использовании IDE, человек будет понимать, что это всего лишь удобный комплекс программ, выполняющий большую часть рутинных операций и в случае недостаточной гибкости от неё можно отказаться или расширить.
    Статическая типизация. На примере языка со статической типизацией проще понять, что такое тип данных, зачем он нужен и от чего зависит. Видно, что собой представляет объявление, определение и инициализация. Использование языка C++ даёт это явно увидеть, что способствует дальнейшему пониманию того, как работают эти механизмы в других языках. Помимо этого можно на реальных примерах понять, чем беззнаковые целые отличаются от целых со знаком, чем отличаются числа двойной и одинарной точности, чем отличается символ от строки и т.д.
    Высокоуровневые и низкоуровневые средства. Использование таких средств, как указатели и динамическое выделение памяти, позволяет понять (или в дальнейшем способствует пониманию), что такое стэк, куча, стэк вызовов, раскрутка стэка и т.д. Помимо этого, на практике закрепляется понимание концепции адресов и адресной арифметики. На примерах демонстрируется, что память надо выделять, освобождать, потому что она не бесконечная, что существуют утечки памяти. В будущем, при изучении языков с GC проще будет понять, что же это такое.
    Отдельно стоит отметить простой механизм передачи значений по ссылке, значению, указателю и перенос объекта. Что такое изменяемые и не изменяемые параметры. В дальнейшем данные концепции могут быть использованы и при изучении других языков. Студент будет понимать, например, что объект в языке N передаётся по ссылке, и если его значение изменить в функции-члене, то оно изменится везде.
    Реализация ООП. Это относительно чистая реализация ООП без всякого синтаксического сахара (относительно некоторых других языков). Чётко разграниченные уровни доступа к членам класса, возможность множественного наследования и динамический полиморфизм дают возможность быстро усвоить основные концепции ООП (абстракция, наследование, инкапсуляция и полиморфизм). Указатели и динамическое выделение памяти позволяют наглядно понять такие важные механизмы, как upcasting и downcasting. В дальнейшем, основываясь на этих знаниях, легко можно понять весь синтаксический сахар в других языках. Необходимость контроля ресурсов (в том числе и «правило трёх» или уже «правило пяти», с учётом C++11), захват их в конструкторе и освобождение в деструкторе также способствуют более глубокому пониманию ООП.
    Стоит отметить такой важный момент, как не принудительное ООП. То есть данный подход к программированию применяется тогда, когда это удобно, и его можно смешивать, например, с функциональным программированием. Это способствует формированию понимания того, что средства реализации выбираются исходя из задачи.
    STL. Сама по себе концепция шаблонов C++, генерации кода и применения широкого спектра алгоритмов к различным контейнерам положительно влияет на процесс обучения. Здесь все на поверхности и понятно, почему можно создать вектор целых чисел и вектор пользовательских объектов на основе одного класса-контейнера. Почему можно применить некоторую операцию к последовательности объектов или как отсортировать объекты, для которых не предусмотрена встроенная операция сравнения. Можно понять, как осуществляется доступ к элементам, и узнать о категориях итераторов. Помимо этого закрепляется понимание обобщённого программирования.

    2 Немного о проблемах обучения

    Процесс обучения, пожалуй, одна из наиболее существенных преград, для того, чтобы реализовать все то, о чём написано в предыдущем пункте. Вероятно, этот вопрос не касается топовых IT-вузов, но если взять рядовые образовательные учреждения, то ощущается дефицит квалифицированных кадров и слабая мотивация студентов. Для большей части практических дисциплин редко привлекаются специалисты, занимающиеся непосредственно разработкой ПО. Например, человек, который не применял STL в реальных проектах, вряд ли сможет объяснить, как это делать, и главное зачем. Так же, как и преподаватель, искренне считающий, что программирование на Delphi с формочками уже есть самое настоящее ООП, учитывая, что весь код (без намёка на собственные классы, абстракцию и инкапсуляцию) пишется в обработчике нажатия на кнопку с очень понятным именем «Button1», не способствует процессу обучения. Проблемы есть и со стороны студентов, которые толком не поняли, куда и зачем они поступили. Многие студенты, не имеют мотивации к дальнейшему обучению и пониманию, а также и к самообразованию. Не смотря на то, что такие студенты и преподаватели прекрасно дополняют друг друга, в конце обучения не получится специалист, претендующий на junior-вакансию.

    3 Заключение

    В настоящий момент в мире разработки программного обеспечения сложилась ситуация, что в цене знание определённых технологий и опыт их применения, а не понимание. Современному обществу необходимо много программистов, которые могут выполнять строго определённые функции. Отчасти этому способствуют и развивающиеся технологии разработки. Возможно, что большая часть разработчиков, умеющих просто пользоваться определённым набором инструментов, никогда не столкнётся с «законом дырявых абстракций». Однако людям, претендующим на должности ведущих разработчиков, занимающихся оптимизацией и вопросами архитектуры, необходимо более глубокое понимание того, как всё устроено. Одним из факторов, приводящих к такому пониманию, может отказаться и верный выбор первого языка программирования. На основании этого, язык C++, являющийся статически типизированным, компилируемым, поддерживающий низкоуровневую работу с памятью и не перегруженную синтаксическим сахаром реализацию ООП, можно рекомендовать в качестве первого языка программирования.

  4. Truesinger Ответить

    Вот несколько специализированных компиляторов с поддержкой языка C:
    Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:

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

    Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:

    Что касается специализированной литературы, то советовать книги определенных авторов мы не будем. Тут, как говорится, выбирайте, что душе угодно. Потому что в большинстве случаев подбор самоучителя по программированию – это индивидуальный процесс. Используйте тот источник, который больше подходит именно для вас.
    Да и в интернете можно найти очень много информации. Например, на нашем сайте специализированной литературе по IT тематике посвящен целый раздел.

    Тенденции на рынке программирования

    После освоения основ программирования у многих сразу появится вопрос, куда двигаться дальше. Уже на этом этапе обучения следует задумываться о выборе основной специализации в области программирования. Вот те, которые больше всего востребованы на современном рынке:
    Веб-программирование – здесь понадобятся знания PHP, CSS и HTML;
    Разработка приложений под мобильную операционную систему Android – данная платформа построена на основе Java. Поэтому потребуется знание основ этого языка;
    C# (си sharp) – дальний потомок C. На основе C# построена веб-технология ASP.net от Microsoft.

    И последний совет всем начинающим. Перед тем, как приступить к обучению программированию с нуля, следует запастить терпением. А также: таблетками от головной боли, кофе, чаем и побрить череп наголо. Потому что во время постижения программных наук, обучающиеся часто вырывают волосы со своей головы вместе с корнем. Удачного старта!

  5. Ipofiner Ответить

    Друзья, решил тут попробовать изучить язык программирования. Исключительно для себя. Остановился на С++. Поэтому у меня просьба к тем кто уже работает программистами или тем кто уже изучал этот ЯП (при этом не важно, успешно или нет), какую нормальную литературу посоветуете использовать для изучения? Есть конечно книга Б. Страуструпа, но написана она как то тяжеловато и явно не для новичков. Как лучше организовать самостоятельный учебный процесс, дабы упорядочить изучение? Понимаю, что язык С++ не самый легкий и изучить его довольно не просто, но что то мне подсказывает, что изучать нужно именно его. Более высокоуровневые и скриптовые языки меня не интересуют (хотя я прекрасно знаю, что многие из них очень востребованы на рынке, но это не мой случай). Хочу сразу сказать, что это не для работы, а только лишь как хобби, в виду того что сейчас появилось свободное время, которое нужно использовать с максимальной пользой для роста над собой. К тому же это неплохо дисциплинирует (ну не водку же с пивом пить). В любом случае ничего не потеряю. Я конечно же не вундеркинд, поэтому вся надежда на самодисциплину. Понятно, что самостоятельно изучать любой предмет — задача непростая, но вполне преодолимая.
    Тут проблема вот какая — с одной стороны литературы по сабжу сейчас полно, с другой стороны, не всякая такая литература подойдет для новичка. К примеру у меня есть в наличии учебник Павловской «С++ программирование на языке высокого уровня», он вовсе неплохой и изложен хорошим академическим языком, но по моему мнению он не очень подходит для изучения ЯП «С нуля». Это исключительно мое субъективное мнение, возможно я и ошибаюсь. Опять же к таким книжкам как: «С для чайников», «С для полных дебилов», «Изучаем Си за две недели», я отношусь с определенной долей скептицизма. Любой человек который в теме, понимает, что ЯП С++ сложнейший и ни о каких «чайниках» тут речи быть не может. Даже Паскаль не каждому под силу, что уж там говорить про Си. Знаю, что здесь много программистов и людей этот язык изучавших, поэтому хотелось бы узнать ваше мнение по этому поводу. Какие есть подводные камни на этом пути? Каких ошибок можно избежать, т. е. не наступать на грабли? Мне будет интересно мнение всех, кто хоть как то касался данной тематики. Заранее спасибо всем ответившим, только одна просьба — не разводить холивар по поводу какой ЯП лучше, какой хуже или вообще отстой… С ЯП я уже определился, так что в этом плане вопрос решенный – С++.

  6. Guzzeppe Ответить

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

    Сегодня С++ – это функциональный и мощный язык, который получил в наследство от Си массу ключевых возможностей по управлению памятью. По этой причине он активно применяется в системном программировании.
    Несколько сфер использования:
    Разработка операционных систем. Даже сама Windows преимущественно базируется на С++;
    Создание драйверов;
    Написание программ с нуля;
    Разработка и поддержка антивирусных приложений и прочего.
    С++ ушёл далеко за пределы исключительно системного программирования. Он может участвовать в создании приложений всех уровней, в которых стоит акцент на быстродействии и работе под высокими нагрузками. Применяется для формирования графических редакторов и прикладных приложений.
    Весьма много игровых движков, предназначенных для визуализации огромного игрового мира, основываются на С++. За последние года всё больше мобильных приложений используют данный язык. Даже в сфере веба нашлось место этому языку. Всевозможные веб-приложения активно используют С++, не обязательно в качестве основы, может просто для реализации вспомогательных функций, но факт остаётся фактом. Если подытожить: сложнее найти сферы, в которых С++ не может применяться, чем там, где используется этот язык.

    С++ относится к компилируемым языкам, то есть компилятор изменяет код C++, преображая его в машинный с помощью предустановленных инструкций. Все платформы отличаются некоторыми особенностями, из-за чего нельзя взять и перенести программу с одной на другую платформу. Точнее, перенести можно, но она там не запустится. При этом исходный код приложения преимущественно переносится. Единственное исключение – использование специфических возможностей конкретной ОС.
    У С++ есть компиляторы и инструменты для работы с кодом на большинстве известных платформ. Это позволяет скомпилировать исходники под любую платформу.
    С++ поддерживает написание программ в стиле ООП, чего не умеет Си. В этом случае приложение становится лишь набором классов, объектов, которые способны взаимодействовать с другими элементами кода. Это помогает в разработке крупных приложений.

    Как поэтапно развивался С++?

    Шаги развития С++:
    1979-1980 – С++ появился и позиционировался, как язык Си с дополнительными классами;
    1983 – язык начал называться, как все мы привыкли С++;
    1985 – релиз коммерческого варианта С++. В этот же год появилась первая бумажная книга «Языка программирования C++», она включала описание функций, возможностей и правил использования языка;
    1989 – выпущена вторая версия языка с расширенными возможностями;
    С 1990 до 2011 – медленное развитие и добавление функционала. Также стоит упомянуть, что в 1998 году впервые попытались стандартизировать язык. Тот стандарт впоследствии назвали ISO/IEC 14882:1998, сегодня – С++98. В 2003 году появилась следующий вариант стандарта C++03;
    2011 – издание стандарта C++11, в нём появилось действительно много нововведений. Обновление обогатило язык обилием полезных возможностей;
    2014 – выпуск относительно малого добавления к предыдущей версии стандарта. Его прозвали C++14;
    2017 – последний крупный релиз языка.

    Среды программирования, компиляторы

    Для написания программы на C++ обязателен компилятор, который преображает изначальный код в подходящий к исполнению в файле. Сегодня компиляторов неисчислимое количество. Они различаются по массе параметров, в том числе по способу реализации стандартов. На этапе выбора компилятора лучше выбирать те, что постоянно поддерживаются и обновляются.
    Для работы с C++ необходимо установить среду разработки. Вы можете установить любую удобную для вас среду или же вовсе воспользоваться онлайн компилятором. Среди самых популярных сред разработки можно отметить такие, как: Visual C++, Xcode (только Мак), GCC, Intel C++ Compiler, Embarcadero (Borland) C++ Builder.

    Дополнительные курсы

    Также можете посмотреть дополнительные курсы по языку C++. На нашем сайте все курсы по языку С++ вы можете найти по этой ссылке.

  7. Diran Ответить

    1 Очень короткое введение2 Установка Microsoft Visual Studio 2015 Express 3 Online компиляторы для С++ и других языков программирования4 Этапы сборки программы на C++ (ожидается)5 Написание первой программы на языке C++ (+ видео)6 Типы данных, переменные и константы в C++ (+ видео)7 Вывод данных на экран. Ввод данных с клавиатуры (+ видео)8 Арифметические операции (в т.ч. комбинированные операторы +=, -=, *= и /=)9 Инкремент и декремент10 Логические операции (+ видео)Циклы и операторы ветвления
    1 Операторы выбора if и else в C++ (+ видео)2 Тернарный оператор ? : в C++ (+видео)3 Оператор множественного выбора switch в C++ (+ видео)4 Цикл for в C++ (+видео)5 Операторы break и continue в C++6 Циклы while и do while в C++ (+видео)7 Вложенные конструкции в циклахМассивы и строки
    1 Массивы в C++. Одномерные массивы (+ видео)2 Строки в C++ и символьные массивы (+ видео)3 Функции для работы со строками в C++4 Двумерные массивы в C++ (+ видео)Дополнительные уроки
    1 Генератор случайных чисел rand() в C++2 Отладчик Microsoft Visual Studio3 Исключения в C++4 Перечисляемые типы (enum) в С++ (видео)5 Преобразование типов7 Форматирование ввода и вывода данных в C++ (ожидается)8 Работа с файлами в C++. Библиотека fstream. Часть 19 Работа с файлами в C++. Библиотека fstream. Часть 2Функции и введение в рекурсию
    1 Функции в C++ (+ видео)2 Параметры (аргументы) функции по умолчанию3 Перегрузка функций в C++ (+ видео)4 Шаблоны функций в C++ (+ видео)5 Рекурсия в C++ (+ видео)6 Локальные и глобальные переменные. Область видимости. (+видео)7 Локальные и глобальные переменные. Область видимости. Пространства имён (+видео)Указатели и ссылки
    1 Указатели в C++. Часть 1: Динамические массивы. Операторы new и delete. (+ видео)2 Указатели в C++. Часть 2: Передача строки в функцию по указателю. Возврат указателя из функции (+ видео)3 Ссылки в C++ (видео)4 Указатели на функции в C++Структуры
    1 Структуры (struct) в С++. Часть 1 (+ видео)2 Структуры (struct) в С++. Часть 2 (+ видео)3 Массив структур. Указатель на структуру 4 Динамический массив структур C++5 Объединения (union) в C++ (видео)6 Битовые поля в С++Классы
    1 Классы в C++ (видео)2 Конструктор и деструктор класса в C++3 Перегруженный конструктор класса4 Конструктор копирования5 Указатель this6 Перегрузка операторов в C++ (видео)7 Работа со строками в C++. Класс String C++ (видео)8 Дружественные функции и дружественные классы (видео)9 Статические поля и статические методы класса в C++ (видео)10 Наследование классов в C++ (ожидается)11 Указатели на объекты в С++Контейнеры STL (Standard Template Library): vector, list, queu…
    1 Введение. Массивы со статической и динамической размерностью2 Контейнеры STL3 Контейнеры STL: vector4 Контейнеры STL: list5 Классы string и wstrting6 Ассоциативные контейнеры STL7 Контейнер map8 Контейнер multimap9 Контейнеры set и multiset10 Алгоритмы11 Функциональные объекты12 Сортировка13 Сортировка структур14 Обобщённые численные алгоритмы15 Адаптеры STL16 Указатели в контейнерахАлгоритмы сортировки и поиска в C++ (Пузырьковая сортировка, Шейкер-сортировка, Сортировка выбором, и др.)Гостевые статьиСайт освещает основы программирования на языке C++, создан для начинающих программистов и желающих изучить программирование с нуля. Желаем вам приятного и легкого обучения! Изучайте основы программирования вместе с нами! Это реально освоить программирование с нуля – было бы желание! Присоединяйтесь!

  8. DoubleU Ответить

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

    Получение начального понимания языка программирования Python и общих методов программирования (2 выходных дня):

    Learn Python the Hard Way. Несмотря на название, это довольно простой способ, он делает изучение основных понятий очень легким, и большинство уроков займет менее 10 минут. Тем не менее, я обнаружил, что данный способ не работает для некоторых, более сложных тем, так что я рекомендую остановиться после урока 42 и двигаться дальше.
    Google’s python class. Читайте заметки и / или смотрите видео и делайте все упражнения, пока вы не будете выполнять их правильно — не подсматривая в ответы. Борясь с упражнениями, которые я постоянно делал неправильно было очень полезным для меня в качестве полученного опыта, и я узнал бы гораздо меньше, если бы я просто посмотрел на ответы и пытался убедить себя, что я понял упражнение.
    Эти два ресурса немного взаимозаменяемы. Я рекомендую делать первые несколько уроков из обоих чтобы увидеть, какой вам больше нравится. После того как вы закончили один из них, просмотрите в другом те понятия, которые усвоились не в полной мере, это хороший способ получить дополнительную теорию и практику.

    Получение начального понимания веб-фреймворка Django (1 выходной):

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

    Получение более глубокого понимания Python / общих концепций программирования (4-8 выходных дня):

    Udacity’s intro CS class. Udacity курсы, как правило, разделены на 7 сеансов занятий (2-3 часа за сеанс), которые вы можете сделать в своем собственном темпе. (Я большой поклонник педагогики Udacity и рекомендую класс среднего уровня программирования или класс веб-разработки, как последующие для прохождения в этом двухмесячном курсе обучения).
    Unit 1 of MIT’s intro CS course. Действительно полезны в обучении и на удивление легко усваиваются.
    Опять же, я хотел бы рекомендовал попробовать каждый из них и посмотреть, какой вам понравится больше. Я делаю оба, но это, наверное, перебор.

    Практика построения простых веб-приложений (2 выходных дня):

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

    Создайте свой прототип (2 выходных дня):

    Создание прототипа всего за 2 выходных дня? Да, вы будете смущены тем как он выглядит (я точно был), в этом весь смысл (перевод цитаты: «Если вы не смущаетесь первой версии вашего продукта, вы запустили его слишком поздно».
    Вот и все. 8 недель (или меньше) и вы ушли от ничего не зная о разработке программного обеспечения до рабочего прототипа. Не так уж и сложно, так ведь?

    Следующие шаги:

    Само собой разумеется, что существует огромная разница между относительно беглым объемом знаний, необходимого для создания простого прототипа (в разрезе данного поста) и объемом знаний и опыта, необходимые, для того чтобы стать действительно квалифицированным инженером-программистом.
    P.S. Ниже приведены несколько другие потенциально полезные ресурсы — пожалуйста, оставьте ссылки в комментариях, если у вас есть предложения по другим ресурсам, которые обучают программированию:
    Stanford’s intro CS courses
    Stanford’s iPhone development class
    Harvard’s intro CS course
    Codecademy
    Оригинал: How I Taught Myself to Code in 8 Weeks

  9. ты моя я твой Ответить



    Введение

    Что нужно, чтобы начать

    Урок 1. Первая программа на Си-шарп

    Урок 2. Переменные. Типы данных, константы

    Урок 3. Арифметические и логические операции

    Урок 4. Условные операторы. Тернарный оператор

    Урок
    5. Массивы в Си-шарп. Класс List

    Урок 6. Циклы в Си-шарп. Операторы break и continue

    Урок 7. Оператор цикла foreach в Си-шарп

    Урок 8. Функции в Си-шарп. Оператор return

    Урок 9. Работа со строками в Си-шарп. Класс String

    Урок 10. Обработка исключений в Си-шарп. Оператор try-catch

    Урок 11. Работа с файлами в Си-шарп. Классы StreamReader и StreamWriter

    Урок 12. Понятие объектно-ориентированного программирования (ООП). Классы и объекты

    Урок 13. Классы в Си-шарп. Объявление классов и создание объектов

    Урок 14. Методы в Си-шарп. Разница между простыми и статическими

    Урок 15. Конструкторы в Си-шарп. Оператор this

    Урок 16. Свойства в Си-шарп. Аксессоры get и set. Автоматические свойства

    Урок 17. Наследование в Си-шарп. Конструктор базового класса

    Урок 18. Массив указателей на базовый класс в Си-шарп. Операторы is и as

    Урок 19. Полиморфизм в Си-шарп. Что это такое?

    Урок 20. Виртуальные методы в Си-шарп. Переопределение методов

    Урок 21. Абстрактные классы, методы и свойства в Си-шарп

    Урок 22. Интерфейсы в Си-шарп. Множественное наследование

    Урок 23. Перегрузка методов в Си-шарп

    Урок 24. Инкапсуляция в Си-шарп. Модификаторы доступа

    Урок 25. Перегрузка операторов в Си-шарп

    Урок 26. Переопределение методов Equals и GetHashCode в Си-шарп

    Урок 27. Регулярные выражения в Си-шарп. Класс Regex

    Урок 28. Форматирование строк в Си-шарп. Метод String.Format

    Урок 29. Перечисления (enum) в Си-шарп

    Урок 30. Ссылочные типы и типы значений в Си-шарп. Ключевые слова ref и out

    Урок 31. Значение Null. Nullable-типы. Оператор ??

    Урок 32. Структуры в Си-шарп

    Урок 33. Сетевое программирование в Си-шарп

    Урок 34. Протокол HTTP в Си-Шарп. Классы HttpWebRequest и HttpWebResponse

    Урок 35. Протокол HTTP, метод POST и куки в Си-шарп

  10. VideoAnswer Ответить

Добавить ответ

Ваш e-mail не будет опубликован. Обязательные поля помечены *