Upload
binary-studio
View
395
Download
2
Embed Size (px)
Citation preview
...или как достичь синергии.
Максим Гончарук
.NET разработчикBinary Studio
2
Синергия — суммирующий эффект взаимодействия двух или более факторов, характеризующийся тем, что их действие существенно превосходит эффект каждого
отдельного компонента в виде их простой суммы
3
Агенда1.Современное приложение
2.История языков
3.Парадигмы ООП
4.Немного кода
5.Жизненный цикл кода
6.Сходства и различия
7.Рабочее окружение
8.Экосистема
9.Пример продукта
10.Развитие
4
Современное приложение
5
Современное приложение
6
История
7
1995
2000
2005
2010
2015
Mocha (1995)ECMAScript 1 (1997)ECMAScript 2 (1998)ECMAScript 3 (1999)
ECMAScript 5 (2009)
ECMAScript 5.1 (2011)
ECMAScript 6 (2015)
C# v1.0 (2002)
C# v2.0 (2005)
C# v3.0 (2007)C# v4.0 (2010)C# v5.0 (2012)
C# v6.0 (2015)
Парадигмы объекто-ориентированного программирования
8
Парадигмы ООП
9
Парадигма C# JS
Абстракция данных + +
Инкапсуляция + + / -
Наследование + +
Полиморфизм + + / -
Класс + -
Объект + +
Немного кода
10
Hello worldusing System; namespace ConsoleApplication{ class Program { private static void Main(string[] args) { Console.WriteLine("Hello world!"); } }}
11
.method private hidebysig static void Main(string[] args) cil managed{ .entrypoint // Code size 13 (0xd) .maxstack 8 IL_0000: nop IL_0001: ldstr "Hello world!" IL_0006: call void [mscorlib]System.Console::WriteLine(string) IL_000b: nop IL_000c: ret} // end of method Program::Main
011011010010010
C#
MSIL
Машинный код
Жизненный цикл программного кодаC#
12
VB.NET Bytecode Native code
Компилятор
CLR
Runtime
JIT
C#
F#
Hello world
console.log(“Hello world”);
13
010101101010010
Машинный код
JS
Жизненный цикл программного кодаJS
14
JavaScript Native codeV8 (libeio,
libev)
Runtime
JIT
V8 & CLR
15
v8 CLR
Кроссплатформенность + + \ -Многопоточность - +Безопасность кода + \ - +Встраиваемость + -Управление системными ресурсами
- +
C# JS
Enterprise Startup
16
Сходства и отличия
17
C# JS
Императивное программирование + +
Объектно-ориентированное программирование + +
Функциональное программирование +/- +
Сборка мусора + +
Статическая типизация + -
Динамическая типизация +/- +
Многопоточность + -
Событийно-ориентированное программирование +/- +
Event loop
18
Рабочее окружение и инструменты
C# JS
19
Visual studio
Visual studio code
Monodevelop
Xamarin Studio
SnoopWebstorm
Sublime
Atom
Chrome developer tools
Emacs
Экосистема
20
Open Source community
Коммерческая разработка
ЭкосистемаOpen Source
Github: 1 998 634 (JS) против 497 035 (C#) репозиториев
Stack Overflow: 1 124 368 (JS) против 951 483 (C#) вопросов
Reddit: 83 411 (JS) против 28 573 (C#) читателей
Mono community
Xamarin forums
21
Пример нашего проекта
22
Сайт (JS)
Оконное приложени
е (C#)
Сервисы (WCF, Web, Win) (C#, ...)
Сторонний сервис (C+
+)
SQL1SQL2
NoSQL
РазвитиеC#
1.Кроссплатформенность.
2.Open Source
3.Синтаксический сахар
4.Функциональное программирование
23
РазвитиеJS
1.Мобильный рынок: Cordova, React native
2.Десктопные приложения: electron
3.Серверные решения: nodeJS, npm, express.js
4.Фреймворки: ReactJS, AngularJS, AngularJS 2.0
5.Операционные системы: chrome-os, firefox-os
6.Производительность24
Выводы
25
Вопросы?
26