Мой прогресс и достижения в разработке.

Главная Форумы Разработка игр Мой прогресс и достижения в разработке.

В этой теме 21 ответ, 2 участника, последнее обновление  coremission 19 час., 58 мин. назад.

  • Автор
    Сообщения
  • #5187

    InFallen
    Участник

    Добрый день!
    Если создатель данного форума будет не против, я буду в данной теме выкладывать свой путь в программировании и создании игр.

    Давайте познакомимся.

    Меня зовут Артем. Мне 27 лет. По работе с компьютерами связан последние 5-6 лет. Работаю системным администратором. В основном знаю такие вещи как Windows Server(AD DS, DHCP, DNS, GPO, RDP, IIS), Exchange Server, Linux CentOS(Apache, Nginx) и язык PowerShell(который выручал много раз для автоматизации процессов) также обладаю знаниями о технологии виртуализации на базе Vmware и Hyper-V. Пришел в данную сферу по собственному желанию, т.к. было интересно, много новой информации и интересные задачи. Опыта в разработке ПО у меня нет, языки программирования изучать не приходилось.
    В данный момент интересуюсь сменой профессиональной деятельности в сторону программирования и разработки.
    В связи с этим полез в Google и начал искать информацию по данной теме. Наткнулся буквально на первой странице на блог Сергея. И слава богу, а то пошел бы в GeekBrains. Огромная благодарность за эту статью.
    И продолжил читать блог и наткнулся на эту статью. Из нее понял, что нужно учить язык программирования, причем не приходят к таковой разработке игр, а именно для полноценного изучения языка, как инструмента для создания чего-либо. В этой же статье есть варианты книг, с которых лучше начинать. И В связи с этим у меня возник первый вопрос:

    1. В статье книга по C#5.0, как в данный момент уже C#7.0, есть ли какие-то глобальные различия в данных версиях? И подойдет ли для обучения книга по C#7.0?

    Также я начал уточнять информацию по данному языку у своих коллег, они разрабатывают расширения для Dynamics CRM, SharePoint и MS Office, по данной теме. Мне посоветовали ресурс ITVDN, отсюда второй вопрос:

    2. Кто-то пользовался данным ресурсом? Может у кого-то есть отзывы, т.к. в интернете я нашел мало информации о них.

    И отсюда же вытекает третий вопрос:

    3. Стоит ли вообще учить программирование по видео? Или все же делать упор на книги?

    С вопросами вроде все.
    Еще раз благодарю Сергея за его блог, очень помог разобраться, в себе и чего я должен добиваться.

  • #5188

    coremission
    Хранитель

    Привет, я просто счастлив! И огромное спасибо за то, что создали эту тему!

    По поводу книг по C#, мне кажется большой разницы не будет на начальных порах, скорее всего 7.0 от 5.0 отличается каким-нибудь удобным синтаксическим сахаром (я теперь совсем не слежу — перешел на C++).

    Если не программировали вообще — и 5.0 сгодится. Про ITDVN первый раз слышу, поэтому ничего не скажу. Мне кажется книги (троелсен, рихтер, скит) и официальная документация от Microsoft (MSDN) в случае веба — будут исчерпывающими источниками. Если игры на Unity решите делать, то документация от самих Unity Technologies вместо MSDN. Плюс когда будете гуглить как что-то сделать — будете натыкаться на полезные ответы на Stackoverflow от Джона Скита (это Чак Норрис в C#).

    Стоит ли учить по видео? Когда я учил C# хороших видео не встречал, сейчас возможно они есть. По С++ например я смотрел видео.

  • #5195

    InFallen
    Участник

    Ну надо было с чего-то начать, я начал с темы на форуме.
    Про книги вопрос был к тому, что в продаже найти С#5.0 уже невозможно, а цена на С#6.0 и С#7.0 не сильно отличается.
    Для начала думал не трогать ни веб, ни Unity. Хочу понять как с языком работать, с той же Visual Studio, т.к. в ней столько всего, что глаза разбегаются, или есть возможность работать с C# в других IDE?
    Начал смотреть видео на ITVDN, первые два в свободном доступе: рассказывают понятно, в первом же уроке создается первые проекты(консольное приложение «Hello World!», приложение Windows Form и Web страница с шаблона), показывают как работать с Visual Studio. Есть скачиваемые материалы к уроку, сама презентация, и те примеры какие делали на уроки, также рекомендуют литературу. Причем такую же что и в статье в блоге.
    Так что пока продолжу смотреть видео, а потом как приобрету книгу перейду на нее.

  • #5197

    coremission
    Хранитель

    Мне в университете советовали, когда начинаешь изучать программирование — вообще можно в блокноте код писать, IDE лучше не использовать,- нужно со структурами данных и алгоритмами разбираться, а потом уже IDE. Это очень полезный совет если вы хотите совсем в программиста переквалифицироваться, на каком бы языке потом не пришлось писать базовые знания — очень нужны.

    Я конечно, не призываю в блокноте писать все писать, но попробовать из консоли собрать проект — полезно бывает

  • #5198

    coremission
    Хранитель

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

  • #5199

    InFallen
    Участник

    Можно и в блокноте, тот же NotePad++ очень удобен в работе не раз помогал. Но для сборки нужен компилятор, в IDE-то он встроенный получается, использовать компилятор Microsoft.Net, расположенный по пути C:\Windows\Microsoft.NET\Framework\v4.0.30319 ?

    • #5206

      coremission
      Хранитель

      Да, примерно так это и работает, ставится IDE и комплиятор оттуда, отдельно его ставят на какие-нибудь CI сервера или какие-небудь Deploy’ные сервера.

  • #5201

    InFallen
    Участник

    Rider только платная версия, 30 дней триала дают и все.

  • #5207

    coremission
    Хранитель

    Тогда только студия community или express вроде есть

    • #5208

      InFallen
      Участник

      С компиляцией через командную строку разобрался, а то по началу запускал по данному пути: C:\Windows\Microsoft.NET\Framework\v4.0.30319 , а нужно было просто запускать командную строку, которая вместе с со студией устанавливается, она и exe-файл рядом с исходником сохраняет.

  • #5257

    InFallen
    Участник

    В продолжение темы, повезло приобрести две книги:
    1. Язык программирования C# 6.0 и платформа .NET 4.6 (Троелсен, Джепикс) — приобрел у товарища.
    2. C# 6.0. Справочник. Полное описание языка (Д. Албахари и Б. Албахари) — тот же товарищ подарил в придачу.

    В первую очередь очень удивился их размерам, сказать что книги большие ничего не сказать, это БОЛЬШИЕ книги.
    Про информативность второй книги ничего не скажу, т.к. к ней еще не прикасался, а вот про первую расскажу, хотя прочитал только Введение и первую главу:
    Очень подробно и самое главное интересно описываются все технологии, которые будут использоваться(при этом мы еще даже не знаем, как программировать и вообще что-либо делать).
    Приводимые примеры все понятны и легко усваиваются.
    Единственное не понял, почему так много информации лишней(хоть и интересной), т.к. я считал, что мне нужно изучения языка, а потом уже изучение каких либо технологий, где данный язык можно применять, а тут много разжевывают про работу CLR, CTS и CLS, еще один язык CLI. Как я понял это больше относится к описанию платформы .NET.
    Вроде про данную книгу больше ничего сказать не могу.

    Также заглянул на официальное руководство по языку у Майкрософта, тут уже интереснее:
    Сразу сходу, вот первая программа, вот так выглядит:
    // A Hello World! program in C#.
    using System;
    namespace HelloWorld
    {
    class Hello
    {
    static void Main()
    {
    Console.WriteLine(«Hello World!»);

    // Keep the console window open in debug mode.
    Console.WriteLine(«Press any key to exit.»);
    Console.ReadKey();
    }
    }
    }

    И инструкция как и что сделать в Visual Studio, а далее идет описание что в ней и за что отвечает.
    Единственное при описании метода Main не понял информацию про аргументы в таких конструкциях, как:
    1. static void Main(string[] args)
    {
    //…
    }

    2. static int Main(string[] args)
    {
    //…
    return 0;
    }

    Наверно данная информация будет идти далее.

  • #5258

    coremission
    Хранитель

    Привет) А мне стоит пояснять как-то или Вы сами прочитаете? 🙂
    Если будете какой-то блок формировать, вроде
    Вопросы
    1. В чем разница между static void Main и static int Main?
    2. Зачем программисту нужно знать про CLR и тп?

    то я могу 🙂

  • #5259

    InFallen
    Участник

    Ой. Благодарю за идею с блоками. Никогда блоги и никакие подобные вещи не вел, поэтому многих таких подробностей не знаю. В будущем буду выделять определенных вещи в блоки. Ну и как раз сформирую свой первый по предоставленному примеру.

    Вопросы
    1. В чем разница между static void Main и static int Main?(Если меня не подводит интуиция, то разница в возвращаемых значениях?)
    2. Зачем программисту нужно знать про CLR, CTS, CLI, CLS и подобные технологии, еще не приступая даже к собственно программированию?

  • #5260

    coremission
    Хранитель

    1. Верно, возвращаемое значение. В случае с main — а это входная точка программы, это значение возвращается Операционной системе, и может быть использовано тем, кто вызывает программу. Примерно так: В своей программе вызываете другую программу и после того как она завершилась спрашиваете у системы: а какой результат она вернула?
    2. Про среду выполнения и систему типов нужно знать. Точка. Это как ингридиенты и различная кухонная утварь для повара. Программист как и повар разбирается какие ингридиенты в рецептах применять (как типы использовать) и как их готовить (какие алгоритмы применить). CLR правда более похоже на «как устроена сковородка», а не «как приготовить», но понимание «зачем оно всё» потом придет 🙂

  • #5261

    InFallen
    Участник

    В общем пока буду читать и впитывать информацию, а потом уже на практике, что-то проясниться, а если не проясниться, придется заново впитывать информацию. Благодарю за ответ.
    Лишний раз прочитал про технологии:
    CLR — это исполняющая среда, в которой компилируются приложения написанные на языках совместимых с .NET(Здесь уже компилируется CIL код).
    CIL — это промежуточный язык для .Net Framework и входит в состав CLR.
    CTS — это спецификация, определяющая как типы данных должны быть определенны для выполнения в .NET.
    CLI — это набор общих правил для работы с .NET

    Т.е. как я понял данные действия происходят так:
    1. Я пишу код на C#.
    2. Он компилируется в CIL-код.
    3. CLR компилирует CIL-код в .exe

    Если вдруг я где-то неправ, поправьте меня.

  • #5262

    coremission
    Хранитель

    3й шаг немного не такой: CIL во время выполнения компилируется, тоесть обычно CIL в .exe и находится. Но есть и оффлайн компилятор (никогда им не пользовался)

  • #5264

    InFallen
    Участник

    Все понял, т.е. получается CIL-код уже находится в .exe.
    Вопрос
    А при запуске среда .NET его компилирует его с помощью JIT в нужный код под нужную платформу?

  • #5273

    InFallen
    Участник

    Вот этот рисунок все разъяснил, получается что мой исходных код на C#, компилируется в сборку .exe в которой находят CIL-код, метаданные и манифест. Далее при запуске данной сборки, среда .NET с привлечением «Библиотек базовых классов» переводит код из .exe файла в понятные платформе инструкции и выполняет их.

    Подтвердите мою мысль или укажите где я не прав?

  • #5280

    coremission
    Хранитель

    В еxe коды методов в CIL, в рантайме если метод еще не компилировался — компилируется в нативный код и исполняется. При последующих вызовах не перекомпилируется, используется уже скомпилированный.

    • #5281

      InFallen
      Участник

      Благодарю, разобрался, буду дальше грызть гранит =)

  • #5412

    InFallen
    Участник

    Добрый день, решил резюмировать о своих достижениях по изучению программирования и в частности языка C#.
    Удивился сам, но я так не учился со времен техникума. С удовольствием втянулся в учебу и голова сама требуется знаний.
    За прошедшую неделю изучил:
    1. Понятия CTS, CLR, CIL-код(просмотр кода с помощью утилиты ildasm.exe)
    2. Какие существуют IDE для работы с платформой .NET
    3. Структуру простой программы: метод Main, его вариации и обработку его аргументов.
    4. Базовые знания класса System.Console, который позволяет работать с консолью и производить операции во вводу-выводу данных на консоль и форматирование данного вывода.
    5. Базовые знания о системных типах данных, их ключевых словах
    6. Работа с переменными: инициализация переменных, создание переменных операцией new, основные арифметические действия с переменными, как узнать свойства переменных(такие как минимальное или максимальное значение), преобразование переменных в строку(метод ToString()) или строки в переменную(метод Parse())
    7. Тип данных System.Boolean, у которого всего два значения true и false, также его свойства которые возвращают true или false в виде строки(TrueString и FalseString)
    8.Тип данных System.Char, с помощью которого можно хранить одиночные символы в переменных, а также методы присущи данному типу, такие как IsDigit(), IsLetter(), IsWhiteSpace(), IsPunctuation().
    9.Тип данных System.DateTime и System.TimeSpan, которые позволяют работать с датой и временем соответственно.
    10. Тип данных BigInteger из пространства имен System.Numerics, который позволяет работать с огромными числовыми значениями.
    11. Работа со строковыми данными, форматирование при выводе(методы ToUpper() и ToLower()), возвращение длины строки(свойство Length), проверка на содержание(метод Constains()), изменение части строки(метод Replace()), конкатенация строк, управляющие последовательности, определение дословных строк(оператор @), сравнивание строк, неизменность строк(при изменении строки создается новая строка), интерполяция строк.
    11. Тип System.Text.StringBuilder, который используют вместо типа string при работе с большими объемами текста из-за его расширяемости.

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

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

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

    Ну и напоследок…
    ВОПРОСЫ.
    1. Стоит ли перекладывать задачи из учебников на код?(Для практики языка программирования, запоминания синтаксиса, конструкций).
    2. Нужен совет по английскому языку, самостоятельная учеба или с преподавателем, сидеть прям зубрить? или потихоньку переводить небольшие статьи и учить грамматику?

    • #5421

      coremission
      Хранитель

      1. Привет, писать код, разумеется — да. Отлаживать, модифицировать и играть с ним.
      2. Как-то давно писал целую статью про это: Как учить английский?

Для ответа в этой теме необходимо авторизоваться.