SlideShare a Scribd company logo
1 of 27
...или как достичь синергии.
Максим Гончарук
.NET разработчик
Binary Studio
2
Синергия — суммирующий эффект взаимодействия двух или более
факторов, характеризующийся тем, что их действие существенно
превосходит эффект каждого отдельного компонента в виде их
простой суммы
3
Агенда
1.Современное приложение
2.История языков
3.Парадигмы ООП
4.Немного кода
5.Жизненный цикл кода
6.Сходства и различия
7.Рабочее окружение
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 world
using 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 code
V8 (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
Snoop
Webstorm
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++)
SQL1
SQL2
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.com
maksim.g_binary

More Related Content

Similar to "C# vs JS" by Maxim Goncharuk

Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Alexander Babich
 
Архитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetАрхитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetGoSharp
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программTatyanazaxarova
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Rinat Shaikhutdinov
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)Andrey Gordienkov
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAndrey Gordienkov
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpgeekfamilyrussia
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Yandex
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Yandex
 
Асинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCАсинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCEugene Agafonov
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETDev2Dev
 
12 reasons to love symfony2
12 reasons to love symfony212 reasons to love symfony2
12 reasons to love symfony2Alexei Smolyanov
 
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"Expolink
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++Olga Maksimenkova
 
Архитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийАрхитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийConstantiner
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковCodeFest
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET CoreAndrew Gubskiy
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...epamspb
 

Similar to "C# vs JS" by Maxim Goncharuk (20)

Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
Архитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.NetАрхитектурные решения при создании облачного сервиса на Asp.Net
Архитектурные решения при создании облачного сервиса на Asp.Net
 
Отладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программОтладка и оптимизация многопоточных OpenMP-программ
Отладка и оптимизация многопоточных OpenMP-программ
 
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
Разработка модуля для отладки приложений на языке ActionScript 3 в среде Visu...
 
Net framework
Net frameworkNet framework
Net framework
 
AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)AOP and Design Patterns (GoF)
AOP and Design Patterns (GoF)
 
Aspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design PatternsAspect Oriented Programming and Design Patterns
Aspect Oriented Programming and Design Patterns
 
Автоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharpАвтоматизация design patterns и компактный код вместе с PostSharp
Автоматизация design patterns и компактный код вместе с PostSharp
 
Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"Юрий Василевский "Автоматизация в XCode"
Юрий Василевский "Автоматизация в XCode"
 
Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»Юрий Василевский «Автоматизация в XCode»
Юрий Василевский «Автоматизация в XCode»
 
Асинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVCАсинхронное программирование в ASP.NET MVC
Асинхронное программирование в ASP.NET MVC
 
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NETЭволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
Эволюция корпоративных Web приложений. Молотков Андрей D2D Just.NET
 
[Add 4] crossplatform .net
[Add 4] crossplatform .net[Add 4] crossplatform .net
[Add 4] crossplatform .net
 
12 reasons to love symfony2
12 reasons to love symfony212 reasons to love symfony2
12 reasons to love symfony2
 
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"
Газинформсервис. Сергей Лачугин "Актуальные проблемы защиты SAP"
 
Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
Архитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложенийАрхитектурные проблемы Flex-приложений
Архитектурные проблемы Flex-приложений
 
Frontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиковFrontend: Путешествие в мир модульных загрузчиков
Frontend: Путешествие в мир модульных загрузчиков
 
Микросервисы в .NET Core
Микросервисы в .NET CoreМикросервисы в .NET Core
Микросервисы в .NET Core
 
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
#ITsubbotnik Spring 2017: Sergey Mishanin "Report Portal. Руководство для аде...
 

More from Binary Studio

Academy PRO: D3, part 3
Academy PRO: D3, part 3Academy PRO: D3, part 3
Academy PRO: D3, part 3Binary Studio
 
Academy PRO: D3, part 1
Academy PRO: D3, part 1Academy PRO: D3, part 1
Academy PRO: D3, part 1Binary Studio
 
Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Binary Studio
 
Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Binary Studio
 
Academy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXAcademy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXBinary Studio
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Binary Studio
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Binary Studio
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Binary Studio
 
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio
 
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio
 
Academy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousAcademy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousBinary Studio
 
Academy PRO: React native - publish
Academy PRO: React native - publishAcademy PRO: React native - publish
Academy PRO: React native - publishBinary Studio
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigationBinary Studio
 
Academy PRO: React native - building first scenes
Academy PRO: React native - building first scenesAcademy PRO: React native - building first scenes
Academy PRO: React native - building first scenesBinary Studio
 
Academy PRO: React Native - introduction
Academy PRO: React Native - introductionAcademy PRO: React Native - introduction
Academy PRO: React Native - introductionBinary Studio
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyBinary Studio
 
Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Binary Studio
 
Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Binary Studio
 
Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Binary Studio
 
Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Binary Studio
 

More from Binary Studio (20)

Academy PRO: D3, part 3
Academy PRO: D3, part 3Academy PRO: D3, part 3
Academy PRO: D3, part 3
 
Academy PRO: D3, part 1
Academy PRO: D3, part 1Academy PRO: D3, part 1
Academy PRO: D3, part 1
 
Academy PRO: Cryptography 3
Academy PRO: Cryptography 3Academy PRO: Cryptography 3
Academy PRO: Cryptography 3
 
Academy PRO: Cryptography 1
Academy PRO: Cryptography 1Academy PRO: Cryptography 1
Academy PRO: Cryptography 1
 
Academy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobXAcademy PRO: Advanced React Ecosystem. MobX
Academy PRO: Advanced React Ecosystem. MobX
 
Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4Academy PRO: Docker. Part 4
Academy PRO: Docker. Part 4
 
Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2Academy PRO: Docker. Part 2
Academy PRO: Docker. Part 2
 
Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1Academy PRO: Docker. Part 1
Academy PRO: Docker. Part 1
 
Binary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - OrderlyBinary Studio Academy 2017: JS team project - Orderly
Binary Studio Academy 2017: JS team project - Orderly
 
Binary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - UnicornBinary Studio Academy 2017: .NET team project - Unicorn
Binary Studio Academy 2017: .NET team project - Unicorn
 
Academy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneousAcademy PRO: React native - miscellaneous
Academy PRO: React native - miscellaneous
 
Academy PRO: React native - publish
Academy PRO: React native - publishAcademy PRO: React native - publish
Academy PRO: React native - publish
 
Academy PRO: React native - navigation
Academy PRO: React native - navigationAcademy PRO: React native - navigation
Academy PRO: React native - navigation
 
Academy PRO: React native - building first scenes
Academy PRO: React native - building first scenesAcademy PRO: React native - building first scenes
Academy PRO: React native - building first scenes
 
Academy PRO: React Native - introduction
Academy PRO: React Native - introductionAcademy PRO: React Native - introduction
Academy PRO: React Native - introduction
 
Academy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis BeketskyAcademy PRO: Push notifications. Denis Beketsky
Academy PRO: Push notifications. Denis Beketsky
 
Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4Academy PRO: Docker. Lecture 4
Academy PRO: Docker. Lecture 4
 
Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3Academy PRO: Docker. Lecture 3
Academy PRO: Docker. Lecture 3
 
Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2Academy PRO: Docker. Lecture 2
Academy PRO: Docker. Lecture 2
 
Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1Academy PRO: Docker. Lecture 1
Academy PRO: Docker. Lecture 1
 

"C# vs JS" by Maxim Goncharuk