Результати пошуку за запитом: c starter
7 найкращих ігор, написаних на Unity
Автор: Влад Сверчков
Добридень, дорогі читачі блогу ITVDN!
Тема комп'ютерних ігор часто опиняється в епіцентрі багатьох обговорень. На сьогоднішній день ігри є свого роду видом мистецтва, який має гіллясту класифікацію та різні горизонтальні і вертикальні поглиблення, подібно до інших видів творчої діяльності.
Як живопис, скульптура, фотомистецтво – ігри також мають свій жанр, котрий викликає у нас різні емоції та відчуття. Одні підносять сюжети, які захоплюють дух, інші змушують вирішувати головоломки, треті спрямовані на те, щоб полоскотати нерви. Кожна людина незалежно від віку та особистих переваг може знайти собі відповідний ігровий екземпляр.
Для того, щоб реалізувати свої ідеї та концепції у відеогрі, розробники використовують безліч інструментів: мови програмування, знання математики, фізики та англійської мови, системи контролю версій, а також ігровий рушій – фундамент будь-якої гри. Саме на останньому ми робимо акцент в даній статті.
Більш детально тему розробки ігор було розкрито в статті “Як стати розробником ігор”. Якщо вам цікаво дізнатися, в чому специфіка роботи гейм девелоперів, як вони сходять на ігровий Олімп і яким набором технологій при цьому озброєні, переходьте за посиланням вище – ви отримаєте відповіді на свої запитання.
Отже, ігровий рушій – це водночас інструментарій для створення гри та її базове програмне забезпечення; кілька підсистем, які мають працювати разом, щоб на виході отримати гру. У ці підсистеми входять рушії рендерингу, анімації, фізики, звуку, система скриптів, штучний інтелект, мережевий код та багато інших складових. Одним із найпопулярніших рушіїв є Unity (читається як "юніті") – кросплатформний продукт компанії Unity Technologies, що дозволяє створювати додатки більш ніж на 25 різних платформах. Цей перелік включає персональні комп'ютери (Windows, macOS, Linux), мобільні пристрої (Android, iOS), консолі (PlayStation, Xbox, Switch тощо), VR (Virtual Reality) та інші пристрої.
Unity можна назвати найбільш щедрим ігровим рушієм. І не лише тому, що на ньому випущено справді багато ігор різних жанрів під безліч платформ, а й за його безкоштовну базову версію. Unity значно зменшує трудові та грошові витрати розробників. Рушій порівняно простий у використанні для будь-якого девелопера-початківця, але при цьому не відстає від технологій поточного часу. Ця якість принесла Unity велику популярність серед інді-розробників. Однак і у колі великих студій його також використовують.
Давайте розглянемо ТОП-7 найкращих ігор на Unity, щоб переконатися в силі та здібностях даного рушія.
Hearthstone: Heroes of Warcraft
Карткова онлайн-гра за мотивами всесвіту Warcraft. Її суть полягає у віртуальних битвах один з одним за допомогою колод карт з покроковою системою передачі ходів між опонентами протягом матчу.
До виходу Hearthstone поняття “карткова гра” у цифровому середовищі сприймалося досить холодно. Багатосторінковий перелік правил, маса перевантажених механік, загальна недружелюбність до гравця – це спадщина попередніх екземплярів жанру, стикатися з яким середньостатистичному користувачеві не дуже й хотілося. Саме тому реліз альфа-версії Hearthstone сколихнув ігрову спільноту, викликавши велику увагу до гейм-продукту. Його відносна простота та захоплюючий ігровий процес не лише повернули надію гравцям-ветеранам, а й привели нову аудиторію. Можна сказати, що в жанрі карткових ігор відкрилося друге дихання.
Hearthstone: Heroes of Warcraft неодноразово нагороджувалася преміями в різних номінаціях, у тому числі: “найкраща мобільна гра”, “найкраща стратегічна гра”, “найкраща багатокористувацька онлайн-гра”. Більше того, вона стала однією з провідних кіберспортивних дисциплін у своєму жанрі.
Cities Skylines
Містобудівний симулятор, який спрямований на забудову та розвиток власного міста. Гра примітна тим, що крім архітектури необхідно займатися оподаткуванням, організовувати роботу міських служб та громадського транспорту, підтримувати рівень бюджету міста, населення, здоров'я, щастя, зайнятості, стежити за забрудненням довкілля, автотрафіком та іншими елементами гри. Підтримати розповсюдження парків, заборонити куріння, ввести закон про економію електроенергії — вам доступна безліч важелів управління вашим містом.
Також у гру вбудований API для створення модифікацій мовою програмування C#, що дозволяє гравцям додавати нові моделі будівель та транспорту, вносити свої корективи у процес гри. Наприклад, можна збільшити допустиму ігрову зону, змінити ігрову перспективу на перспективу від першої особи, автоматизувати деякі елементи гри.
Cuphead
Комп'ютерна гра, яка поєднує в собі жанри run and gun та shoot 'em up. Її головною особливістю є візуальна складова. Працюючи над стилістикою Cuphead, канадські інді-розробники надихалися роботами аніматорів 1930-х років, внаслідок чого графічно гра дуже відрізняється від будь-яких інших.
Cuphead анімована повністю на папері як справжній мультфільм тих часів. Комп'ютер був використаний лише для розмальовки ескізів, в той час як саме життя намальованим героям дали руки аніматора, які за допомогою олівця змалювали велику кількість аркушів паперу.
Однак Cuphead сподобалася гравцям не лише завдяки мальованій анімації. За мультяшною естетикою ховається шалений хардкор — платформер просто створений для того, щоб перетворювати голови геймерів на киплячий чайник. Невелика кількість життів та різноманітність випробувань/босів розставлять усі крапки над “i”. Навіть запросивши у гру свого друга, не сподівайтеся на поступки з боку гри.
Pillars of Eternity
Ізометрична партійна рольова гра, яка сповідує принципи "старої школи" і є духовною спадкоємицею гучних рольових ігор минулого: Baldur's Gate, Planescape: Torment та Icewind Dale. Pillars of Eternity не тільки нічим не поступається своїм попередникам із двохтисячних, а й привносить зручну сучасну механіку. Розроблена компанією Obsidian Entertainment, на рахунку якої такі відомі проєкти, як: Fallout: New Vegas, Neverwinter Nights 2, Star Wars: Knights of the Old Republic II, The Outer Worlds та інші. Всі необхідні грошові витрати на створення гри були покриті за допомогою краудфандингової платформи Kickstarter — в концепцію гри повірили вірні шанувальники творчості Обсидіан та фанати рольових ігор.
За допомогою Unity розробникам вдалося створити деталізований та пропрацьований світ, який високо оцінили як критики, так і геймери. Рушій дозволив дбайливо перенести старі механіки на нову платформу, при цьому відшліфувавши всі гострі кути, які були присутні в іграх-побратимах кінця дев'яностих та початку нульових. Звичайно, Pillars of Eternity не ідеальна, проте вона довела, що класні рольові ігри зі старим духом і водночас сучасною оболонкою можуть існувати та бути гарним прикладом для наступних екземплярів цього жанру.
Pokemon Go
Мобільна гра, яка у 2016 році прогриміла на весь світ. Їй присвячувалися репортажі новин у багатьох країнах, включаючи США, Росію, Україну тощо. Платформа Unity забезпечила вихід Pokemon Go як під Андроїд, так і під iOS. Грі вистачило лише одного тижня, щоб стати всесвітньо відомою.
Pokemon Go – це рольова багатокористувацька гра для мобільних пристроїв, що використовує технологію доповненої реальності, яка "викликає" віртуальних покемонів на певні ділянки реальної місцевості. Щоб побачити дане створіння і спіймати його, необхідно зайти в гру і направити камеру свого смартфона/планшета на місце присутності істоти. Самі покемони переміщуються ігровою картою в той час, як ви рухаєтеся у реальному світі. Таким чином, гра не тільки демонструє досягнення сучасних технологій доповненої реальності, а й мотивує своїх гравців на підтримку фізичної активності.
Subnautica
Гра на рушії Unity, розроблена інді-студією Unknown Worlds Entertainment у жанрі пригодницької гри та симулятора виживання з відкритим світом. Дуже тепло прийнята як критиками, так і гравцями. На Metacritic – популярному сервісі, який збирає рецензії до різних музичних альбомів, ігор, фільмів, ТВ-шоу, DVD-дисків та мобільних ігор – середня оцінка ПК-версії від критиків – 87 із 100 (39 видань висловили свою думку), а від користувачів – 8.5 із 10 (806 гравців висловили свою думку).
Геймплей гри побудований навколо виживання на барвистій океанічній планеті серед безлічі недружніх істот, куди герой потрапив у результаті аварії космічного корабля. Для різноманітності контенту та надання йому більшої кількості механік, в гру було введено зручну систему крафту. Не забули розробники і про сюжетну складову, яка здатна якщо не здивувати, то утримувати гравця в інтризі до самої розв'язки. Проте головною особливістю Subnautica було саме дослідження підводного світу, сповненого таємниць та небезпек. Перегляньте огляди на неї і ви дізнаєтеся, наскільки комплексну, багатогранну і при цьому красиву гру можна створити з використанням Unity.
Kerbal Space Program
Цікавий проєкт на Unity, котрий являє собою космічний симулятор. Жанр гри – пісочниця, в якій вам слід спорудити свій космодром, побудувати ракету і запустити її в космос. Обираєте цілі, збираєте літаючий апарат необхідної конфігурації, злітаєте, вирушаєте в якусь цікаву точку космосу, здійснюєте свої дослідження – і назад додому.
Звісно, не все так просто. Щоб здійснити задумане, вам потрібні хоча б поверхневі знання в області фізики, інакше ваша конструкція навіть на сантиметр не підніметься. Також не обійтися і без кмітливості. Конструювання ракети, вирішення питань паливного постачання, акумуляція електроенергії в космічному просторі та інше — іграшка для тих, хто не боїться експериментувати та кидати собі виклики. Створюючи її, розробники хотіли зробити не лише головоломку для аерокосмічних любителів, а й популяризувати наукову та інженерну діяльність у широкого загалу. Чудовий вибір для тих, хто бажає підвищити свою ерудованість.
Підсумки
Як ви помітили, ігровий рушій Unity демонструє чудові показники у створенні абсолютно різнополярних гейм-продуктів. Містобудівні симулятори, доповнена реальність на вашому смартфоні/планшеті, хардкорні ігри в стилі ретро-мультиків, підводні пригодницькі пісочниці, симулятори з великим акцентом на фізику та кмітливість, карткові ігри та ізометричні рольові стратегії... Це далеко не повний перелік жанрів, в яких Unity себе чудово зарекомендував. Щоб створювати захоплюючі і затягуючі ігри, необов'язково мати знання С/С++.
Якщо вас цікавить гейм індустрія і ви хочете пов'язати свою професійну діяльність з розробкою ігор, пропонуємо вам опанувати спеціальність Unity/Game Developer, яка доступна на ITVDN у форматі записаних відео уроків. Обов'язкова програма навчання включає наступні відео курси:
Unity Starter
Unity Essential
Unity Advanced
Основи використання Git
Unity User Interface
Крім цього, програма містить прикладні відео курси, в яких автор демонструє створення ігор, аналогічних таким загальновідомим, як: Need For Speed, Pokemon Go, Counter Strike, Agar.io тощо. Також в курсі приділяється увага створенню ігор VR (віртуальна реальність) та модифікації вже існуючих (як, наприклад, GTA V).
Для того, щоб створювати унікальні відеоігри з добре пропрацьованим геймплеєм, необхідно вивчити мову програмування C#. Безумовно, розробляти ігри можна, знаючи лише Unity, проте щоб внести щось своє до гри, потрібна C#. Ця мова є однією з найлегших та найзручніших у вивченні для новачків. ITVDN має невеликий “чит” для тих, хто хоче її опанувати – відео курси від Олександра Шевчука, експерта у галузі побудови архітектури інформаційних систем, бізнес-аналізу та управління IT-проєктами. Цей автор є одним із найулюбленіших серед наших студентів. Його манері викладання складно знайти рівних, як і рівню зрозумілості записаних ним уроків.
Нещодавно Олександр Шевчук випустив новий відео курс "Процедурне програмування мовою C#", який є оновленням курсу "С# Стартовий". Обираючи навчання у даного автора, ви досягнете дзену C# у максимально зрозумілій та мотивуючій формі, котру складно відшукати в інтернет-просторі. Поєднайте отримані знання з відео курсами спеціальності Unity/Game Developer та отримайте солідний інструментарій розробки відеоігор, з яким зможете підкорювати будь-які вершини ігробудівництва.
Якщо у вас виникли зауваження або побажання до статті, сміливо залишайте їх у коментарях.
Бажаємо успіхів та невичерпної мотивації на шляху до ваших цілей!
Залишайтеся з ITVDN!
Що таке нативні та кросплатформні програми? Плюси і мінуси.
Автор: Армен Маїлян
Что такое нативные приложения?
Что из себя представляют кроссплатформенные приложения?
Какие инструменты для разработки кроссплатформенных приложений применяют чаще всего?
Преимущества и недостатки нативного подхода
Преимущества и недостатки кроссплатформенных приложений
Вывод
Мировая статистика использования смартфонов показывает абсолютное преобладание всего двух мобильных операционных систем. Так, по данным портала statista.com, во втором квартале 2018 OS Android была установлена на 88% всех используемых смартфонов, а iOs – на 11.9%. Данные портала netmarketshare.com, в свою очередь, показывают на апрель 2019 для OS Android – 69.63%, а для iOs - 28.50%.
По состоянию на март 2019 в Google Play Store находилось более 2 600 000 приложений. В Apple App Store, по данным на июль 2018 – 2 450 220 приложений. В течение последних лет количество доступных приложений растет на сотни тысяч в год. По прогнозам statista – к 2020 году объем рынка мобильных приложений приблизится к 190 млрд $. При таком, постоянно растущем количестве конкурентов, перед разработчиками мобильных приложений встает вопрос - какой подход использовать в разработке, чтобы новые, конкурентоспособные приложения:
разрабатывались быстро;
получались качественными и надежными;
легко обновлялись и поддерживались;
легко задействовали все необходимые возможности платформы.
Фактически, рынок заставляет разработчика делать выбор между разработкой кроссплатформенных приложений и разработкой нативных приложений. Рассмотрим детальнее, что представляет из себя каждый из указанных подходов.
Что такое нативные приложения?
Нативные приложения (от англ. native - родной) разрабатываются под конкретную аппаратно-программную платформу и пишутся на языках, созданных для данной платформы. И iOs, и Android имеют свои SDK (от англ. software development kit — набор средств разработки) и свой стек технологий, завязанные на определенный язык программирования. Например, родными языками для Android являются Java и Kotlin, для iOS, соответственно - Swift и Objective-C.
Нативные приложения создаются специально для запуска на целевой платформе - с поддержкой всех нативных технологий и аппаратных возможностей конкретной платформы.
Что из себя представляют кроссплатформенные приложения?
Как следует из названия, кроссплатформенность подразумевает создание приложений, которые могут работать в различных операционных системах. После написания кода приложения его можно развернуть на разных устройствах и платформах, не беспокоясь о проблемах несовместимости. Это универсальный подход, который широко используется для экономии времени и денег на разработку. Часто для этого используются специализированные кроссплатформенные фреймворки.
Примером такой разработки является применение фреймворка Xamarin для создания приложений, работающих не только на Windows. Благодаря использованию Mono (опенсорс реализации платформы .Net), проекты, написанные на C#, успешно запускаются на Unix-like системах – iOs, Android, Linux.
Какие инструменты для разработки кроссплатформенных приложений применяют чаще всего?
Ссылаясь на статистику appfigures.com можно выделить такие инструменты:
Как мы видим наиболее часто применяемым инструментом разработки кроссплатформенных мобильных приложений на конец 2017 года был Cordova – 39.89%. Вторым по частоте применения инструментом является Unity – 30.93%. Третьим – Adobe Flash с 10.39%. Следом идут Cocos2D – 9.37%, Xamarin – 4.5%, Appcelerator – 3.79%, Corona – 2.68%, React Native – 1.85%.
Итак, стоит ли вам инвестировать в разработку отдельных нативных приложений на несколько платформ сразу, или убивать двух зайцев одним выстрелом, разрабатывая кроссплатформенные приложения? Или может стоит вообще сосредоточиться только на одной платформе и не обращать внимание на другую, пока не достигнут успех среди приложений первой?
По данным портала appfigures.com на начало 2018 года количество приложений, присутствующих на обеих популярных платформах, было вполне ощутимым:
450 тысяч приложений на обеих платформах. Это более 28% приложений в Apple App store и 14% в Google Play Store. Это выглядит достаточно весомой частью, чтобы задуматься об присутствии на обеих платформах и попытке экономии используя кроссплатформенную разработку.
По данным того же портала, многие уже существующие приложения расширяют свой рынок, выходя, со временем, на другой платформе. При че чаще приложения выходят дополнительно на Android, выпускаясь изначально под iOs.
Можно также наблюдать тенденцию к снижению процента кроссплатформенных приложений за 2016 – 2017 годы.
Так стоит ли потратить деньги на разработку двух нативных приложений, идеально соответствующих каждой платформе, или есть смысл сэкономить ресурсы и получить одно – кроссплатформенное?
Давайте рассмотрим плюсы и минусы каждого из указанных подходов.
Преимущества и недостатки нативного подхода
Плюсы нативных приложений
Высокая производительность
Поскольку технологии, используемые при разработке платформозависимых приложений, напрямую связаны с этой платформой, собственный нативный код имеет прямой доступ ко всем функциям операционной системы.
Это, более простое взаимодействие приложения с собственными функциями мобильных устройств, повышает общую производительность приложения, особенно при представлении графического или мультимедийного контента.
Следовательно, создание нагруженных приложений с использованием нативного кода может снизить время отклика, вероятность сбоев и зависаний.
Максимальное использование возможностей платформы
Нативные приложения задумываются и разрабатываются, чтобы решать конкретные задачи на конкретной платформе. Это приводит к лучшему соответствию возможностей приложений аппаратным возможностям устройств, включая Bluetooth, NFC, камеру, GPS и т. д.
Эта соответствие необходимо, когда приложение должно использовать такие данные, как физическое и географическое местоположение и др.
Лучший пользовательский интерфейс
Поскольку нативные приложения напрямую интегрируются с мобильной операционной системой, воспринимая и используя все доступные возможности «железа», пользователи могут перемещаться по привычному интерфейсу без особых хлопот, что приводит к положительному пользовательскому опыту (UX) и стабильному повторному использованию. К примеру сейчас, при большом количестве разнообразных вариантов разрешений экранов смартфонов очень важно иметь приложение, оптимизированное под такой экран, чтобы пользователю было удобно этим приложением пользоваться.
Лучшее позиционирование в магазинах приложений
Качество пользовательского опыта является важным рейтинговым показателем в магазинах приложений. Если приложение имеет высокую оценку пользовательского опыта, оно будет более высоко оценено магазином приложений, что ведет к большему числу рекомендаций для разной аудитории и увеличению доходов от приложения, соответственно.
Есть предположение, что в магазинах приложений сами механизмы ранжирования будут лучше представлять приложения именно нативные для платформы, из-за их заведомо более высокой производительности и простоты использования.
Минусы разработки нативных приложений
Дороговизна и затраты времени на разработку
Без сомнения, создание отдельных приложений сразу под каждую из нескольких операционных систем может значительно продлить процесс разработки. Один и тот же программный код не может быть развернут на разных платформах, и программистам потребуется больше времени для преобразования и перезаписи кода, что увеличивает затраты и время разработки.
Если компания хочет для каждой из платформ создавать отдельные приложения, она может оказаться вынуждена нанять дополнительных программистов-специалистов. Например, один разработчик будет сосредоточен на разработке приложений для iOS, а другой - на разработке приложений для Android, что еще больше увеличивает расходы.
Несовместимость с другой мобильной операционной системой
Вам придется заранее согласиться с несовместимостью вашего приложения с другими ОС. Когда разрабатывается приложение под конкретную ОС, его разработчики используют язык, специфичный только для этой операционной системы: например, Objective-C или Swift - для iOS, для различных мобильных устройств на базе Android - Kotlin и Java. В этом контексте нативное приложение, которое изначально написано для iOs, не будет совместимо с устройствами на базе Android и наоборот.
Упущенные возможности
Разработка приложений, ориентированных только на одну платформу, может привести к упущенным возможностям. Особенно если другие платформы заранее не принимаются во внимание. Заведомое сокращение целевого рынка может привести к потере дохода.
Плюсы и минусы кроссплатформенных приложений
Как следует из названия, кроссплатформенность влечет за собой создание приложений, которые могут работать в различных операционных системах. После написания кода приложения его можно развернуть на разных устройствах и платформах, не беспокоясь о проблемах несовместимости. Это универсальный подход, который широко используется для экономии времени и денег.
Вот некоторые преимущества и недостатки использования кроссплатформенного подхода в разработке мобильных приложений.
Плюсы кроссплатформенных приложений
Один код доступен для повторного использования на других платформах
Основным преимуществом кроссплатформенной разработки мобильных приложений является тот факт, что один и тот же код может использоваться на разных мобильных платформах. В отличие от разработки нативного приложения, для кроссплатформенного приложения не требуется использование отдельного технического стека для каждой операционной системы.
Повторное использование кода позволяет легко развертывать приложение на другой платформе, так как возможности приложения, реализованные на одной платформе, будут работать и на других платформах.
Разработка кроссплатформенных приложений экономически эффективна
Одна команда может реализовать нужную идею сразу на всех платформах, используя единый технологический стек. Это приводит к меньшим затратам ресурсов.
Простое и быстрое развертывание
Разработчикам кроссплатформенных приложений не нужно изучать несколько технологических стеков различных платформ перед созданием своих приложений, им нужно хорошо освоить один стек разработки и особенности его применения.
Поскольку нет необходимости создавать разные кодовые базы, начальное развертывание на целевых платформах происходит намного быстрее.
Кроме того, будущие изменения в приложении могут выполняться одновременно, без внесения индивидуальных изменений на каждой платформе.
Кроссплатформенные приложения покрывают более широкую аудиторию
Кроссплатформенные приложения предлагают разработчикам больше возможностей для охвата более широкой аудитории, поскольку такие приложения достигают пользователей всех типов и мобильных устройств, независимо от их операционной системы. Это значительно рентабельнее для бизнеса, чем присутствие только на одной платформе.
Кроссплатформенные приложения допускают одинаковый интерфейс и UX
Тогда как производительность важна для любого мобильного приложения, его внешний вид (UI) и ощущения (UX) так же важны. Использование единой общей команды разработчиков и единого кода позволяет компаниям использовать одинаковый внешний вид приложения на всех платформах. То есть один и тот же пользовательский интерфейс и UX будет одинаково выглядеть на всех платформах.
Недостатки кроссплатформенной разработки приложений
Кроссплатформенные приложения не являются такими гибкими, как нативные приложения
Хотя задачи приложения будут реализовываться на всех платформах, скорее всего вы не сможете адаптировать готовое приложение для использования максимальных возможностей каждой из платформ.Работа с унифицированным стеком технологий не обеспечит такой же гибкости настройки и оптимизации, как применение стека технологий, индивидуального для каждой ОС.
Кроссплатформенные приложения не работают так же хорошо, как нативные приложения
Использование одного универсального стека технологий приносит в жертву гибкость. Однако потеря гибкости в разработке будет означать потерю возможности улучшить производительность. Поскольку кроссплатформенные приложения отказываются от некоторой гибкости, эти приложения не будут работать так же хорошо, как нативные приложения.
Возможное несоответствие UI в различных платформах
Внешний вид интерфейса приложения и правильная настройка UI для соответствия функционала в обеих системах может доставить проблем. К примеру, у каждой системы имеются свои требования к дизайну элементов UI. В определенных случаях эти требования могут оказаться взаимоисключающими.
Отправка кроссплатформенных приложений в соответствующие Магазины приложений может иметь сложности.
Механизм добавления вашего приложения, являющегося кроссплатформенным, в Apple App Store и в Google Play Store будет отличаться. Требования этих магазинов приложений к представленным у них продуктам различны. Прохождение всех проверок и выполнение всех правил для соответствия обоим магазинам будут вызывать определенные сложности.
Вывод
Подведем краткие итоги. Попробуем сузить наш достаточно сложный выбор между нативной разработкой и кроссплатформенной.
Обратите внимание на стратегию продвижения приложения и на его предполагаемый функционал. Если вам сразу нужен будет охват большей аудитории и у приложения функционал не является сложным - проще и дешевле воспользоваться кроссплатформенным подходом. Если вашему приложению необходимо использовать специфические особенности платформы, при этом нет необходимости в одновременном присутствии сразу и в Apple App Store, и в Google Play Store – разрабатывайте под выбранную платформу нативное приложение. И если ваши успехи покажут вам, что можно захватывать новый рынок – у вас уже будут средства на разработку под вторую платформу. Другие промежуточные варианты будут компромиссами и могут склонять чашу весов как к нативным, так и к мультиплатформенным решениям.
Используйте выбранный вами подход для построения качественных и полезных приложений. С нашей стороны можем порекомендовать ряд видеокурсов.
Для создания кроссплатформенных игр очень удобным инструментом является Unity и на ITVDN вы найдете серию видео курсов по разработке игр на Unity.
Если вы хотите попробовать себя в разработке кроссплатформенных приложений с использованием такого инструмента, как Xamarin, вам могут оказаться полезными такие уроки на портале ITVDN.com, как Xamarin. Легкий старт и Разработка пользовательского графического интерфейса (GUI) на C# под Android (Xamarin).
Если вы планируете в дальнейшем разработку нативных приложений под Android, мы рекомендуем начать с таких курсов - Java Starter и Java Essential.
Также смотрите на ITVDN видео курсы по специальности Android Developer и iOS Developer.
Путівник ITVDN за версткою сайтів
Автор: Редакция ITVDN
Верстальщик сайтов – это специалист, который занимается созданием веб-страниц. Его работа заключается в том, чтобы при помощи различных элементов языка разметки веб-страницы перевести графические элементы дизайна (рисунки, шрифты, таблицы и т.д.) в понятный для браузера формат, то есть сверстать сайт.
Работа верстальщика не очень сложная, но требует определенного уровня подготовки и большого внимания к деталям. На хороших специалистов практически постоянно существует большой спрос.
На ITVDN все, кто заинтересован в изучении технологий для верстки веб-страницы, найдут необходимые видео уроки и материалы. А также курсы для «прокачки» практических навыков верстки сайта и Тренажер для навыков написания кода. Курсы записаны сертифицированными разработчикам и тренерами Microsoft.
ITVDN рекомендует проходить обучение в такой последовательности:
HTML & CSS, автор Александр Петрик
How to HTML & CSS, автор Сергей Раздобудько
Photoshop. Базовый курс для web-разработчика, автор Сергей Воропаев
JavaScript Essential, автор Дмитрий Охрименко
How to JavaScript, автор Валерия Прокопенко
Основы использования Git, автор Александр Пономаренко
Twitter Bootstrap 3, автор Сергей Швайцер
Создание адаптивного сайта с Bootstrap 3, автор Александр Пономаренко
WordPress Starter, автор Артем Кондранин
Практический курс по верстке лендинга, автор Сергей Рубец
HTML5 & CSS3, автор Дмитрий Охрименко
Также вас могут заинтересовать записи вебинаров ITVDN (все в свободном доступе):
Верстаем сайт правильно
Photoshop: зачем он нужен веб-разработчику?
WordPress: создаем блог за час
Скоростная верстка, или как упростить себе жизнь с Bootstrap 3
Интеграция верстки лендинга на CMS WordPress
Адаптивный веб-дизайн: типы адаптивных макетов
Семантика HTML5, создаем змейку, используя canvas
Что надо знать для веб разработки. (реальная разработка + обзор вакансий)
Создание веб-приложения с Angular 1.5, Firebase и Gulp
Как решить проблемы верстки с помощью HTML5 Web Components
Если вы планируете свое обучение с нуля, тогда наилучшим решением будет приобретение подписки ITVDN сроком от 3 месяцев. Это оптимальный срок, за который вы сможете научиться создавать красивые сайты, мастерски владея современным инструментарием верстальщика.
ТОП-7 популярних IDE для програмування на С++
Автор: Армен Маїлян
Visual Studio
Qt Creator
CLion
Eclipse
Xcode
Code::Blocks
NetBeans
Відмінності між IDE та текстовим редактором
Рейтинг IDE для С++ за даними Standard C++ Foundation
Рейтинг IDE серед користувачів Reddit
Рейтинг IDE для C++ від компанії JetBrains
Рейтинг найкращих середовищ розробки для C/C++ IDE від G2 Crowd
Висновок
У роботі будь-якого сучасного розробника програмного забезпечення є інструменти, які стали практично обов'язковими для щоденного застосування. Якщо говорити про програмування мовою C++, таким інструментом, насамперед, буде звичайно інтегроване середовище розробки або IDE (Integrated Development Environment). Звичайно, досвідчений програміст може обійтися і без використання IDE, але це істотно позначиться на таких моментах, як швидкість розробки, якість коду і, звичайно ж, зручність самого процесу написання цього коду.
Сьогодні ми розглянемо ТОП-7 найкращих середовищ програмування на C++. Це найчастіше використовувані інструменти від різних компаній та спільнот.
Відмінності між IDE та текстовим редактором
Для початку нагадаємо різницю між текстовим редактором, який використовується для написання програм, і повноцінною IDE. Якщо спростити, текстовий редактор – це програма, за допомогою якої розробник взаємодіє безпосередньо з кодом як з текстом. Використовуючи клавіатуру, за допомогою текстового редактора розробник вводить символи та ключові слова мови програмування, описуючи цими словами якийсь алгоритм, зрозумілий надалі комп'ютеру. Код, написаний на C++ за допомогою текстового редактора коду, потрібно буде відправити на компілювання в іншу програму – компілятор, який не входить до складу текстового редактора.
Інтегроване середовище розробки, у свою чергу, є комплексом окремих інструментів розробника, який дозволяє не тільки написати код програми, але й скомпілювати цей код у готовий додаток, провести тестування цієї програми, пошук помилок, рефакторинг та інші дії. До складу сучасних IDE як окремі елементи вже входять:
текстовий редактор;
компілятор (або інтерпретатор – для інтерпретованих мов програмування);
відлагоджувач;
система управління версіями;
інші інструменти.
Сучасні IDE можуть суттєво розширювати свій функціонал завдяки різним плагінам. Варто зазначити, що деякі текстові редактори (наприклад Vim, Visual Studio Code, Emacs), завдяки доступним плагінам, також розширюють свій функціонал, доводячи його до практично IDEшних можливостей. Однак це все ж таки два різних інструменти розробника. Текстовий редактор призначений скоріше для внесення дрібних змін до коду окремих файлів майбутньої програми. IDE, у свою чергу, працює з програмою комплексно, розглядаючи її в цілому як проект або набір проектів, а не як окремі текстові файли з кодом. Звідси й різниця у доступних можливостях цих інструментів.
Рейтинг IDE для С++ за даними Standard C++ Foundation
Ознайомимося з даними опитування, проведеного серед 3240 розробників у лютому 2018 року організацією Standard C++ Foundation (Некомерційна організація з Бйорном Страуструпом у якості одного з керівників. Метою організації є підтримка спільноти розробників програмного забезпечення C++). За даними цього опитування, розробники на C++ виділили такі засоби розробки, як найчастіше використовувані:
Перше місце серед IDE у Visual Studio з 55.28% розробників, що використовують його, друге у Qt Creator – 24.41% розробників, третє місце у CLion – 14.66%, четверте місце займає Eclipse – 12.78% розробників, п'яте місце у XCode – 12.22% розробників, шосте місце у Android Studio – 5.15%, сьоме у Code::Blocks – 4.85%.
Як ми бачимо, багато розробників для роботи використовують текстові редактори з різними розширеннями функцій або без них. До таких входять: Vim – 37.93% розробників, Visual Studio Code – 25.77% розробників, Emacs (технічно, це текстовий редактор з розширеннями функціоналу до IDE) – 13.55%, Sublime – 12.78%.
Рейтинг IDE серед користувачів Reddit
За результатами опитування, проведеного серед 1860 учасників наприкінці лютого 2018 року у співтоваристві r/cpp на порталі reddit.com, перше місце також займає Visual Studio – 28.43%:
Серед представників IDE до числа найчастіше використовуваних також увійшли:
Qt Creator – 11.64%, CLion – 8.91%, Xcode – 4.05%, Eclipse – 3.98%, Code::Blocks – 2.43%.
Рейтинг IDE для C++ від компанії JetBrains
Компанія JetBrains, одна з провідних компаній-творців інструментів для розробників (зокрема творець і власник одного з провідних IDE для C++ – CLion), представила в 2018 році свою статистику інтегрованих середовищ програмування С++, які найчастіше використовуються.
За даними цієї статистики, перше місце серед різних середовищ розробки для C++ також отримує Visual Studio, що використовується 32% програмістів. Наступні місця в цьому рейтингу інтегрованих середовищ розробки розподілилися таким чином: друге місце у CLion – 11%, третє місце у Xcode – 5%, четверте місце у Eclipse – 5%, п'яте у QtCreator – 4%, шосте місце у Atom – 3 %, сьоме у NetBeans – 3%.
Також корисною буде статистика від тієї ж компанії JetBrains, що показує компілятори, котрі найбільш часто застосовуються в розробці:
Рейтинг найкращих середовищ розробки для C / C++ IDE від G2 Crowd
Цікаві дані надає аналітична платформа G2 Crowd. Проаналізувавши частоту використання розробниками різних середовищ розробки на C/C++ та ступінь задоволеності цими інструментами, компанія представила таку інфографіку:
З цієї схеми ми все ще спостерігаємо лідирування Visual Studio серед інших середовищ розробки C++. Досить нішевими продуктами виявляються CodeLite та Code::Blocks.
Ми розглянули кілька відкритих рейтингів найкращих середовищ програмування C++. Використовуючи вказані дані, ми зробили свій рейтинг найкращих середовищ розробки.
1) Visual Studio
Visual Studio посідає перше місце у нашому рейтингу. Це широко відоме повнофункціональне середовище розробки від компанії Microsoft, яке дозволяє працювати з такими платформами, як Windows, Інтернет, хмара та Android. Можливості IDE Visual Studio дозволяють правильно та ефективно писати код, реорганізовувати, аналізувати та виправляти проблеми з кодом. Система IntelliSense передбачає API-інтерфейси в міру їх написання і виконує автоматичне завершення для підвищення швидкості та ефективності розробки.
Саме ця IDE дозволяє новачкові найлегше увійти в процес розробки.
Офіційний сайт – https://visualstudio.microsoft.com/ru/
Особливості Visual Studio:
Свій компілятор – MSVC.
Існують версії, що працюють на macOS та Windows.
Підтримує такі мови: ASP.NET, Ajax, DHTML, Visual C++, JavaScript, JScript, Visual Basic, Visual C#, Visual F#, XAML та ін.
Плюси IDE Visual Studio:
Безкоштовно поширюється Visual Studio Community з достатнім набором можливостей.
Платні версії можуть надаватися навчальним закладам та студентам безкоштовно.
Зручна система розумного автодоповнення.
Велика кількість налаштувань середовища розробки під «себе» завдяки вбудованим механізмам і доступним доповненням.
Мінуси IDE Visual Studio:
Версії Visual Studio Professional та Visual Studio Enterprise є платними.
Масштабна IDE, досить вимоглива до заліза.
Ряд розробників вважають її надмірною для створення дрібних проектів.
Досить невелика швидкість запуску проектів та додатків.
Не працює на Linux.
Платні версії з розширеним функціоналом розповсюджуються за підпискою: Professional - від 45 $ на місяць, Enterprise - від 250 $ на місяць.
2) Qt Creator
Qt Creator – ще одне досить зручне і швидке інтегроване середовище розробки C++, що пропонує цікаві можливості для розробника. Ця кросплатформна IDE має сучасний редактор коду C++, вбудований зручний графічний інтерфейс, дизайнер форм, інструменти навігації та багато іншого. Серед розробників багато хто обирає його за його API та бібліотеки, оскільки вони послідовні, деталізовані, зручні та гарно документовані.
Qt Creator поставляється з повним набором інструментів розробника, які призначені для одночасного створення додатків і користувацьких інтерфейсів, а потім для подальшого їх розгортання в різних мобільних ОС і настільних ПК. Часто відзначають простоту та чуйність інтерфейсу. Він включає в себе зручний редактор коду з можливістю підсвічування синтаксису і автозаповненням, можливість створення інтерфейсу користувача використовуючи перетягування, інструмент візуального відлагодження та ін.
Офіційний сайт: https://www.qt.io
Особливості IDE Qt Creator:
Доступні версії під Linux, macOS, Windows.
Підтримувані компілятори:
GCC / G++;
MinGW;
Linux ICC;
Clang;
Nim;
QCC;
MSVC.
Доступні розширення, що дозволяють працювати з такими мовами, як Python, Ruby, Java, PHP та іншими.
Плюси IDE Qt Creator:
Наявність безкоштовної версії.
Інтелектуальна система підказок.
Можливість компіляції проектів для різних систем.
Мінуси IDE Qt Creator:
Платна версія від 459 $ на місяць.
Безкоштовна версія має низку обмежень.
3) CLion
Clion – це потужне і кросплатформне IDE для C і C++ від компанії JetBrains, яке включає сучасні стандарти C++, libc++ і Boost. Це IDE добре знає коди та спрощує рутину, дозволяючи зосереджуватися на основних речах розробки. Однією з його основних можливостей є рефакторинг, який дозволяє вам перейменовувати символи, зрушувати елементи вгору або вниз за ранжуванням, змінювати сигнатуру функції, а також гарантувати, що її автоматичний рефакторинг правильно генеруватиме необхідні зміни в коді.
Інтегрований відлагоджувач аналізує та вирішує проблеми за допомогою дружнього користувацького інтерфейсу IDE з GDB / LLDB в якості бекенду. Більше того, він також віддалено зв'язується з нативними процесами чи відлагодженнями.
Офіційний сайт IDE Clion - https://www.jetbrains.com/clion/
Особливості IDE Clion:
Лише платні версії IDE.
Підтримувані мови C і C++.
Доступні версії під Linux, Windows, macOS.
Підтримує такі компілятори:
GCC / G++;
MinGW;
MSVC.
Плюси IDE Clion:
Зручні інструменти для розробки візуальних інтерфейсів.
Зручні механізми відлагодження додатків.
Можливості розширення функціоналу плагінами.
Інструменти пошуку помилок у коді в потоковому режимі.
Мінуси IDE Clion:
Відсутня безкоштовна версія цього IDE.
Річна підписка від 199 $.
4) Eclipse
IDE Eclipse, заснована на платформі Eclipse, є однією з провідних IDE для розробників на C++ та C. Eclipse пропонує підтримку розробки проектів та кероване середовище розробки з різними наборами інструментів. Він також підтримує різні інструменти, сортування, навігацію за гіперпосиланнями, редактор коду з функцією підсвічування синтаксису, інструменти візуального відлагодження та багато іншого.
Це безкоштовне ПЗ з відкритим вихідним кодом, що працює з усіма основними ОС, включаючи Windows, Mac OS X і Linux. Eclipse може похвалитися зручним інтерфейсом.
Особливості IDE Eclipse:
Працює на таких ОС: Windows, macOS, Linux.
Працює з такими мовами: C, C++, Java, Perl, PHP, Python, Ruby та інші.
Працює з такими компіляторами:
GCC / G++;
MinGW;
Cygwin.
Плюси IDE Eclipse:
Простота як установки, так і застосування.
Зручний механізм розроблення графічних інтерфейсів.
Інструмент із відкритим вихідним кодом.
Розповсюджується безкоштовно.
Кросплатформність.
Велика кількість доступних модулів розширення – багато розробників відзначають, що можливості модулів цієї IDE значно випереджають такі в інших середовищах розробки.
Мінуси IDE Eclipse:
Ряд розробників відзначають незручність використання механізмів автодоповнення під час написання коду.
5) Xcode
Xcode – це повноцінна IDE, що включає набір інструментів для розробки, створена компанією Apple для написання ПЗ під macOS, iOS, WatchOS і tvOS.
Xcode вважається найкращою IDE для Mac, будучи створеною розробниками самої операційної системи.
Офіційний сайт IDE Xcode - https://developer.apple.com/xcode/
Особливості IDE Xcode:
Працює з такими мовами, як AppleScript, C, C++, Java, Objective-C.
Працює лише на macOS.
Використовує Apple LLVM та GCC компілятори.
Плюси IDE Xcode:
Зручні інструменти для створення програмного забезпечення під комплекс платформ Apple.
Механізми автодоповнення коду.
Зручні інструменти для роботи із графічними інтерфейсами.
Мінуси IDE Xcode:
На ОС Windows та Linux ця IDE не працює.
6) Code::Blocks
Code::Blocks або CodeBlocks – це IDE з відкритим вихідним кодом, що розповсюджується безкоштовно. Code::Blocks написана на C++ з використанням wxWidgets в якості інструментарію GUI. Code::Blocks – це IDE, що розширюється і налаштовується, яка працює на таких платформах, як Windows, Linux і macOS. Різний функціонал може бути доданий до цієї IDE шляхом встановлення або написання плагіну. Наприклад, завдяки таким плагінам доступні функції компіляції та відлагодження. Code::Blocks підтримує додавання різних, як готових, так і користувацьких плагінів. Розробники можуть легко налаштувати цю IDE під свої потреби, і навіть легко переміщатися інтерфейсом вкладок. Спочатку IDE Code::Blocks був створений для роботи з C++, але тепер ви також можете запускати програми на C та Fortran.
Офіційний сайт IDE Code::Blocks - http://www.codeblocks.org/
Особливості Code::Blocks:
Підтримує роботу з такими компіляторами:
MingW / GNU GCC;
MSVC++;
Clang;
Digital Mars;
Borland C 5.5;
Open Watcom.
Повністю написаний C++;
Працює на Linux, Mac та Windows;
Підтримує такі мови: C, C++, Fortran;
Плюси Code::Blocks:
Вбудований відлагоджувач.
Кросплатформний.
Підтримка паралельного збирання.
Є відкритим програмним забезпеченням.
Повна підтримка точок зупинки.
Інтегроване інтелектуальне підсвічування синтаксису.
Досить чуйна спільнота.
Можливість налаштування IDE розробниками під «себе».
Мінуси Code::Blocks:
Ця IDE погано підходить для розробки великих проектів.
7) NetBeans
NetBeans – це одне з часто використовуваних розробниками інтегроване середовище програмування C++. Спонсорований компанією Oracle, проект IDE NetBeans був переданий у 2016 році до рук фонду Apache. На сьогоднішній день NetBeans поставляється з відкритим вихідним кодом. Написане на Java, це IDE має можливість працювати на всіх системах, які підтримують Java – Windows, Linux, macOS та Solaris. NetBeans IDE виглядає як інтерфейс із функцією перетягування, спільно зі списком шаблонів проектів. Використовувати NetBeans зручно для створення додатків C/C++ як з динамічними, так і зі статичними бібліотеками. Крім того, воно надає великий набір інструментів для програмістів на C/C++. NetBeans має багато плагінів, які можуть розширити можливості програмного забезпечення.
Офіційний сайт NetBeans - https://netbeans.apache.org
Особливості IDE NetBeans:
Знаходиться під управлінням Apache Software Foundation.
Підтримує такі мови: Java, HTML, HTML 5, C, C++ та інші.
Працює на Windows, Linux, macOS і Solaris.
Підтримується робота з такими компіляторами:
Oracle Solaris Studio;
GCC/G++;
CLang / LLVM;
Cygwin;
MinGW.
Плюси IDE NetBeans:
Безкоштовне розповсюдження під ліцензією вільного програмного забезпечення.
Зручний інтуїтивний інструмент створення графічного інтерфейсу GUI Builder.
Велика кількість розширень.
Кросплатформність.
Інтелектуальне автозавершення коду.
Велика спільнота.
Мінуси IDE NetBeans:
Користувачі відзначають тривалий запуск додатку.
Ряд користувачів відзначають незручність роботи з дебагером.
Висновок
Існує досить багато інтегрованих середовищ розробки на C++. Для вибору IDE під розробку на C++, як і будь-якого іншого інструмента розробника, справедливий індивідуальний підхід. Відштовхуючись від поточних завдань, базової ОС, мов, необхідних плагінів, вимог команди та інших, суто індивідуальних факторів розробки, вибір вами кращого середовища програмування C++ буде різним.
Ми рекомендуємо обирати середовище розробки з нашого ТОП 7. Якщо ж ви хочете конкретну пораду для початківця – під Windows спробуйте почати розробляти із Visual Studio у безкоштовній версії Community. У якості безкоштовного середовища розробки C++ під Linux спробуйте Code::Blocks і NetBeans. Згадуючи вибір найкращого платного середовища розробки C++ для Linux і macOS, ми рекомендуємо спробувати тріальну версію платної IDE – CLion.
У будь-якому випадку, якщо ви плануєте розробляти на C++ протягом тривалого часу, вибір головного інструменту навряд чи буде для вас остаточним. Пробуйте різні варіанти та стежте за нововведеннями і змінами.
Розробникам-початківцям на C++ ми рекомендуємо ознайомитися з відео курсами ITVDN:
C++ для початківців.
C++ Essential.
C++ Advanced.
ТОП-10 найкращих відео з .NET
Автор: Влад Сверчков
Вітаємо!
Друзі, цього разу ми підготували для вас вибірку найкращих вебінарів від ITVDN за напрямком .NET. До рейтингу увійшли як пізнавальні вебінари з актуальною інформацією, так і вебінари, орієнтовані на прокачування ваших навичок створення коду. Давайте приступимо до їх розгляду.
Як стати C# розробником у 2021 році? .NET чи .NET Core?
Автор – Дмитро Охріменко, сертифікований спеціаліст Microsoft (MCTS, MCPD, MCT). Тренер-консультант, експерт з побудови розподілених та веб-орієнтованих додатків. Автор курсів з .NET та FrontEnd розроблення на ITVDN
C#/.NET розроблення – це дуже перспективний напрямок у IT, життя якому дала всесвітньо відома компанія MIcrosoft. Якщо вам цікава дана сфера і ви хочете зробити в ній професійний старт, цей вебінар буде для вас дуже доречним!
Мета вебінару – допомогти вам розібратися з головними аспектами даної спеціальності, спираючись на тенденції розвитку IT-ринку, правильно розставити пріоритети та допомогти спланувати ваше навчання та кар'єру за напрямком C#/.NET.
На заході розглянуто такі важливі питання:
Чи є сенс починати вчити C# у 2021 році?
Що таке .NET Framework та що таке .NET Core?
Що вивчати і в якій послідовності? Карта спеціальності
Порівняння веб програми на .NET та на .NET Core
Корисні ресурси для навчання та розвитку
Питання та відповіді
Як стати Full-Stack розробником?
Автор – Віталій Ємець, FullStack Developer, Microsoft Certified Specialist
Full-stack розробник (вимовляється "фул стек") – це майстер на всі руки у світі веб-розроблення. Йому під силу реалізувати як клієнтський, так і серверний бік додатку, якими зазвичай займаються FrontEnd і BackEnd розробники окремо один від одного. Таким чином, у деяких випадках Full-Stack фахівець може навіть одноосібно вести проєкт від початку до кінця.
Які навички необхідно мати, щоб досягти такого рівня майстерності, і який інструментарій повинен бути у справжнього Full-Stack розробника? У чому переваги даної професії та які у неї підводні камені? Як Full-Stack розроблення пов'язане з технологіями C#/.NET? Усі відповіді на ваші запитання ви отримаєте на вебінарі Віталія Ємця.
Що нового в C# 8, 9?
Автор – Олексій Никифоров, Software Engineer & Business Analyst at HYS-Enterprise
C# — це універсальна об'єктно-орієнтована мова, яка є потужним інструментом створення програмного забезпечення з широкою сферою застосування. При такій високій функціональності вона досить нескладна у вивченні і чудово підходить тим, хто збирається зробити перший крок назустріч програмуванню.
Цей вебінар передбачає занурення в останні нововведення мови C#. Основний наголос буде зроблено на комунікацію та обговорення, припускаючи, що учасники вебінару – розробники C#, які стежать за новинками цієї мови. Автор пройдеться новими можливостями мови та обговорить, як ці зміни можуть бути використані з метою написання більш виразного та чистого коду.
Алгоритми та структури даних у .NET
Автор – Ярослав Кучук, .NET Developer
На вебінарі розглядається питання фундаментальної алгоритмічної підготовки – від математичного обґрунтування потужності алгоритму до стандартних алгоритмів та структур даних. Базові алгоритми реалізовані на C#; автор аналізує їх з точки зору їхньої потужності.
На вебінарі розглядаються такі теми:
Поняття алгоритму
Складність алгоритму та способи її вимірювання
Основні структури даних
Стек
Черга
Зв'язаний список
Хеш-таблиця
Бінарні дерева пошуку
Червоно-чорні дерева
Базові сортувальні алгоритми
Базові пошукові алгоритми
Безпека .NET веб-додатків: часті помилки та методи боротьби з ними
Автор – Олексій Голубєв, Lead Software Engineer в компанії SoftServe
Мета вебінару – звернути увагу розробників на проблеми у сфері безпеки веб-додатків, які можна усунути ще на етапі розроблення. На вебінарі автор розповідає про найчастіші помилки у додатках, вразливостях, пов'язаних із сторонніми бібліотеками, і те, як їх можна уникнути.
Зміст вебінару:
Авторизація. Крадіжки сесій та стійкості паролів.
Людський фактор. Що розробник може зробити не так і на що звертати увагу.
Ін'єкції. Які зустрічаються частіше і про небезпечні WYSIWYG редактори.
Рандомізація. Випадковості не випадкові.
Вебінар підійде .NET розробникам – вітаються спеціалісти будь-якого рівня. Буде багато практичної інформації, яку можна застосувати як на етапі розроблення, так і на етапі проєктування систем.
6. Техніки тестування для C# розробників. Рівень Advanced
Автор – Юрій Наурінський, Senior Fullstack .NET Software Developer
На вебінарі буде розглянуто 3 «поглиблені» техніки тестування, якими має володіти досвідчений розробник. Буде трохи теорії, приклади та відповіді на запитання. Усі приклади мовою С#. Нижче наведено техніки, які розглядаються на зустрічі.
Property based testing – техніка тестування, що застосовується для перевірки властивостей функції, програми, системи. Ключова ідея в тому, що описуються не заздалегідь задані очікувані значення, а властивості, яким повинні задовольняти тестові приклади. Далі, тестові приклади генеруються випадковим чином, постійно перевіряючи, чи вони задовольняють вищеописаним властивостям.
Performance testing – одна з найважливіших технік тестування, яку бажано знати кожному розробнику, котра використовується для відповіді на питання, наскільки швидко працює функція, програма, система, а також її окремі компоненти. Також, може відповідати на питання скільки пам'яті споживає функція, програма, система.
Load testing – техніка тестування, про яку бажано мати уявлення кожному веб-розробнику; застосовується для вимірювання поведінки системи під різним навантаженням, зокрема нормальним та піковим. Можуть вимірюватися час відповіді, пропускна спроможність, інші бізнес-орієнтовані метрики.
7. Docker для .NET розробників
Автор – Олексій Никифоров, Software Engineer & Business Analyst at HYS-Enterprise
Docker – це популярна платформа, яка використовується при розробленні, тестуванні та розгортанні програмного забезпечення. Вона дозволяє скоротити час між написанням коду та доставленням його на “production”. За останні роки популярність Docker'a сильно зросла, і ця технологія стала індустріальним стандартом у сфері контейнеризації програмних рішень.
Docker може бути корисним дуже широкому спектру фахівців: розробник, тестувальник, адміністратор, реліз-менеджер і т. д. Незважаючи на те, що Docker написаний на Go і використовує особливості ядра Linux, .NET розробники, які традиційно ведуть розроблення під Windows, можуть отримати величезну користь від використання Docker'a на різних рівнях. Знання даного інструменту підвищить вашу продуктивність та дасть конкурентну перевагу на ринку праці.
Вебінар буде корисним фахівцям початкового рівня, які завжди хотіли спробувати Docker. Ознайомлення буде засноване на програмі .NET Core. За завершенням, ви сміливо орієнтуватиметеся в основних концепціях та інструментах і зможете успішно розпочати свій шлях вивчення Docker'а.
8. F# та функціональне програмування для C# розробників
Автор – Альберт Ташу, .NET Developer, тренер-консультант навчального центру CyberBionic Systematics, а також сертифікований спеціаліст Microsoft
С# – це мультипарадигменна мова, і з кожним релізом вона набуває все більше можливостей, спрямованих на застосування функціонального програмування, яке є однією з найпопулярніших парадигм у сучасном розробленні програмного забезпечення. Для того, щоб легше було розібратися в цій парадигмі, буде розглянута дуже цікава мова платформи .NET – F#. Крім цього, торкнемося основних принципів функціонального програмування та їх застосування при розробленні мовою C#.
Зміст вебінару:
Введення до мови F#
Основи функціонального програмування
Застосування функціональних підходів розроблення на C#
Рефакторинг проєкту на С#
9. Створення гри "Space Invaders" на C# з нуля
Автор – Армен Маілян, C#/.NET Developer, тренер-консультант CyberBionic Systematics
Який найкращий спосіб вивчити щось нове? Звичайно ж, перетворити це на гру! Цей спосіб гарний і у навчанні програмуванню. Почніть вивчення мови C#, створивши консольну комп'ютерну гру. Обіцяємо мінімум нудної теорії та максимум практики. Буде цікаво!
Кому це буде корисно?
Новачкам. Ніколи не програмували? Це не нагода відмовлятися від нового крутого досвіду. Ви маєте шанс зробити свою власну гру на C# і отримати досвід практичного застосування даної мови програмування, а також спробувати себе в ролі розробника ігор.
Розробникам-початківцям C#. Ви зможете поглибити та застосувати на практиці свої знання мови C# разом із наставником.
Чого ви навчитеся:
Розробляти просту гру мовою C#.
Розбивати велике завдання на окремі етапи та послідовно їх реалізовувати.
Застосовувати на практиці процедурний і об’єктно-орієнтований підхід для написання програм на С#.
Розуміти та застосовувати основи алгоритмування.
Застосовувати знання основ ООП для створення повноцінної програми.
Використовувати функціонал .NET Framework.
10. Створення еволюційної гри Conway's Game Of Life C# + WPF
Автор – Юрій Наурінський, Senior Fullstack .NET Software Developer
На вебінарі буде розглянутий Game Of Life – клітинний автомат, придуманий англійським математиком Джоном Конвеєм у 1970 році – і його реалізація за допомогою мови програмування C# та фреймворку WPF.
Перш ніж реалізовувати гру, необхідно чітко визначити завдання та постановку правил самої гри. Далі буде розглянуто, як реалізувати саму логіку гри без прив'язки до будь-якого фреймворку. Наступний логічний крок після того, як було реалізовано основну логіку гри — це розгляд прив'язки логіки до фреймворку WPF і надання «життя» грі. Наприкінці вебінару автор розповість, які техніки тестування можна застосувати для гарантії коректності результату логіки гри.
Цей вебінар буде цікавий C# розробникам, які бажають заглибитись у розроблення додатків з використанням технології WPF, а також хочуть розглянути з практичної точки зору досить цікаву та відому математичну гру.
Вивчайте розроблення .NET на ITVDN!
З# 8 без NullReferenceException
Автор: Christian Nagel
.NET спецификация говорит о том, что приложение никогда не должно генерировать NullReferenceException. Впрочем, риск встречи подобного все равно остается во многих библиотеках и приложениях. Де-факто, NullReferenceException – это наиболее часто встречаемый тип исключений. И здесь на сцену выходит C# 8. В новой версии сего прекрасного языка ссылочные типы больше не могут принимать null по-умолчанию. Это и огромный плюс, и отличное нововведение. Но… Это все, конечно, хорошо, но как будут обстоять дела с поддержкой старых библиотек?
Именно в этой статье мы как раз и разберем этот вопрос.
Зачем нам вообще избегать NullReferenceException?
Когда выбрасывается NullReferenceException, причину ошибки далеко не всегда так уж просто найти. Ошибки обычно возникают далеко от очага реальной проблемы. Именно поэтому возникновение подобных ошибок и является крайне нежелательным. Потому вместо проверки на null-исключения просто выбрасывайте ArgumentNullException. Если где-то мы передаем null в качестве аргумента, мы можем просто на уровне компиляции запретить это делать. Просто выбрасываем ArgumentNullException – и мы сразу увидим первопричину ошибки в системе.
Давайте рассмотрим, как именно C# 8 решает подобные проблемы.
Установка C# 8
На момент написания статьи официального релиза C# 8 еще не было. Впрочем, даже сейчас вы можете его опробовать. Сейчас, на момент написания статьи, для этого нужно иметь Visual Studio 2017 15.5-15.7.
На заметку! Устанавливая эту версию компилятора, вы наверняка встретите множество предупреждений со стороны уже существующих C#-проектов. По-умолчанию используется последняя стабильная версия языка. Чтобы избавиться от предупреждений, просто явно задайте версию компилятора.
Ссылочные типы больше не могут принимать null
Ничего сложного для понимания здесь нет. Синтаксис, подобный обычным значимым типам. Хотите, чтобы ссылочный тип принимал null? Ставим после оглашения типа знак вопроса.
В то же время, хотя внешне синтаксис ссылочных и значимых типов выглядит похоже, сам принцип реализации кардинально другой.
При работе со значимыми типами компилятор использует специальный тип Nullable. Это значимый тип, который помимо прочего также содержит в себе приватное булевское поле, определяющее, является ли значение переменной null.
Со ссылочными типами компилятор просто добавляет атрибут Nullable. Версия 8 распознает этот атрибут и обрабатывает его соответствующим образом. Версия 7 его не понимает и просто игнорирует.
При компиляции программы под C# 7 Book b и Book? b будут распознаны одинаково.
Приведенный выше тип Book определяет не-nullable свойства Title и Publisher, а также nullable Isbn. Плюс, этот тип также содержит конструктор-кортеж. Используя тип Book и получая значение переменной Isbn, мы можем хранить полученные данные только в переменной типа string?.
Присваивание Nullable к не-Nullable
В случае, если нам нужно присвоить nullable-тип, C# 8 анализирует код. В коде ниже, так как isbn сравнивается с null, после условной конструкции isbn больше не сможет вернуть null. И так как сигнатура метода не предусматривает возвращение string?, при возвращении значения типа произойдет конверсия.
Конечно, эту же конструкцию можно написать гораздо проще и элегантнее.
Возвращение и передача значения
Здесь мы можем видеть класс NewAndGlory, построенный с использованием возможностей последней версии С#. Сигнатура метода GetANullString предусматривает возвращение null, так что в нашем случае этот метод просто возвращает null. Метод GetAString не сможет в свою очередь вернуть null. Что же касательно последнего метода PassAString, тут тоже все очень просто. Мы передаем string и возвращаем также string. По этой причине смысла в проверке на null нет.
С другой стороны, предположим, что у нас есть библиотека TheOldLib, использующая 7 компилятор (задается в файле *.csproj). Класс Legacy определяет метод GetANullString, что просто возвращает null. Метод PassAString принимает строку и проверяет ее на null. Также библиотека определяет интерфейс ILegacyInterface, задающий сигнатуру метода, что возвращает строку. С использованием шарпа 7 версии, мы не можем здесь указать, должна ли строка принимать null, или нет.
Приложение на C# 8 могут использовать библиотеки, созданные и при помощи C# 7
Теперь давайте рассмотрим пример консольного приложения, что ссылается на старые и на новые библиотеки. Используя класс NewAndGlory, в качестве ожидаемого результата метода GetNullString мы можем получить только string?. Попытка же передать null в метод PassAString породит ошибку уровня компиляции (невозможно преобразовать null в не-nullable значение).
Обращаясь к классу Legacy, где метод GetANullString, результат может быть записан в тип string. И, так как эта библиотека не создавалась под эгидой C# 8, наш компилятор будет покорно молчать. Претензии он будет предъявлять только в отношении «новых» сборок. Также здесь мы можем вызвать метод PassAString и спокойно передать в нее null. Если бы компилятор ругался на все подобные нюансы более ранних сборок, список возможных ошибок мог формироваться до бесконечности, поэтому здесь и применяется принцип «разностного отношения».
Метод Foo интерфейса ILegacyInterface, определенный в библиотеке, собранной с использованием более ранней версии языка, – и здесь он возвращает string. Но как же нам тогда его использовать в C# 8? Как можно заметь ниже, здесь интерфейс может быть реализован с использованием как string, так и string?.
Интерфейсы, реализуемые в рамках C# 8, требуют прямого указания поведения по отношению null.
Приложения под C# 7 с использованием сборок C# 8
Что же касательно использования более новых версий сборок в ранних версиях языка, тут нет никаких проблем: все происходит, как и с любыми другими .NET-сборками. Приложение не будет видеть никаких string? – все nullable-ссылочные типы будут интерпретироваться как обычные ссылочные типы - в нашем случае просто как string. И, конечно же, проблема NullReferenceException остается.
Передача в метод PassAString null вызовет NullReferenceException. Для отлавливания подобного в рамках C# ранних версий мы можем проводить ручную проверку на null и выбрасывать ArgumentNullException. Возможно, эта ситуация по отношению к более старым версиям языка в миксе с новыми сборками с дальнейшим развитием C# 8 изменится, но это уже другой вопрос.
В заключение
Ссылочные типы, не принимающие null, – это одна из ключевых возможностей С# 8, позволяющая минимизировать риск возникновения ошибок типа NullReferenceException. Подобное стало возможным благодаря изменениям внутренней реализации ссылочных типов языка. Впрочем, несмотря на все нововведения, C# 8 по-прежнему может без каких- либо проблем использовать более ранние библиотеки, как и более ранние версии языка – новые библиотеки. Microsoft осталась верной своим канонам обратной совместимости и технически это стало возможно благодаря использованию специальных атрибутов для nullable-типов.
Автор перевода: Евгений Лукашук
Источник
Компілятор Roslyn
Автор: Редакция ITVDN
Введение
Roslyn – это компилятор с открытым исходным кодом для C# и Visual Basic. Roslyn представляет из себя библиотеку (API), интегрируемую в проект. Данный компилятор не имеет ничего общего с CLR. Таким образом, он может скомпилировать код с преобразованием в Intermediate Language для последующей передачи в CLR.
Установка компилятора
Для установки Roslyn Вам нужно скачать и установить Visual Studio 2015 Preview (рекомендуется установка на виртуальной машине). Затем перейдите на страницу проекта Roslyn и скачайте исходный код. Распаковав файл, Вы увидите папку с несколькими файлами и папками в ней. Нас интересует только папка Src:
Дважды щелкните на Roslyn.sln для загрузки проекта. После этого настройте solution в VS и перейдите в Roslyn/Binaries/Debug:
Использование компилятора
Каждый, кто использует C#, наверняка знаком с csc.exe. Посмотрев на дату создания файла, Вы увидите, что одновременно с открытием проекта Roslyn скомпилировался csc.exe. Как мы этим будем пользоваться?
Запустив файл csc из командной строки, Вы увидите ошибку:
C:\Users\Michael\Documents\Visual Studio 2015\Projects\roslyn\Binaries\Debug>csc
Microsoft (R) Visual C# Compiler version 1.0.0.0
Copyright (C) Microsoft Corporation. All rights reserved.
warning CS2008: No source files specified.
error CS1562: Outputs without source must have the /out option specified
C:\Users\Michael\Documents\Visual Studio 2015\Projects\roslyn\Binaries\Debug>
Тут нечему удивляться, поскольку Вы не указали исходный файл для компиляции. Теперь можно посмотреть ошибки и предупреждения в нашем исходном коде.
Если мы будем искать текст Outputs without source must have the /out option specified, то мы найдем место в коде, выдающее нам ошибку. В этом случае ошибка исходит из класса ResourceManager.
Разбираем пример
Скачайте и установите:
• Visual Studio 2015 Preview SDK
• Visual Studio Project Templates для Roslyn
• Syntax Visualizer для Roslyn
После установки откройте Visual Studio 2015 Preview и выберите шаблон “Compiler Platform Console Application”:
Добавьте следующий код в Main:
public static void Main(string[] args)
{
SyntaxTree tree = CSharpSyntaxTree.ParseText(
@"using System;
using System.Collections.Generic;
using System.Text;
namespace HelloWorld
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(""Hello, TDN!"");
}
}
}");
var root = (CompilationUnitSyntax)tree.GetRoot();
var compilation = CSharpCompilation.Create("HelloTDN")
.AddReferences(references: new[] { MetadataReference.CreateFromAssembly(typeof(object).Assembly) })
.AddSyntaxTrees(tree);
}
Установите точку остановки (breakpoint) на последней фигурной скобке и запустите Syntax Visualizer через меню View -> Other Windows -> Roslyn Syntax Visualizer. Вы увидите следующее:
Запустите приложение и перейдите в верхнюю часть документа. Нажмите на объявленный SyntaxTree, и он перенаправит Вас на часть кода, в котором содержится большая часть информации. В нашем примере мы рассматриваем Leading и Trailing WhiteSpace.
Теперь мы увидели процесс компиляции с помощью Roslyn.
Выводы
Roslyn - это отличный метод получения полезной информации о нашем исходном коде. Он предоставляет множество функциональных возможностей, например: IntelliSence, переформатирование кода и т.д. Также он обеспечивает совместимость языков. Данный функционал дает много возможностей для инноваций в таких областях, как мета-программирование, генерация кода и его преобразование, интерактивное использование языков C# и Visual Basic.
Источник: http://developer.telerik.com/featured/roslyn-nutshell/
Як вибрати свою першу мову програмування: інструкція від HR
Автор: Вікторія Чабан
Якщо ти плануєш увійти в ІТ і не знаєш, з чого почати — ця стаття для тебе. Вибір першої мови програмування схожий на вибір першого велосипеда: важливо, щоб підходив саме тобі, а не був «наймоднішим». У ролі кар'єрного консультанта та HR я спираюсь на реальні кейси студентів і запити компаній. Ось чіткий та короткий план, який допоможе обрати першу мову грамотно.
🎯 Крок 1. Визнач свою цільову сферу
Запитай себе: що саме я хочу створювати? Це головний орієнтир.
🧑💻 FrontEnd (веб-сайти, інтерфейси) → JavaScript, далі можна додати TypeScript, React
📱 Мобільні додатки → Kotlin (Android), Swift (iOS), або React Native
📊 Аналітика, машинне навчання, ШІ → Python
🏦 Корпоративні рішення, банківські системи → C# / .NET або Java
🧪 QA Automation (автотести) → Python, Java, JavaScript
💡 Порада: якщо не визначився — обирай універсальну мову для старту, наприклад, Python або JavaScript.
📊 Крок 2. Перевір актуальність на ринку
За даними DOU та Djinni (станом на 2025 рік), топ-5 мов за кількістю вакансій:
JavaScript / TypeScript
Python
C#
Java
PHP
JavaScript домінує завдяки своїй універсальності (веб, мобайл, backend).
Python — лідер у сфері ШІ, автоматизації та наукових обчислень.
C# / .NET — улюблене рішення для бізнесу в Україні та Східній Європі.
Java — база для багатьох міжнародних проєктів, особливо у банках та ентерпрайз-продуктах.
🔍 Працювати з мовою, яка має стабільний попит — логічний крок для першої роботи.
👶 Крок 3. Почни з доступної до навчання
Навіть найкрутіша мова нічого не дасть, якщо ти не зможеш її зрозуміти. Ось три мови, які найкраще підходять для старту:
Python — простий синтаксис, читається як англійська, популярний у всіх сферах.
JavaScript — швидкий результат (можна написати код і одразу побачити на екрані).
C# — добре структурований, допомагає швидко зрозуміти основи ООП.
🧠 Якщо тебе лякає синтаксис або ти сумніваєшся — подивись безкоштовний вступний курс. На ITVDN є 3 безкоштовних уроки, які допомагають обрати напрям без ризику.
🔮 Крок 4. Дивись на перспективу
Програміст не вчить лише одну мову на все життя. Але перша створює базу. Після неї буде легше вивчити інші.
Якщо мрієш стати FullStack-розробником — комбінуй JavaScript (FrontEnd) + Node.js або C# (BackEnd).
Хочеш піти в Data Science — починай з Python, а далі додай бібліотеки як Pandas, NumPy, TensorFlow.
💡 Висновок
Не існує «ідеальної» мови для всіх. Вибір має бути практичним:
✅ під твої задачі
✅ з урахуванням попиту
✅ з урахуванням складності на старті
🎓 Обирай шлях, який не лише приведе до першої роботи, а й зробить навчання цікавим. І пам’ятай: важлива не мова, а твоє бажання вчитися!
Яку мову програмування варто вчити першою
Автор: Влад Сверчков
На що впливає вибір мови програмування?
Які мови обирають першими?
Рейтинги мов програмування.
Індекс TIOBE.
Індекс PYPL.
Stack Overflow Developer Survey 2022.
Рейтинг від GitHub.
Які мови найпопулярніші відповідно до цих рейтингів?
Які мови обирають українські розробники?
Кількість вакансій та відгуків в Україні.
Висновки.
Перша мова програмування (скорочено – МП) відкриває світ створення коду перед новачком. І від обраної мови дуже часто залежить те, яким буде цей «світ» – цікавим та захоплюючим, або ж недружнім та занадто складним. Якщо ви хочете з цього знайомства винести максимальну користь для себе, варто уважно підійти до вибору першої мови програмування – і наша стаття вам у цьому допоможе.
Ми розберемо мови програмування, які можуть бути чудовими у якості перших мов. Ви дізнаєтесь, в яких ІТ-професіях затребувана та чи інша мова – а також багато іншої корисної та цікавої інформації.
На що впливає вибір мови програмування?
Для новачка обрання першої мови – важливий крок, який може визначити його подальший шлях розвитку в якості розробника. Головні пункти, на які впливає МП:
Швидкість опанування бази. Мови програмування мають різну складність вивчення. Наприклад, JavaScript досить легко вивчається, в той час як C++ носить більш хардкорний характер, а мови сімейства Assembler можуть кинути виклик навіть тим, хто вже є розробником. Мови з динамічною типізацією (JavaScript, Python, Ruby тощо) вивчаються швидше за мови зі статичною (C#, Java, C/C++ та ін.).
Парадигма мислення. Мови мають різні парадигми, відповідно до яких ви створюватимете код: процедурна, імперативна, об’єктно-орієнтована, функціональна тощо. Від парадигми обраної вами мови залежить те, як ви будете підходити до вирішення задач. Наприклад, якщо ви вивчаєте ООП-мову, то при зіткненні з мовою з функціональною парадигмою ви витратите додатковий час, аби зрозуміти її і писати код по-іншому (наприклад перехід з Java на Scala).
Перспективи працевлаштування. Кожна мова має свої сфери використання – і ви маєте це враховувати, якщо плануєте після опанування МП шукати роботу. Інакше доведеться вчити нову, втрачаючи дорогоцінний час.
Напрямок розробки. Хоча найпопулярніші мови програмування є досить універсальними, все ж є напрямки, в яких вони цінуються найбільше. Наприклад, для Java – це Enterprise та мобільне розроблення, JavaScript – веб-розроблення, Python – BackEnd веб-розроблення, написання скриптів, нейронні мережі, C# - корпоративні додатки, бекенд та ігри на Unity, C/C++ - високонавантажені застосунки, Embedded розроблення тощо. Відповідно, якщо ви оберете JavaScript, то працювати за Embedded напрямком у вас не вийде – якісь бібліотеки для роботи з мікроконтролерами з використанням JavaScript ви, можливо, таки знайдете, але роботодавця – навряд чи. Навіщо забивати цвях монітором, якщо є молоток?
Пошук ментора та ком’юніті. У кожної МП своє ком’юніті та свої джедаї, що готові брати до себе юних падаванів. У популярних мов більша аудиторія, є гарні та детальні документації, легше знайти ментора – це дозволяє зручніше та швидше навчатися. У більш нішових МП ком’юніті скромніше, тому знайти практикуючого розробника, який візьме до себе учня, аби навчити його програмувати, а також знайти якісні гайди – ще ті задачі. Ментор важливий тим об’ємом знань та практичних навичок, які може вам передати: підказати, як правильніше робити, де ви помиляєтеся, на чому зосередити увагу. Ці поради пришвидшать ваше вивчення МП і дозволять швидше рухатися далі назустріч омріяній ІТ-спеціальності.
Стиль програмування. Пункт дуже схожий на 2-й, але якщо там справа стосувалася етики мови програмування, то тут мова більше про етику самого програміста. У різних мовах можуть бути різні правила написання коду, погоджені спільнотою програмістів. Тому опанувавши одну мову, ви можете зіштовхнутися з геть інакшою кодерською етикою при переході до іншої МП (як приклад – перехід із Go на Java).
Легкість пошуку відповідей. Чим популярніша мова, тим легше гуглити та шукати відповіді, оскільки багато інших розробників до вас цікавилися тими ж питаннями (високоймовірно). Однак якщо ви захочете використати мову в екстравагантних цілях – для яких вона не призначена – можуть виникнути проблеми з відповідями.
Перехід на іншу мову. Деякі технології та мови застарівають, і доводиться вчити новий стек. Наприклад, так сталося з мобільними iOS розробниками, котрі писали мовою Objective-C і були змушені перейти на Swift, оскільки компанія Apple так вирішила. Зважайте і на це при виборі мови.
Які мови обирають першими?
Раніше вивчення програмування починалося в школах з мов Pascal або Basic. Ці мови гарно підходять для знайомства з алгоритмічним підходом, структурами даних та фундаментальними концепціями програмування. Вони навчають грамотності та раціональному підходу до вирішення програмістських задач, але у комерційній розробці сьогодні майже не використовуються.
Наразі у школах дедалі більш розповсюдженими стають такі популярні мови, як Python та JavaScript (JS). Вони досить прості в опануванні і дозволяють швидко подолати відстань між початком навчання і отриманням справжнього кінцевого результату. Скрипт на JS взагалі можна написати за допомогою звичайного блокноту у Windows і запустити в будь-якому браузері – навіть встановлювати додаткове ПЗ не треба. Простіше кажучи, ці дві мови просто цікавіші та дають більше зручностей та можливостей, аніж Pascal або Basic.
Вивчення JavaScript та Python у школі має на меті зацікавити учнів програмуванням і показати, наскільки легко та просто це може бути, які можливості може дати вміння писати код.
Аби відчути силу тієї ж пайтон, можете глянути цікаву підбірку з 10 проєктів довжиною у 10 рядків коду за посиланням.
Таким чином, ці мови не тільки знайомлять з програмуванням, але й дозволяють максимально швидко влитися в ІТ і створювати сучасні застосунки.
Рейтинги мов програмування
Аби краще розуміти, які мови нині користуються попитом, розглянемо декілька відповідних рейтингів.
Індекс TIOBE
Перша десятка мов відповідно до індексу TIOBE (за січень 2023 року):
Python
C
C++
Java
C#
Visual Basic
JavaScript
SQL
Assembly language
PHP
Аналітика індексу TIOBE відштовхується від кількості кваліфікованих інженерів у всьому світі, а також від того, яка кількість курсів та сторонніх постачальників є наразі.
Індекс PYPL
Перша десятка мов відповідно до індексу PYPL (січень 2023 року):
Python
Java
JavaScript
C#
C/C++
PHP
R
TypeScript
Swift
Objective-C
Аналітика даного індексу вибудована навколо частоти пошуку туторіалів (навчальних матеріалів) з тієї чи іншої мови програмування у пошуковій системі Google.
Stack Overflow Developer Survey 2022
Тепер подивимось на опитування Stack Overflow Developer Survey 2022 (більше 70 000 опитаних з усього світу). На картинці нижче можна побачити, які мови найчастіше використовують ті, хто тільки вивчає програмування та ІТ (на двох картинках нижче продемонстровано не всі мови з рейтингу):
Найбільший попит серед новачків викликають мови верстання HTML & CSS (ними створюють візуальне оформлення веб-сайтів), а також мови програмування JavaScript та Python. Решта мов йде з відривом у більше 19%. Тобто, сучасні початківці все більше і більше відходять від класичних Java, C#, а також Pascal і Basic, обираючи більш прості мови, з якими швидше потрапиш в ІТ.
Наступна картинка показує, якими мовами найчастіше користуються професійні розробники:
На першому місці JavaScript – маст хев мова для створення клієнтської логіки веб-сайтів та веб-сервісів, далі йде HTML & CSS, мова запитів SQL для роботи з базами даних, вже відомий лаконічний Python, синтаксичний цукор для JavaScript – мова TypeScript (TS), класичні Java і C# та інші мови.
Рейтинг від GitHub
Аналітика нижче побудована на основі того, які мови найчастіше використовуються у проєктах, котрі публікуються на GitHub. Це найвідоміший ресурс для розробників, де вони розміщують свої проєкти, що дозволяє не тільки демонструвати свої розробки іншим, а ще й зручно вести командне розроблення.
В лідерах – JavaScript, Python та Java, за ними – строго типізована TypeScript, C#, C++ та інші.
Які мови найпопулярніші відповідно до цих рейтингів?
Дуже часто на перших позиціях стоїть Python. Це і не дивно – вона проста, лаконічна і має безліч бібліотек та модулів, які ще більше спрощують процеси створення застосунків і сприяють швидшому вирішенню задач. Основні сфери застосування: системне адміністрування, DevOps інженерія, оброблення даних, Big Data, Data Science (великі масиви даних), ML (машинне навчання), серверне веб-розроблення (BackEnd).
У зв’язку з припиненням підтримки пайтона версій 2.x (наразі підтримується лише 3.x), виникла потреба переписувати старий код (legacy) у відповідності до третьої версії – це створює додатковий попит на пайтон розробників.
JavaScript також вирізняється простотою та лаконічністю, але її основна сфера використання обмежена WEB-ом, хоча JS має достатньо засобів, аби нею вести зручне розроблення серверного ПЗ, мобільних та десктопних додатків тощо.
Рейтинг від Stack Overflow показав, що саме цим двом мовам програмування найчастіше віддають перевагу початківці.
TypeScript – це та сама JavaScript, але зі строгою типізацією та іншими фішками, котрі роблять код більш структурованим та зменшують кількість потенційних помилок.
Наступні позиції зазвичай займає Java – класична та універсальна мова, яка була створена наприкінці 20 століття, але яка при цьому досі популярна і затребувана. Найуспішніше себе зарекомендувала в кросплатформних застосунках, Enterprise (створення ПЗ для великого бізнесу), а також у мобільному розробленні, хоча її сфера застосування ними не обмежується. Також існує багато легасі коду на Java, який вимагає підтримки та оновлення, що створює додаткову затребуваність грамотних Java девелоперів.
Часто згадуються C/C++ - це корифеї серед сучасних мов програмування, часто вивчаються у ВНЗ. Складні в опануванні, але дуже потужні у використанні. Саме вони застосовуються у ресурсоємних застосунках, мікроконтролерах та інших додатках, яким важливо контролювати затрати пам’яті. Якщо хочете швидко потрапити в ІТ – C/C++ не варіант, але у якості мов для вивчення програмістської бази вони – те, що треба. Вивчивши «плюси», ви зможете з легкістю переходити на інші мови.
C# - популярна універсальна мова від компанії Microsoft, яка перш за все орієнтована на створення застосунків під ОС Windows, однак вихід платформи .NET Core дозволив створювати ПЗ і під інші популярні платформи. Найбільше застосовується у розробленні корпоративних застосунків, серверної сторони веб-додатків (BackEnd), ігор на Unity, десктопних додатків.
PHP – популярна мова для серверного веб-розроблення. Не дивлячись на її поважний вік, досі активно використовується у бекенді. Має своєрідний синтаксис і неоднозначне відношення зі сторони кодерської спільноти, хоча за своєю легкістю нагадує Python та JavaScript. Мовою PHP наразі написано багато legacy коду, тому окрім створення нових застосунків є потреба переписувати код іншими мовами.
SQL – класична мова запитів для маніпуляцій із даними. Використовується усіма розробниками, котрі працюють з реляційними базами даних, тому і має відносно високу популярність.
Bash/Shell – це командні оболонки для написання скриптів, котрі дозволяють автоматизувати виконання рутинних задач. Важливі інструменти в роботі системних адміністраторів та DevOps інженерів.
Які мови обирають українські розробники?
Також звернімося і до аналітики від DOU – спільноти професійних українських розробників, а саме – розглянемо зарплати українських девелоперів (зима 2023). Дізнаємось, які МП наші розробники використовують у якості основних:
Першими йдуть мови для створення фронтенду, оскільки майже весь веб FrontEnd створюється мовами JavaScript та/або TypeScript. За ними – універсальні мови C#, Java, Python та мова серверного розроблення PHP. Kotlin та Swift – це мобільне розроблення під Android та iOS відповідно. Далі йдуть менш популярні напрямки.
Таким чином, наразі більше 85% українських розробників-респондентів у якості основної МП використовують одну з восьми вищенаведених мов.
Тепер розглянемо медіанні зарплати українських розробників відповідно до МП, які вони використовують у якості основних:
Найбільш високооплачуваними для вітчизняних Junior розробників-респондентів є Ruby та C++. Але інші мови від них не сильно відстають. На рівень заробітньої плати також впливає навичка проходження співбесід, оскільки багато працедавців просто не вказують в оголошеннях конкретну суму, а отже, чим краще ви пройдете співбесіду, тим більшу суму вам зможуть запропонувати.
Динаміка зарплат для джунів за останні пів року:
JavaScript – не змінилася.
Java – на рівні грудня 2021.
C#/.NET – підвищилась на 50 USD.
PHP – знизилась на 50 USD.
Python – знизилась на 45 USD.
C++ - зросла на 100 USD.
Ruby/Rails – зросла на 125 USD (але кількість респондентів невелика, тому число може не відображати реальної ситуації).
Swift – підвищилась на 50 USD.
Kotlin – підвищилась на 100 USD.
TypeScript – підвищилась на 60 USD.
Кількість вакансій та відгуків в Україні
Розглянемо ще одну аналітику від DOU, яка стосується кількості вакансій та відгуків станом на грудень минулого року.
До деяких позицій наведемо мови програмування, котрі там використовуються:
Найбільше співвідношень відгуків до вакансій у FrontEnd (окрім JavaScript та TypeScript використовують ще мови верстання HTML & CSS) – конкуренція одна з найвищих на ринку ІТ.
Менше конкуренції у Java, Python, .NET – їхні сфери використання та мови вже розібрали вище.
Node.js – платформа для серверного розроблення мовою JavaScript або TypeScript.
Big Data та Data Science – у цих сферах найчастіше використовується Python.
iOS/macOS розроблення ведеться мовою Swift, рідше – Objective-C.
Flutter – це мобільне розроблення під Android та iOS мовою Dart.
Unity – створення ігор мовою C# на рушії Unity.
React Native – розроблення мобільних та десктопних застосунків мовами JavaScript & TypeScript.
Blockchain – розроблення за допомогою Java, Node.js, Golang, Rust та ін.
Android – створення мобільних додатків мовами Java & Kotlin (Kotlin – набагато затребуваніша тут).
DBA (Database Administrator) – розроблення ведеться мовою SQL, PL/SQL з використанням різноманітних СУБД (PostgreSQL, MySQL тощо).
Ruby – бекенд розроблення мовою Ruby.
DevOps – використовується мова Python, інструменти Bash/Shell.
Висновки
Тож яку мову програмування обрати у якості першої? Є три основні варіанти в залежності від того, яку мету ви перед собою ставите:
Якщо ви хочете опанувати програмістський фундамент, сформувати правильне алгоритмічне мислення, а вже потім орієнтуватися на більш прикладні речі – починайте свій шлях у програмуванні разом з Pascal, Basic або C++. Перші дві мови вивчаються ще в школі і закладають правильні кодерські звички, надійну базу, в той час як C++ - це значно складніша мова, котра зачасту розглядається в університетах, але вона також гарна у вивченні фундаменту. Варто відмітити, якщо ви будете успішні у C++, інші мови зможете дуже легко опановувати і швидко розвиватиметеся далі за конкретним напрямом розроблення. Цей варіант підійде тим, у кого є час (якщо йти шляхом Pascal, Basic) або ж тим, у кого є не тільки час, а й любов до викликів (C++).
Якщо ви хочете опанувати правильний програмістський фундамент, але прагнете вивчати мову, яка вже активно застосовується у розробленні і при цьому не потребує таких зусиль для вивчення, як більш складні C/C++ – обирайте між Java або C#. Це класичні мови, які навчать вас базі і при цьому будуть досить затребувані на ІТ-ринку ще довгий час, що дозволить відносно швидко знайти роботу. Це найкращий варіант з усіх трьох з точки зору компромісності між легкістю вивчення, швидкістю становлення в подальшому розробником і отриманням кодерської бази.
Якщо ви хочете максимально швидко потрапити в ІТ – зверніть увагу на JavaScript та Python. Вони легкі в опануванні, швидко вивчається синтаксис, ринок має досить багато вакансій під JavaScript. Також ці мови мають велике ком'юніті, тому матеріалів для вивчення ви знайдете вдосталь.
Багато хто хоче потрапити в ІТ саме через останній – третій варіант. Але в чому його недоліки? Почнемо з JS:
велика конкуренція (згадували під час розгляду аналітики);
надто велика варіативність – кожен розробник може писати код за своїми власними правилами і буде важко читати та розуміти логіку його роботи;
в інтернеті багато відповідей низької якості;
з джаваскрипту важче переходити на інші мови програмування, аніж навпаки;
значний шанс пропустити базові концепції програмування і високий ризик написання поганого коду.
У Python приблизно ті самі проблеми плюс наявність своєрідного синтаксису, який може плутати.
Це не означає, що дані мови – погані. Абсолютно кожна має як свої плюси, так і мінуси – і це нормально.
МП треба обирати, відштовхуючись від сфери, в якій ви збираєтеся себе реалізовувати. Тільки тоді цей вибір буде максимально вдалим і корисним для вас.
Коротенько резюмуючи: якщо вас цікавить розроблення веб-сайтів – всього того, що на стороні клієнта, ви хочете постійно бачити наочний результат своєї роботи, – обирайте JavaScript. Якщо цікавить кросплатформне ПЗ, Enterprise або мобільне розроблення під Android – вчіть Java (у мобільному розробленні потім довчите Kotlin). C# - гарний вибір для тих, хто хоче працювати з інструментами від Microsoft, створювати корпоративні застосунки, BackEnd веб-додатки, ігри, десктопні додатки під Windows. Python – незамінний у автоматизації рутинних задач, популярний у роботі з великими даними, BackEnd-ом, штучним інтелектом. Ці 4 мови покривають досить великий відсоток ІТ-спеціальностей, тому обравши одну з них ви не прогадаєте.
Де можна вивчити мови програмування? Наші курси допоможуть кожному, хто збирається вивчати популярні мови програмування та супутні технології. Портал ITVDN налічує понад 230 відео курсів та має власні програми навчання за 15 найпопулярнішими IT-професіями, серед яких:
Верстальник сайтів
FrontEnd Developer
Java Developer
Python Developer
C# / .NET Developer
Android Developer
Unity / Game Developer
PHP Developer
та інші.
Навчання відбувається у форматі записаних відео курсів – ви можете навчатися у той час, який є для вас комфортним. З усіма спеціальностями можна детально ознайомитись, перейшовши на сторінку спеціальностей ITVDN.
Якщо вас цікавить вивчення тільки мови програмування, відповідні курси ви знайдете у нашому каталозі.
Бажаємо успішного навчання та досягнення ваших амбіцій в ІТ!
Важливі аспекти роботи CLR
Автор: Vahram Papazyan
Добрый день, дорогие читатели блога ITVDN. Сегодня я затрону очень важные темы о виртуальной машине среды .Net, которую в Microsoft назвали CLR (Common Language Runtime - Общеязыковая среда выполнения). Вы узнаете, что значит промежуточный код, познакомитесь с важными компонeнтами CLR: JIT (Just in Time compiler) компилятором и его ролью в выполнении кода, также со Сборщиком Мусора(Garbage Collector). Будет полезно получить ваши отзывы, положительные и отрицательные.
C# является языком общего назначения платформы .NET (эта платформа поддерживает разные языки, которые отличаются друг от друга, например, VB.NET, F#, весь список можно поискать в интернете), разработанный компанией Microsoft, учитывая плюсы и минусы ряда языков, таких как C++ и Java. Это ни в коем случае не значит, что Microsoft занимается копированием, в мире технологий это в порядке вещей, каждая новая технология основывается на старых, Java был разработан на основе других языков (включая C++), такие инструменты для Java, как Spock Framework или Gradle, были созданы, учитывая минусы предшественников, сам C++ был разработан на основе C и в начале назывался “Си с классами”. Вся эта информация доступна в интернете. Вернемся к C#, двумя его особенностями являются компиляция кода и автоматическая сборка мусора. Поговорим о каждой по отдельности.
Компиляция кода
Сущность компиляции в том, что написанный нами код сначала компилятором (каждый язык .Net имеет свой компилятор) переводится в промежуточный язык IL(Intermediate Language, его также называют MSIL, CIL или просто байт-код). После байт-код переводится в машинный код (нули и единицы), понятный процессору. За это отвечает JIT-компилятор. Это свойство есть и у других языков .NЕТ платформы, если, например, есть программа, написанная на C# и VB.NET, они отдельно скомпилируются, но после эти части программы уже будут соединены в одно целое на уровне байт-кода. Если здесь задуматься, можно понять смысл названия “Общеязыковая среда выполнения”, это среда, где вместе выполняется байт-код от разных языков .NET платформы.
Способом компиляции работают также языки C++ и Java. Есть еще интерпретируемые языки, в их случае код выполняется строка за строкой. Наиболее известными языками этого семейства являются Javascript, PHP, Python.
А теперь давайте создадим консольное приложение и посмотрим, что из себя представляет байт-код. Откройте папку приложения, зайдите в bin, потом Debug и скопируйте путь к этой папке, она вам пригодится. Для этого просто нажмите на иконку папки, который показан стрелкой в картинке снизу.
Папка будет пуста, но как только выполните программу, в ней появятся 3 файла, первый из них мы откроем с помощью утилиты ILDasm (IL Disassembler), который устанавливается вместе с Visual Studio. В картинке не видно, но у файла расширение “.exe”.
Делать это очень просто, откройте Start Menu, в папке Visual Studio найдите Developer Command Prompt и запустите его.
В появившемся окне напишите “ildasm.exe” и путь к файлу, который вы скопировали, после добавьте имя первого файла в списке вместе с расширением(у меня имя файла “HelloStudents”, потому что я так назвал свой проект). В открывшемся окне увидите Манифест сборки и имя вашего проекта.
Развернув его, перед вами откроется такая картинка.
Давайте откроем “Main : void(string[])”, здесь IL-код нашего метода Main, который во время выполнения программы JIT-компилятор генерирует в машинный код.
О работе JIT добавлю, что есть 3 типа:
Нормальный(по умолчанию) JIT
Econo JIT
Pre JIT
Чтобы не было необходимости постоянно проделывать эти шаги, есть способ открыть ILDasm через Visual Studio. Для этого в Visual Studio откройте External Tools в разделе Tools.
В поле “Title” дайте название “ILDasm”, а для поля “Arguments” выберите значение, которое видите на скриншоте, после нажмите на многоточия поля “Command” и найдите папку, где находится ildasm.exe в операционной системе(у меня путь к нему был таким C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6.1 Tools), выберите нужный файл.
Сохраните изменения и после этого в разделе “Tools” появится ILDasm.
Примечание
Eсли присмотреться к картинке сверху, можно увидеть дату релиза фреймворка .NET версии 4.6.1
Автоматическая сборка мусора
Цель автоматической сборки мусора состоит в том, чтобы освобождать память во время работы программы автономно, тем самым освобождая разработчиков от этой проблемы, которая требует довольно больших усилий. С этой стороны, C# - противоположность известного языка C++, который требует вручную освобождать память при написании программы. Проще говоря, в случае C++ при выполнении программы память освобождается в соответствии командам, которые дали сборщику мусора разработчики и соответственно это приводит к быстродействию программы, а в случае C# сам CLR решает, когда и как освобождать память, но это отрицательно влияет на скорость выполнения кода.
Важным аспектом, который на мой взгляд должен знать каждый начинающий C# разработчик, является понятие поколений. Объекты, созданные в ходе выполнения программы, хранятся в управляемой куче, в которой разделяются 3 поколения (поколение 0,1,2), их размер устанавливает CLR.
В первой хранятся только что созданные объекты, когда в нем не хватает места для новых объектов, сборщик мусора очищает ненужные, чтобы освободить память, а оставшиеся перемещает в поколение 1. Если в следующий раз при работе сборщика в поколении 0 будет достаточно свободного места для новых объектов, поколение 1 останется нетронутым, даже если там существуют объекты, являющиеся мусором. Но как только при очистке поколения 0 не освободится достаточно памяти для новых объектов, сборщик мусора вместе с поколением 0 очистит и его.
Все объекты, которые переживут очистку в поколении 1, перейдут в поколение 2. Если дойдет до того, что начнется чистка в поколении 2, объекты, пережившие ее, останутся там же. Этим способом осуществляется очистка так называемых малых объектов, но существуют также большие объекты, размер которых достигает 85000 байт и выше. Они сразу помещаются в поколении 2.
Такой способ освобождения памяти повышает производительность, так как делать очистку и сжатие (дефрагментация) памяти в отдельной части управляемой кучи получится быстрее, чем сразу во всей куче.
Читая эту статью, можно было подумать, что сборщик мусора работает полностью без вмешательства разработчиков, но это не совсем так. Существует статический класс GC, в котором реализованы ряд статических методов и одно свойство, которые дают возможность поработать со сборщиком мусора.
Это было все, что я хотел сказать, если тема вам интересна, прочитайте и выполните задания, приведенные ниже.
Самостоятельная работа
Прочитайте об этих понятиях
Высокоуровневое/низкоуровневое программирование
IDE/Text Editor, различия между ними
Манифест сборки
Ассемблер, различие от IL
Управляемый/неуправляемый код, для чего реализован интерфейс IDisposable
Полезные ресурсы
Очень рекомендую изучить материалы о сборке мусора в руководстве Microsoft по .NET и прочесть главу 21 книги Дж. Рихтера “CLR via C#”. Их довольно трудно усвоить, но если прочтете 2-3 раза, во многом разберетесь, я сам пользовался ими для этой статьи. С их помощью узнаете, в каких случаях, кроме переполнения памяти, производится очистка памяти, узнаете о режимах сборки мусора, получите больше информации о куче больших объектов, увидите примеры использования класса GC. Кстати, на сайте ITVDN можете найти обзор книги Рихтера от Александра Шевчука.
Автор: Vahram Papazyan