Пять лет использования c++ под проекты для микроконтроллеров в продакшене
Содержание:
Что нужно изучать дальше
Ссылочные типы данных
Мы рассказывали только про примитивные типы и совсем немного — про ссылочные. Переменные ссылочного типа отличаются тем, что в них хранится не какое-то значение, а ссылка. Рассмотрим это на примере массивов:
Строки тоже относятся к ссылочным типам данных, потому что на самом деле это массивы из символов.
Изучение новых типов данных поможет понять в том числе, почему в массивы нельзя добавлять элементы, а в строки — можно.
Объектно-ориентированное программирование
ООП позволяет смотреть на программный код не как на набор функций, переменных и команд, а как на классы и объекты со своими свойствами и поведением. Это ускоряет разработку и делает код более понятным.
Сейчас ООП считается самой популярной парадигмой программирования. Для ознакомления можете почитать нашу серию статей про ООП в C#. Хотя реализация в C++ может отличаться, принципы объектно-ориентированного программирования везде примерно одинаковые.
Многопоточность
Кажется, что компьютер занят множеством задач одновременно, но это не так. За раз ядро процессора выполняет только одну какую-то операцию. А видимая многозадачность достигается с помощью создания нескольких потоков для решения задач.
Подробнее об этом можете прочитать в нашей статье об асинхронном программировании (раздел про принцип работы процессора будет полезен вне зависимости от вашего языка).
Работа с файлами
Данные, которыми оперирует программа во время работы, нужно куда-то сохранять, чтобы они не исчезли без следа. Пользователю удобнее, если программа будет, например, формировать для него финансовый отчёт и сохранять его в Excel-файл. Если же приложение так не может, его возненавидят те, кому придётся копировать все данные и сохранять их вручную.
Работа с файлами важна практически во всех программах — от игр (загрузка локаций, сохранение прогресса) до медиаплееров (чтение аудио и видео).
Сетевое программирование
Сейчас сложно найти программу, которая не работает с интернетом, — она либо напрямую связана с ним (онлайн-игры, браузеры, мессенджеры), либо банально качает обновления и отправляет разработчикам статистику.
Существуют как простые функции работы с сетью, вроде отправки запросов и скачивания файлов по ссылке, так и сложные, вроде сокетов
И это тоже чрезвычайно важно знать
Системы управления базами данных
Базы данных — один из самых удобных способов хранения информации. Они предоставляют огромные возможности по сортировке и выборке данных. Например, с помощью простого запроса можно узнать имена всех учеников, которые не сдали деньги на шторы в этом месяце.
Для работы с базами данных придётся выучить не только функции C++, но и отдельный язык запросов SQL.
Графические библиотеки
Я почти уверен, что вам не нравится создавать консольные приложения, ведь кому понравится это:

Когда даже редактор кода выглядит лучше:

