27

"C# vs JS" by Maxim Goncharuk

Embed Size (px)

Citation preview

Page 1: "C# vs JS" by Maxim Goncharuk
Nikita Semenistyi
что?
Nikita Semenistyi
там классы, а тут монстры. не логично
Nikita Semenistyi
я обиделся. Макс не прошел собеседование
Nikita Semenistyi
переделать все. можно в несколько слайдов
Nikita Semenistyi
ничего не понятно
Page 2: "C# vs JS" by Maxim Goncharuk

...или как достичь синергии.

Максим Гончарук

.NET разработчикBinary Studio

2

Page 3: "C# vs JS" by Maxim Goncharuk

Синергия — суммирующий эффект взаимодействия двух или более факторов, характеризующийся тем, что их действие существенно превосходит эффект каждого

отдельного компонента в виде их простой суммы

3

Page 4: "C# vs JS" by Maxim Goncharuk

Агенда1.Современное приложение

2.История языков

3.Парадигмы ООП

4.Немного кода

5.Жизненный цикл кода

6.Сходства и различия

7.Рабочее окружение

8.Экосистема

9.Пример продукта

10.Развитие

4

Page 5: "C# vs JS" by Maxim Goncharuk

Современное приложение

5

Page 6: "C# vs JS" by Maxim Goncharuk

Современное приложение

6

Page 7: "C# vs JS" by Maxim Goncharuk

История

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)

Page 8: "C# vs JS" by Maxim Goncharuk

Парадигмы объекто-ориентированного программирования

8

Page 9: "C# vs JS" by Maxim Goncharuk

Парадигмы ООП

9

Парадигма C# JS

Абстракция данных + +

Инкапсуляция + + / -

Наследование + +

Полиморфизм + + / -

Класс + -

Объект + +

Page 10: "C# vs JS" by Maxim Goncharuk

Немного кода

10

Page 11: "C# vs JS" by Maxim Goncharuk

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

Машинный код

Page 12: "C# vs JS" by Maxim Goncharuk

Жизненный цикл программного кодаC#

12

VB.NET Bytecode Native code

Компилятор

CLR

Runtime

JIT

C#

F#

Page 13: "C# vs JS" by Maxim Goncharuk

Hello world

console.log(“Hello world”);

13

010101101010010

Машинный код

JS

Page 14: "C# vs JS" by Maxim Goncharuk

Жизненный цикл программного кодаJS

14

JavaScript Native codeV8 (libeio,

libev)

Runtime

JIT

Page 15: "C# vs JS" by Maxim Goncharuk

V8 & CLR

15

v8 CLR

Кроссплатформенность + + \ -Многопоточность - +Безопасность кода + \ - +Встраиваемость + -Управление системными ресурсами

- +

Page 16: "C# vs JS" by Maxim Goncharuk

C# JS

Enterprise Startup

16

Page 17: "C# vs JS" by Maxim Goncharuk

Сходства и отличия

17

C# JS

Императивное программирование + +

Объектно-ориентированное программирование + +

Функциональное программирование +/- +

Сборка мусора + +

Статическая типизация + -

Динамическая типизация +/- +

Многопоточность + -

Событийно-ориентированное программирование +/- +

Page 18: "C# vs JS" by Maxim Goncharuk

Event loop

18

Page 19: "C# vs JS" by Maxim Goncharuk

Рабочее окружение и инструменты

C# JS

19

Visual studio

Visual studio code

Monodevelop

Xamarin Studio

SnoopWebstorm

Sublime

Atom

Chrome developer tools

Emacs

Page 20: "C# vs JS" by Maxim Goncharuk

Экосистема

20

Open Source community

Коммерческая разработка

Page 21: "C# vs JS" by Maxim Goncharuk

Экосистема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

Page 22: "C# vs JS" by Maxim Goncharuk

Пример нашего проекта

22

Сайт (JS)

Оконное приложени

е (C#)

Сервисы (WCF, Web, Win) (C#, ...)

Сторонний сервис (C+

+)

SQL1SQL2

NoSQL

Page 23: "C# vs JS" by Maxim Goncharuk

РазвитиеC#

1.Кроссплатформенность.

2.Open Source

3.Синтаксический сахар

4.Функциональное программирование

23

Page 24: "C# vs JS" by Maxim Goncharuk

Развитие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

Page 25: "C# vs JS" by Maxim Goncharuk

Выводы

25

Page 26: "C# vs JS" by Maxim Goncharuk

Вопросы?

26