"C# vs JS" by Maxim Goncharuk

Preview:

Citation preview

Nikita Semenistyi
что?
Nikita Semenistyi
там классы, а тут монстры. не логично
Nikita Semenistyi
я обиделся. Макс не прошел собеседование
Nikita Semenistyi
переделать все. можно в несколько слайдов
Nikita Semenistyi
ничего не понятно

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

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

.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

Конецmaksim.goncharuk@binary-studio.co

mmaksim.g_binary

Recommended