В C++ есть несколько популярных библиотек, чтобы создавать графические интерфейсы (GUI). Например, Qt или GTK. В конце концов, вы можете напрямую говорить видеокарте, как она должна показывать ваше приложение.
Deep learning: which language is better for AI
You might think that Python is the leading language in terms of machine learning. However, C++ is the base for most of the frameworks for deep learning; developers add other languages later. One of the advantages of using C++ is the faster runtime code. Additionally, there are C++ frameworks specifically for deep learning purposes.
- Eblearn is an open-source framework for performing machine learning models.
- Google’s TensorFlow framework is for implementing numerical calculations with data flow graphs. It also works with C++, not only Python.
- Microsoft CNTK is a deep learning framework written in C++.
- Caffe lets you create convolutional neural networks.
C# deep learning became an option with ML.NET. It is for creating and adding original machine learning models into programs. However, C# is not a very suitable choice for machine learning (unless we are talking about building AI in games).
Overall, the best languages for machine learning are those that are performance-oriented (such as C++) or have many resources and frameworks (such as Python).
C плюс единичка
В конце 67-х годов появился язык Simula 67, в котором были впервые сформулированы принципы объектно-ориентированного программирования. В 1980 году сотрудник всё той же компании фирмы Bell Labs Бьёрн Страуструп писал на языке Simula программу моделирования телефонных вызовов. Но Simula очень медленно работал. В то время как язык С был намного быстрее.
Бьёрн Страуструп
Тогда Страуструп решил добавить принципы ООП в язык C. Получившийся язык сначала был назван «C with classes» («Си с классами»). Название «С++» придумал Рик Мэсчитти. В название использован оператор «++», что на языке С означает добавить единичку. То есть к множеству возможностей C добавлена еще одна.
При этом в самом начале этот язык не имел собственного компилятора. Сначала текст программы обрабатывался препроцессором, а потом передавался компилятору C.
Первый коммерческий выпуск язык C++ состоялся в октябре 1985 года.
3. C плюс половинка
В 2000 году компания Microsoft подготовила инструментарий для разработки приложений – платформу .NET. Одним из компонентов этой платформы стала технология активных серверных страниц ASP.NET (Active Server Page). Она была написана на языке C#. Читается С Sharp (от англ. sharp — диез). Или на программистском сленге — «Си диез».
Авторами языка программирования C# стали четыре человека. Руководил группой Андерс Хейльсберг, который до этого разработал Turbo Pascal и Delphi.
Андерс Хейлсберг
Возможности C# копируют возможности языка Java, который был выпущен в 1995 году и стал очень популярным.
Ключевым отличием от C++ (как и в языке Java) стало следующее изменение. Так как в C++ есть множественное наследование, которое приводит к проблеме ««, то в C# множественное наследование было убрано. Таким образом, к языку С добавлена уже не единичка, а половинка. В музыке знак # (диез) как раз и означает означает повышение звука на полтона.
Но есть и другая трактовка. Если присмотреться, то диез состоит из четырех маленьких плюсиков. Поэтому C# — это сокращенное название C++++.
После появления этих вариантов языка C каждый из языков стал развиваться самостоятельно. Но популярности С клоны так и не достигли. Это можно посмотреть в рейтингах языков программирования.
4. Существует ли язык C минус единичка?
Да, существует. Только сейчас он по-другому называется. С названием у этого языка вообще не задалось.
В 1992 году компания Nombas начала разработку встраиваемого скриптового языка Cmm (Си-минус-минус). Этот язык потом был переименован в ScriptEase. В апреле 1995 года Брендан Эйх доработал этот язык и назвал его Mocha.
Брендан Эйх
Затем этот язык переименовали в LiveScript, а в декабре 1995 этот язык получили свое окончательное название — JavaScript.
Principles of C# development
- It should be simple, modem, general-purpose, object-oriented programming language.
- The language and implementations should provide support for software engineering principles
- C# is an ideal choice for building applications for both hosted and embedded systems.
Difference between C++ and C#
C++ Vs. C#| Parameter | C++ | C# |
|---|---|---|
| Type of language | C++ is a low level and platform neutral programming language. | C# is a high-level language. |
| Compiling | C++ compiles down to machine code | C# ‘compiles’ down to CLR (Common Language Runtime), which is interpreted by JIT in ASP.NET |
| Memory management | In C++, you need to manage memory manually if you dynamically allocate object. | C# runs memory management automatically |
| Multiple inheritances | C++ support the multiple inheritances | C# does not support multiple inheritances. |
| Level of difficulty | C++ includes more complex features. | C# doesn’t have any complex features. It has a simple hierarchy and quite easy to understand. |
| Default access Specifier | Public in C++ for Struct. Private for classes | Private in C# .net. |
| Platform | C++ is a language that runs on all sorts of platforms. It is also equally popular on Unix and Linux systems. | C#, while standardized, is rarely seen outside windows. |
| Standalone applications | C++ can create standalone applications. | C# can’t make a standalone application. |
| Object Oriented | C++ is not a complete object orient language. | C# is a pure object-oriented language. |
| Bound checking | Does not support bound checking of arrays. | Supports bound checking of arrays. |
| Garbage Collection | C++ does not support garbage collection. | C# supports garbage collection. |
| Multiple inheritance | C++ supports multiple inheritance. | C# does not offer multiple class inheritance. |
| Foreach Loop | C++ does not support for each loop. | C# supports for each loop. |
| Use of pointers | You can use pointers anywhere in the program. | You can use pointer only in the unsafe mode. |
| Used for | Widely used in gaming. | C# programming can be used to create Windows, mobile, and console applications. |
| Size of binaries | C++ is much more lightweight. | C# has a lot of overhead and libraries should be included before it will compile. |
| Type of Projects | C++ programmers generally focus on applications that work directly with hardware or that need better performance than other languages can offer. | C# is used for modern app development. |
| Compiler warnings | C++ allows you to do almost anything provided the syntax is right. Therefore, it is flexible language, but you may cause serious damage running OS. | C# is highly protected. as it Compiler will throw errors and warnings in case you inadvertently write code that can cause damage. |
| Compilation result | After compiling, C++ code is converted into machine code. | After compiling, C# code is converted into an intermediate language code. |
| Switch statement | In C++ Switch Statement, the test variable can’t be a string. | In a C# switch statement, may or may not be a string. |
Преимущества C#
Данный язык использует объектно-ориентированный подход к программированию во всем. Это означает, что тебе нужно будет описывать абстрактные конструкции на основе предметной области, а потом реализовывать между ними взаимодействие. Данный подход пользуется большой популярностью, потому что позволяет не держать в голове всю информацию, а работать по принципу черного ящика: подал входные данные -> МАГИЯ -> PROFIT.
Программирование — это магия
Также в языке присутствует обилие синтаксического сахара, который делает тяжелую жизнь программиста капельку слаще. Вместо того, чтобы писать 100500 строк кода, ты просто используешь готовую конструкцию, а компилятор сделает за тебя всю грязную работу. Но некоторые такие конструкции являются не самыми оптимальными с точки зрения производительности. Но все это перекрывается за счет удобочитаемости кода и высокой скоростью разработки.
Еще стоит упомянуть, что все это работает на базе платформы .NET Framework. Что это означает? Для многих непосвященных, это просто какая-то приблуда, которую нужно установить на комп, чтобы программа запустилась, но дело обстоит значительно глубже. Написанный тобой код на языке C# транслируется в промежуточный язык (IL), который в свою очередь уже преобразуется в машинный код на твоем компьютере прямо во время выполнения приложения (JIT). Спрашивается, зачем это все? А суть в том, что ты можешь пилить со своим другом Васей на разных языках один и тот же проект и ни одному из вас не придется переучиваться. Но я никогда не видел, чтобы это реально использовали на практике. Но это еще не все. Так как окончательная компиляция из промежуточного кода выполняется в живую на твоей конкретной машине, то возможно увеличение производительности за счет использования специфических команд именно твоего процессора.
В программировании нельзя быть в чём-то уверенным на 100%
Лично для меня одним из самых важных плюсов является наличие большого количества библиотек и шаблонов, позволяющих не тратить время на изобретение своего собственного велосипеда, из костылей, со слоупоком за рулем.
Герб программистов
Ты просто скачиваешь нужное тебе решение из nuget и начинаешь его использовать. В большинстве своем они бесплатны. Сюда же можно отнести большое количество обучающего и справочного материала. Практически на любой свой вопрос ты сможешь найти ответ на стековерфлоу. Ну а на крайний случай всегда можешь спросить в моем телеграм чате для программистов.
Немаловажно наличие хороших инструментов разработки, и здесь все очень хорошо. Абсолютное большинство разработчиков используют интегрированную среду разработки Visual Studio, которая предоставляет over9000 возможностей, использовать которые ты конечно же не будешь
Visual Studio 2019
Но IDE действительно хороша, к тому же имеется ее полнофункциональная бесплатная версия Community.
Еще к плюсам можно отнести строгую типизацию, которая позволяет защититься от дурака, и не так давно появившаяся кросспратформенность в .NET Core (да-да, мелкомягкие потихоньку захватывают линукс).
C# Vs Java
Java is an object-oriented generic programming language. It was developed with the motto of write once and run anywhere. C# is also an object-oriented programming language developed by Microsoft mainly as a competitor to Java.
C# is mainly used for building Windows applications and games. It is also used for efficient web development. It is also increasingly becoming famous for mobile development. C# has multiple features and most of the complex tasks like garbage collection or memory management have been abstracted out.
Java is a portable language i.e. code written on any platform will run on another platform. A Java Virtual Machine is created inside the Java Runtime Environment to convert the byte code to machine code. The compiler converts Java code into byte code.
Similarities Between C# And Java
Both these languages are forerunners in the transition from a low-level language to the high-level language. These languages have an inbuilt compiler to compile the bytecode to run on the virtual machine. This allows both these languages to have a syntax that is easy to understand by humans.
Both these languages don’t allow different typecasting and throw an exception at the compile time. The optimized use of memory and garbage collection is another area where both perform similarly. Both Java and C# allow only a single inheritance to remove any redundancy.
Abstraction and Interface are other similar features of both these languages.
Difference Between C# Vs Java
There are a lot of similarities between Java and C# but the basic difference between them is the purpose. C# came as a desire for Microsoft to have its own language similar to Java. Java gets support from a large open-source community.
#1) C# is designed to run on the CLR or Common Language Runtime whereas Java is designed to run on JVM or Java Virtual Machine with the help of JRE or Java Runtime Environment.
#2) Java needs JDK installed on the machine to run. C# requires .Net framework for providing huge libraries for use.
#3) Java is used for developing complex web applications whereas C# is useful for both web and game development. Mobile development with C# is also very popular.
#4) Java is very flexible and highly efficient for cross-platform compatibility. C# is not as efficient when compared to Java in cross-platform compatibility.
#5) Java offers a clear distinction between exceptions like checked and unchecked. On the other hand, C# just offers a single type of exception.
#6) Due to its open-source nature, Java has a vast library ecosystem that helps in developing the functionality quite swiftly. C# libraries are restricted to the Microsoft ecosystem hence they have only limited functionality.
#7) Java is very useful when server-side interaction is the prime functionality and C# also offers server-side language but along with decent programming functionality.
Пример на С
Так как C++ — это клон C, то мы можем писать код, как обычно мы это делаем в языке C. Сделаем это, чтобы потом сравнить отличия. Напишем следующую программу:
#include <iostream>
using namespace std;
int Sum(int x, int y)
{
return x + y;
}
int main()
{
int x = 5;
int y = 10;
int z = Sum(x,y);
cout << «Sum = » << z << endl;
return 0;
}
|
1 |
#include <iostream> usingnamespacestd; intSum(intx,inty) { returnx+y; } intmain() { intx=5; inty=10; intz=Sum(x,y); cout<<«Sum = «<<z<<endl; return; } |
В этой программе все просто. Есть две переменных x и y, и есть функция Sum, которая складывает два числа. Обозначение «cout <<» можно рассматривать как вариант функции printf.
Скопируйте этот текст и убедитесь, что все работает.
Где используется C++
Для начала важно определиться, зачем вы вообще занимаетесь программированием. Если хотите улучшать операционные системы, то придётся изучить принципы их работы
Например, вы можете посмотреть, что творится в исходном коде ядра Linux, которое частично написано на C++ (почти полностью на C, который очень похож на C++).
Если хотите работать над приложениями для компьютера, то нужно разбираться в том, для чего будут использоваться эти приложения. Например, чтобы написать программу для организации бюджета, пригодятся знания бухгалтерских формул и терминов.
C++ очень часто используется для разработки высоконагруженных систем. Например, серверов для онлайн-игр. А тут никуда без отличного знания асинхронности, многопоточности, сетевого программирования и так далее.
Недостатки C++
Может показаться, что по сравнению с C у C++ больше недостатков, но это не так — они просто другие и возникли по другим причинам. Вот некоторые из них:
- Допустить ошибку, которая приведёт к неправильной работе программы или к её падению, стало ещё проще.
- Неправильное использование механизмов ссылок, указателей и перегрузок сложно отловить на этапе поиска ошибок.
- Встроенные способы обхода ограничений компилятора дают непредсказуемые результаты (хотя, опять же, иногда это бывает полезно).
- ООП-реализация может на несколько процентов снизить быстродействие кода. Иногда это критично.
- Сложно писать кроссплатформенный код, чтобы он легко портировался на другие платформы.
- Для полного раскрытия потенциала C++ нужно знать язык действительно хорошо, иначе не будет выигрыша в скорости или эффективности.
Developments in the two languages
With time, standardization became more and more important because of large numbers of extensions and a random library with growing popularity of the language and the lack of precise implementation of compilers as per the specifications. One of the aims of the C standardization process was to produce a superset of K&R C, incorporating many of the unofficial features introduced subsequently. However, the standards committee included several new features like function prototypes, void pointers, support for international character sets and locales and a more capable preprocessor. The syntax for parameter declarations was also augmented. Post 1970s, C replaced BASIC as the leading language for microprocessor programming and became popular with its collaboration with the IBM PCs. Meanwhile, Bjarne Stroustrup and others at Bell Labs began work on creating the C++, which added object-oriented programming language constructs to C. Further, ANSI formed a committee in 1983 called X3J11, to establish a standard specification of C and in 1989, the standard was ratified as ANSI X3.159-1989 «Programming Language C.» This is the version of C that is often referred to as ANSI C, Standard C or C89. C90, introduced in 1990, was ame as C89 barring a few minor changes. While C++ evolved rapidly, C remained static until 1995 when the Normative Amendment 1 created a new standard which underwent further revision, leading to the publication of ISO 9899:1999 in 1999. This standard is commonly referred to as «C99.» It was adopted as an ANSI standard in March 2000. Some of the newer functions are mentioned below:
- Inline functions
- Ability to declare variables anywhere, instead of only after another declaration or at the start of a compound statement
- New data types like long long int, optional extended integer types, explicit boolean data type and complex type to denote complex numbers
- Array lengths can be variable
- One-line comments beginning with // supported
- Library functions like snprintf
- New header files, such as stdbool.h and inttypes.h
- Type-generic math functions (tgmath.h)
- Improved support for IEEE floating point
- Designated initializers
- Compound literals
- Support for variadic macros (macros of variable arity)
C++, while continuing to evolve to meet the requirements of the future, a newer version called C++0x denoting that it is expected to be released before 2010 is currently being developed. Indications suggest that C++ will continue to capitalize on its multi-paradigm nature and notable improvements may be native support for threading and concepts thereby making working with templetes easier. More controversially, adding garbage collection is currently under heavy discussion. A group called Boost.org, that advises the C++ standards committee on good features and improvements required, is working extensively to develop C++ in its current form with expanded functional and metaprogramming abilities.
In The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he used for designing the C++. Knowing the rules helps to understand why C++ is the way it is. Much more detail can be found in The Design and Evolution of C++.
Origins of C and C++
Dennis Ritchie of the Bell Labs designed the C, a general purpose computer programming language in 1972 for use with UNIX, an operating system of then. C is predominantly used for system software programming, but is also very useful for creating general application software. Some of the adjectives used to describe C are block structured, imperative & procedural language.
C++(originally named «C with Classes» and still known as the superstructure of C in computer circles) was developed as an enhancement of C by Bjarne Stroustrup in 1983 at the Bell Labs. Stroustrup, in 1979, started by adding classes, virtual functions, operator overloading, multiple inheritance, templates, exception handling etc. The C++ programming language standard was ratified as ISO/IEC 14882:1998 in 1998 and the current version is the 2003 version, ISO/IEC 14882:2003 which is infact the corrected version of the C++ 1998. The «Library Technical Report 1», released in 2005 gives details of extensions to the standard library without being a part of the standar version. A new version of the standard (informally known as C++0x) is under development. C++ has been a highly successful commercial programming language since 1990. Though C++ is royalty-free, its documentation is not freely available.
Criticisms of C vs. C++
Despite its popularity, C has been criticized for having desirable operations being too hard to achieve and undesirable operations being too easy to accidentally invoke thereby involving more programmer skill, experience, effort, and attention to detail than other programming languages for the safe & effective use of the language.
When object-oriented languages became popular, C++ was an extension of C that provided object-oriented capabilities with C++ originally implemented as a preprocessor — source code was translated into C, and then compiled with a C compiler.
C++ being derived from C, also happens to inherit most of the criticisms leveled against C. But since the language is actually a composition of two different languages, along with the load of huge programs, often end up making the compilation huge and inappropriate in terms of pure size. When this problem is tried to be avoided, by disabling some of the fringe codes, it was again criticized for losing out on several important utilities. The creator of C++ also feels that C++ is justified to be a complex language since the modern day programming requirements have also increased in a huge manner when compared to the yesteryears.
Сферы применения языка C Sharp
В этой области C#, наверное, впереди планеты всей. Хочешь разрабатывать обычные приложения для компьютера – пожалуйста, стандартные WinForms Application и консоль тебе в помощь. Хочешь такие же, но покрасивее? – используй WPF. И специальные приложения для магазина в Windows Store тоже. Веб-приложения? – Легко ASP.NET всегда придет на помощь. На Linux? – тоже не вопрос, .NET Core уже здесь. Мобильное приложение? – Xamarin сделает сразу под все платформы. Хочешь написать игру? – движок Unity показывает себя очень даже неплохо, и при этом также адаптирует игру под различные платформы. Хочешь приблизить апокалипсис с восстанием машин и создаешь искусственный интеллект? – есть целая платформа с кучей инструментов для этого Microsoft AI Platform. Также и для компьютерного зрения и ботов. Я вообще с трудом могу придумать пример того, что невозможно реализовать на C#. Я где-то встречал даже операционную систему написанную на шарпе. Поэтому в этой области все хорошо.
Когда ты .NET-разработчик
C++ vs. C#: game development with Unity and Unreal Engine
Both C# and C++ can be used to create games. However, C++ has better control hardware on the PC or server. Therefore, it is usually a more suitable language for game development.
However, both languages are for game development, especially knowing that you won’t be creating games from scratch (usually). Game engines help you produce games without having to figure out the physics and animations on your own.
Therefore, even people with average programming skills can start producing entertaining gaming applications. Additionally, the scripting performed in game engines differs from regular programming.
Unity
C# and Unity are the tools that most beginners will start to use. Unity is a game engine that lets you produce scripts for interactive content of games.
Even the smallest piece of content in Unity starts from a GameObject, which gets components (or properties) to perform certain actions. For instance, a source of light in the game would receive the light component. You can assign these properties through the script or the Inspector window.
While using the combination of C# and Unity, you will quickly notice that you can add more properties and make them unique by writing script instead of using built-in features. However, many beginners take advantage of the existing components. As a result, games based on Unity tend to look similar.
When comparing C# vs# stands out because you will be able to produce the game more quickly than using C++. For instance, take a look at this course for beginners about creating games with unity. It teaches you the basics of downloading and installing Unity, using interface windows and tabs, etc.
Want to try and create an actual game by using C# and Unity? This course provides a step-by-step guide for creating your first game in Unity. One interesting fact is that the Unity engine was created with C++, but users apply C# for game development.
Unreal Engine
The ability to distribute across various platforms might play a big role when choosing C++ or C# for games. C++ is easier to distribute, but beginners should not choose this language for their first game-development attempts. You may spend more time trying to get your code to work. However, games developed in C++ tend to work faster and are more polished.
People who want to create games with C++ often choose Unreal Engine, which presents a set of tools for developing and designing games. Unreal Engine is not very beginner-friendly, meaning that people need more advanced programming skills to use it. By using C++ in the Unreal Engine, developers add the main structure of the gameplay system, and designers enhance it.
The verdict in the decision of C# vs. C++ for games depends on your level of programming and determination. For beginners, playing around in the Unity environment is enough, but if you want a more powerful engine, choose C++ with Unreal engine.
Syntax rules: C# vs. C++
The question of C++ vs. C# syntax is not difficult to answer. For beginners, the structure and conventions of C++ might be difficult to understand. Let’s review the main difference in the syntax rules of C# vs. C++:
- C# does not have global functions. The solution for this is creating static classes.
- C++ has header files, while C# does not have them.
- Instead of #include headline at the beginning of the C++ code, C# applies using statements (for instance, using System;).
- C# supports single inheritance, while C++ supports multiple.
- Pointers are not applicable in C#. Instead, C# uses references in the unsafe code.
- C++ does not support for each loop; C# does.
Итоги
C# это объектно-ориентированный язык с большим количеством синтаксического сахара, что позволяет экономить время и силы. Он используется во многих крупны организациях, стартапах, а также начинающими. Имеется удобная и бесплатная среда разработки. Достаточно прост в освоении на базовом уровне, но содержит вагон и маленькую тележку скрытых особенностей, чтобы разобраться в которых потребуется много времени. Позволяет разрабатывать универсальные мобильные приложения и игры, но используется для этого достаточно редко.
В целом это перспективный язык, достаточно простой для освоения начинающим. Но следует помнить, что существует множество альтернатив, которые лучше подходят под некоторые задачи. Например, могу порекомендовать языки C++, Java, Python.
При этом следует понимать, что язык очень мощный и на изучение всех тонкостей потребуется много времени, но изучить основы синтаксиса, понять принципы ООП и разработки в целом вполне возможно любому заинтересованному человеку.
Основная идея C# — это универсальность. Ты можешь реализовать все на одном языке и для любой платформы, но с большой долей вероятности это будет работать медленнее, чем разработанное специально под конкретную платформу.
Он неплохо подходит как для начинающих в качестве первого языка, так и для реализации крупных коммерческих проектов.
Читайте продолжение данного цикла в следующей статье Создание первого Hello World приложения на C#. А также подписывайтесь на группу ВКонтакте, Telegram и YouTube-канал. Там еще больше полезного и интересного для программистов. С вами был Вадим. Пока!