СИСТЕМЫ ПРОГРАММИРОВАНИЯ

 

 

 

В мире 23 000 000 разработчиков программ.  Прогноз на 2022 год: 26 000 000.

Сколько (и где) зарабывали разработчики в 2020 ( 50 000 записей по 1200+ городов мира)

 

 

 

Доля женщин в ИТ-индустрии Беларуси:

  • 2010 год - 7,5%

  • 2020 год - 27,4%

 

 

 

 

Инструментарий программирования

 

Грэйди Буч (мастер методов коллективной разработки ПО, Chief Scientist for Software Engineering в IBM Research):

  • Разработка программного обеспечения была, остается, и, наиболее вероятно, в обозримом будущем будет оставаться фундаментально сложным видом человеческой деятельности (из доклада на CEE-SECR 2009, сделанного из Second Life).

Программирование (programming) - составление программы процесс проектирования, написания, отладки, тестирования, документирования и поддержки ПО.

Для написания программ достаточно простейшего текстового редактора, однако на таком уровне сложно достичь высокой эффективности работы.

Современное программирование осуществляется на основе использования  систем программирования (IDE  и RAD)  - технологий и средств быстрого создания программ.

Donald Knuth:

  • Люди считают, что программирование — это наука избранных, но в реальности все наоборот — просто много людей создают программы, которые используют чужие программы, как будто строя стену из маленьких кирпичиков.

22.06.2020 Экосистема разработки в 2020 году

29.06.2021

Microsoft и GitHub представили нейросетевого помощника программиста Copilot («второй пилот») на базе искусственного интеллекта от Open AI. GitHub Copilot обучен работать с различными фреймворками и языками программирования на наборе данных, хранящемся в общедоступных репозиториях, включая терабайты общедоступного кода и является помощником для написания лучшего кода. GitHub Copilot анализирует текущий код разработчика и предлагает для его доработки новые строки или функции, в зависимости от контекста. По мере того, как программист работает с системой, она адаптируется к его стилю и начинает предлагать более продуктивные решения, ускоряя текущие возможности человека. Первоначально этот инструмент будет доступен в Microsoft Visual Studio Code

 

 

 

Системы программирования

 

Система программирования (инструментальная система, среда разработки) — это совокупность компьютерных программ, предназначенных  для разработки новых программ на конкретных языках программирования.

Система программирования выступает эффективным (для достижения определенных результатов) посредником между программистом и языком программирования.

Система программирования - эффективный посредник только для достижения определенных результатов

Система программирования  является метамоделью взаимодействия программиста с языком программирования (определяет способы, характер, глубину этого взаимодействия)

Система программирования позволяет (на основании использования готовых шаблонов, фреймворков и библиотек) создавать (моделировать (конструировать) программы (правильные тексты на языках программирования) без непосредственного взаимодействия с языками программирования и даже при условии полного незнания этих языков)

Среда разработки программного обеспечения (IDE, Integrated development environment) — система программных средств, используемая для разработки программного обеспечения.

Существуют среды разработки, предназначенные для:

  • одного языка программирования (Visual Basic)

  • нескольких языков (например, Microsoft Visual Studio)

  • Декабрь, 2021 Visual Studio 2022

Обычно IDE включает в себя:

  • текстовый редактор,

  • компилятор и/или интерпретатор,

  • средства автоматизации сборки,

  • отладчик,

  • библиотеки стандартных функций и программ,

  • пользовательский интерфейс,

  • справочную систему.

Визуальные среды разработки отличает относительная лёгкость освоения, быстрота разработки, стандартизация внешнего вида программ.

Визуальные среды разработки  применяются в основном для создания прикладных программ.

 

 

 

Visual Studio Code
 

Visual Studio Code — редактор кода, с поддержкой десятков программирования и форматов файлов, который:

  • выпущен Microsoft в 2016 году как «легкий» редактор для кроссплатформенной разработки веб- и облачных приложений, позволяющий обойтись без полной интегрированной среды разработки;

  • распространяется бесплатно, разрабатывается как программное обеспечение с открытым исходным кодом;

  • доступен в версиях для платформ Windows, Linux и OS X;

  • основан на проекте Atom компании GitHub и является надстройкой над Chromium и Node.js.

  • включает встроенный отладчик, инструменты для Git и рефакторинга, навигации по коду, автодополнения типовых конструкций и контекстной подсказки;

  • поддерживает разработку для платформ ASP.NET и Node.js

  • Обеспечивает поддержку: JavaScript, C++, C#, TypeScript, jade, PHP, Python, XML, Batch, F#, DockerFile, CoffeeScript, Java, HandleBars (англ.)русск., R, Objective C, PowerShell, Lua, Visual Basic, Markdown, JSON, HTML, CSS, LESS и SASS и др...

Visual Studio Code пользуется заслуженным уважением разработчиков, предоставляет функциональность IDE и выступает в качестве реальной альтернативы Visual Studio для проектов среднего размера в качестве основного инструмента разработки команды.

Установка Visual Studio Code для Windows:

  1. Загрузить Visual Studio Code для Windows

  2. Двойным щелчком по загруженному файлу VSCodeSetup.exe запустить установку ...

Дополнительные инструменты  Visual Studio Code
(для полноценной работы, без них Visual Studio Code хорош только для простого редактирования файлов): 

  • ASP.NET 5 — гибкий фреймворк создания современных веб-приложений

  • NodeJS (включая NPM) – платформа для создания масштабируемых сетевых приложений

  • git – система контроля версий

  • Yeoman – инструмент «скаффолдинга» примерно тоже самое что и File | New Project в VS

  • generator-aspnet — yeoman генератор для ASP.NET 5 приложений, выполните npm install -g generator-aspnet для установки

  • hottowel — yeoman генератор для быстрого создания AngularJS приложений, выполните npm install -g generator-hottowel для установки

  • Express – фреймворк для Node приложений, использует «движок» шаблонов Jade

  • gulp – инструментарий создания «тасков» для выполнения сопутствующих сборке проекта задач

  • mocha – фреймворк создания модульных тестов на JavaScript/Node

  • bower – клиентский пакетный менеджер

  • TypeScript – язык TypeScript, добавляет модульность, классы и прочие приятные вещи в ваш JavaScript код

  • TypeScript definition manager – определения TypeScript для популярных JavaScript библиотек, включают поддержку IntelliSense вVS Code

Самый подробный гайд по настройке Visual Studio Code и установке плагинов для начинающих

Смотрим: https://www.youtube.com/watch?v=5WyJibE3ZK0

  • github.com/Microsoft/vscode/tree/master/extensions  — репозиторий расширений от компании Microsoft. Много расширений отличного качества, идеальные примеры при создании вашего собственного расширения.

  • marketplace.visualstudio.com/VSCode — магазин расширений для VS code. Поищите расширение которое затрагивает функциональность похожую на ту что вы планируете реализовать и в большинстве случаев там будет ссылка на репозиторий с исходным кодом.

 

 

 

 

Electron

 

Electron — платформа, позволяющая создавать, собирать проинсталлировать в различных ОС простые десктопные приложения, используя HTML, CSS и JavaScript.

Electron  предлагает стандартный стек технологий frontend-разработчика:

  • HTML

  • CSS

  • PostCSS

  • JavaScript

  • NodeJS

  • PHP

Официальный сайт

Приложения на Electron

Видео о создании приложений на Electron

Альтернативой для Electron является проект NW.js 

 

 

Мобильная разработка

 

  • Java
    Платформа: Android IDE: Android Studio

  • Swift
    Платформа: iOS, macOS IDE: Xcode

  • HTML5/JavaScript
    Платформа: iOS, Android, ++ Основная IDE: Eclipse, блокнот Notepad++

  • Python
    Платформа: боты Основные IDE: Eclipse, Visual Studio, PyCharm

  • C#
    Платформа: iOS, Android, Windows 10 Основная IDE: Visual Studio

  • Objective-C
    Платформа: iOS, macOS, watchOS и tvOS Основная IDE: Xcode

Android Studio — интегрированная среда разработки (IDE) для работы с платформой Android. Доступна для Windows, OS X и Linux.

https://ru.wikipedia.org/wiki/Android_Studio
 

 

 

 

Творчество программирования

 

Существуют различные стили программирования, крайними выражением которых являются:

  • Cowboy coding - ковбойский стиль «сделал и забыл», для очень коротких проектов и для проверки работоспособности идей, без плана, без спецификации.

  • Heavyweight - монументальный стиль, предусматривает разбиение всей разработки на четкие этапы (бизнес-моделирование, анализ требований, разработка архитектуры, кодирование, отладка, тестирование, документирование, сопровождение).

Кент Бек (основоположник eXtremal Programming, XP): Некоторые виды деятельности являются определяющими для успеха разработки программ. Но вы также должны — как всей командой, так и каждый сотрудник в отдельности — развить в себе множество социальных навыков: честность, стремление к прозрачности, ответственность и т. д.

Уильям Гейтс (создатель Microsoft): Многие считают, что создание компьютерных программ - это отшельнический вид деятельности, когда вы целый день сидите, закрывшись в офисе, и пишете код. Это совершенно неверно. Умение общаться и эффективно работать с разными людьми также очень важно. Новаторство в области программного обеспечения, как и почти во всех других видах деятельности, требует умения сотрудничать и делиться идеями с другими людьми, разговаривать с клиентами, учитывать их замечания и понимать их нужды.

Лиза Александер (вице-президент Red Hat по кадрам):

Мы, конечно же,  зарабатываем деньги. Но определяющую роль играет  сама работа. Это шанс поучаствовать в международной разработке и внедрении технологии, способной изменить социальную структуру общества. И наша культура.

Мы стремимся, чтобы инновационные решения предлагало как можно больше сотрудников и для нашей корпоративной культуры характерны открытое общение и взаимопомощь.

Red Hat -  одна из крупнейших компаний, специализирующихся на создании свободного программного обеспечении (3000 сотрудников в 25 странах мира на конец 2007 года).

 

Дуглас Меррил (вице-президент по технологиям Google):  Важно собрать вместе людей из разных стран, разговаривающих на разных языках, с разными взглядами на мир и сделать так, чтобы они работали вместе. Мы не обязаны говорить и думать одинаково. Каждый должен делиться своими взглядами на мир с другими - так мы получим наиболее интересные и креативные решения.

Дуглас Меррил: Если вы знаете три языка - вы "трехъязычный" (trilingual), если вы знаете два языка - вы "двуязычный" (bilingual), если же вы знаете только один язык - вы американец.

 

 

 

Дэн Рид (директор Microsoft по многоядерным вычислениям): «Во всем мире ощущается нехватка специалистов, владеющих навыками написания программ с параллельной обработкой»

Увеличение числа ядер в центральном процессоре не приводит к увеличению скорости выполнения последовательного кода приложений. Необходимы новые языки программирования и иные технологии использования преимущества многоядерной обработки.

Microsoft и Intel выделили 20 млн долл. университетам Калифорнии и Иллинойса на создание новых методов параллельного (в том числе «многоядерного») программирования и обучение таким методам. Задача инициативы, — превратить «параллельное программирование» в синоним просто «программирования».

 

 

ИТ-сектор экономики Беларуси

02.04.2019 

  • Совокупный объем ИT-экспорта в 2018 - $1,3 млрд.
    Объем экспорта ИТ-услуг на душу населения — $108 (в США - $58, в Индии — $40, КНР — $20.

  • 60,5% ИT-специалистов занято в аутсорсинговых услугах.

  • Среднегодовой темп роста выручки ИТ-сектора (2011–2015) — около 16%.

  • Доля работающего населения, занятого в ИКТ, — 2,2% (105 000)

  • Доля сектора в ВВП — 7,7%

  • В Беларуси работает более 50 международных R&D-центров ИТ-компаний.

05.05.202020 

Белорусские айтишники на треть увеличили экспорт компьютерных услуг

ИТ-компании с офисами в Беларуси экспортировали в январе–феврале компьютерных услуг на $367 000 000 (+34% к 2019).
За январь–март ВВП снизился на 0,3%, а белорусский ИТ-сектор обеспечил самый высокий прирост ВВП +0,5%.

12.06.20202Топ-50 белорусских ИТ-компаний (июнь 2020)

04.08.20202Белорусский ИТ-сектор в январе-июне 2020 обеспечили +0,7% ВВП Беларуси (весь ВВП минус 1,7%).

17.05.20212ИТ в Беларуси-2020, часть 1

 

 

 

Парк высоких технологий Беларуси

Многие  ИТ-компании являются резидентами Парка высоких технологий (ПВТ): http://park.by/

05.08.2021   

Резиденты ПВТ по итогам 1 полугодия 2021 заплатили рекордную сумму налогов: Br357,4 млн (+86% к 2020)
Ставка подоходного налога для айтишников из ПВТ выросла с 9 до 13% (на 44%).

12.03.2021   Экспорт ПВТ в 2020 $ 2 700 000+ (+25% к 2019) 90% экспорта в США и ЕС

В ПВТ 70 000 специалистов (+ 10 000 новых рабочих мест в 2020)
В ПВТ 1021 компания (в 2020 году в ПВТ 236 новых резидентов, в марте 2021-го — еще 65.
Приток прямых иностранных инвестиций в ПВТ вырос на 26% и составил в 2020 $331,7 миллиона
В 2020 года в ПВТ 107 разработки зарубежных корпораций (в 2020 + 23 центра)
Объем производства Br7,4 млрд 400 млн. 1,5% занятых в экономике и 4+% ВВП

Экспорт ПВТ:

  • 2006 - $200 млн

  • 2007 - $300 млн

  • 2009 - $410 млн

  • 2016 - $820 млн

  • 2017 - $1 025 млн

  • 2018 - $1 414 млн

  • 2019 - $2 198 млн

  • 2020 - $2 700 млн

14.05.2019  ИТ в Беларуси-2018: часть1

21.05.2019  ИТ в Беларуси-2018: часть2

27.05.2019  ИТ в Беларуси-2018: часть3

03.06.2019  ИТ в Беларуси-2018: часть4

02.03.2020    ИТ-сектор в ВВП Беларуси

 

 

 

Белорусские решения EPAM Systems

 

EPAM Systems - крупнейший поставщик услуг в СНГ, Центральной и Восточной Европе в области разработки:

  • систем корпоративного планирования (ERP),

  • корпоративных информационных порталов (EIP),

  • систем управления отношениями с клиентами (CRM),

  • серверов интеграции приложений (EAI),

  • систем управления проектами (PMS),

  • систем управления контентом (CMS),

  • систем управления знаниями (KMS) .

Созданная в Минске 1993 году, сегодня компания EPAM Systems имеет 17 представительств в 8 странах мира, в штате более 3000 специалистов.

Несколько лет подряд EPAM Systems признана компанией №1 в категории  ведущих аутсорсинг-компаний в Ц. и В. Е.

Аркадий Михайлович Добкин - основатель, президент и председатель совета директоров EPAM Systems, один из основоположников Парка высоких технологий в Минске. В 2004 г. Аркадий Добкин - один из трех наиболее профессиональных руководителей IT-компаний. В 2006 г. Аркадий Добкин - один из 25 лучших ИТ-консультантов года. В 2007 г. Аркадий Добкин - в тройке финалистов нац-го амер-го конкурса "Предприниматель года".

В 2007 отделение EPAM Systems открыто в Бресте.

Аркадий Добкин: Я учился в минской школе №50, окончил Белорусский национальный технический университет по специальности "инженер электротехники".  Начинал я свой бизнес почти 20 лет назад, оказавшись в США и не имея ни гроша в кармане. Тогда мне, не знавшему даже английского языка, пришлось несколько месяцев перебиваться случайными заработками, мыть посуду в ресторане. идея организовать на территории бывшего СССР компанию по разработке программного обеспечения вызывала среди друзей и знакомых лёгкое недоумение. Правда, однажды кто-то из них, с тайной целью избавить меня от иллюзий, подарил мне книгу американского аналитика и консультанта Эдварда Йордана, посвящённую методам организации ИТ-бизнеса. Её я зачитал, что называется, "до дыр", применив на практике идеи известного американского менеджера. В итоге появилась EPAM Systems, а когда в Минск приехал сам Эдвард Йордан, то оставил автографы на двух новых экземплярах той самой книги - для меня и моего знакомого в США.

07.09.2013 Капитализация EPAM Systems  1,02 млрд долларов.

07.09.2018 Капитализация EPAM Systems  7,68 млрд долларов.

15.05.2019 В 1 квартале 2019 EPAM заработала $521 300 000 выручки (+ 23%, $97 200 000 к 1 кварталу 2018). Ожидаемая выручка во 2 квартале $540 000 000. 27 900 специалистов в EPAM (+17,6%  к 1 кварталу 2018).

05.10.2019 Во 2 квартале 2019 EPAM заработала $551 600 000 выручки (+ 23,8% ко 2 кварталу 2018). Ожидаемая выручка во 3 квартале $579 000 000. 33 100 специалистов в EPAM (+21%  ко 2 кварталу 2018).

 

 

 

Agile-подход

 

25.01.2010 Концепция скорой  (agile) разработки ПО все более популярна

Формального определения для agile-парадигмы пока нет: процесс создания ПО разбивается на небольшие итеративные (повторяющиеся) блоки с целью минимизации рисков, которые были бы возможны в случае охвата командой разработчиков всего проекта целиком и сразу.

Согласно Forrester Research 35% из 1,3 тыс. ИТ-специалистов сообщили, что agile-методология наиболее точно отвечает принятому у них процессу разработки.

Показатель повышается до 46% в том случае, если к agile-подходу отнести такие практики, как RUP (Rational Unified Process)  и спиральная методология.

Команды разработчиков отказываются от прежних ортодоксальных подходов в пользу смешения парадигм и их комбинации, для того чтобы выработать гибридный подход, оптимально применимый в условиях крупных организаций.

Несмотря на то что scrum-методологию выбирает бóльшая часть (11%) agile-разработчиков, многие из девелоперов не останавливаются на конкретных подходах типа экстремального программирования: команды стремятся дополнить свой опыт приемлемыми именно в их случае практиками создания ПО.

 

 

 

Абсолютная победа

 

16.11.2009

14-летний белорусский вундеркинд Геннадий Короткевич (закончил 8 классов гимназии №56 города Гомеля) выигрывает почти все соревнования, в которых участвует. Три года подряд Геннадий Короткевич получает золотую медаль всемирной Олимпиаде по программированию среди школьников (IOI). В августе 2009 года он стал абсолютным чемпионом — самым юным за 21-летнюю историю конкурса. 

21.07.2017 Геннадий Короткевич (шестикурсник факультета информационных технологий и программирования питерского ИТМО) занимает первую строчку в рейтинге спортивных программистов CodeForces. На счету Гены —  множество побед на российских и международных соревнованиях по программированию, включая Google Code Jam, VK Cup, Russian Code Cup и Facebook Hacker Cup. В том числе в чемпионате по спортивному программированию Яндекс.Алгоритм в 2013, 2014, 2015 и 2017 годах.

Разбор задач финала Яндекс.Алгоритма 2017

 

 

 

Наймладият Systems Engineer

(читаем на македонском)

 

20.01.2010 Марко Чаласан9-годишно македонче, е истински IT гений. Още на 6 години той е сертифициран за системен администратор от Microsoft, а преди месец става наймладият Microsoft Certified Systems Engineer.

Матей Потокар (главния мениджър на Microsoft Словения): Марко е дете-чудо. В Словения пред служители на Microsoft малкият системен администратор е представил презентация за работата на Active Directory с акцент върху плюсовете и предизвикателствата на технологията. В момента Марко се грижи дистанционно за компютърната мрежа на неправителствена организация, която работи с хора с увреждания. Любимото му хоби е футболът.
 

Допълнително компютърният вундеркинд води часовете по информатика в началното си училище, където преподава основи на компютрите на децата между 8 и 11-годишна възраст. Момчето разказва, че обикновено прекарва по 4 часа дневно пред компютъра, но понякога се случва да работи и по 10 часа. Заради характера на професионалните му занимания Марко има специално позволение от правителството да ходи на училище по-рядко от връстниците си.

 

 

 

DeepCoder

 

25.02.2017

Нейросеть DeepCoder учится программировать, заимствуя код у других программ: https://openreview.net/pdf?id=ByldLrqlx

 

Комментарии ИТ-форума:

  • расходимся

  • Что мы, разработчики, будем делать, если когда нас автоматизируют, и мы окажемся на улице?

  • Что-то айтишников расплодилось, где былая элитарность. Да грядёт чистка ИТ-шной расы, великое разделение на автоматизаторов и автоматизируемых ;)

  • Если нас так легко автоматизировать, то мб мы не тем занимаемся?

  • Люди с кодопрошлым или закат программистов

 

 

 

10 причин несчастья разработчиков

 

В соответствии с результатами опроса разработчики (опрошено 417 человек) программного обеспечения, в среднем, «слегка счастливы».

Причина Частота
Застрять в решении проблемы 186
Нехватка времени 152
Плохое качество кода и практики программирования 107
Недорабатывающий коллега 71
Чувство несоответствия работе 63
Обыденная или повторяющаяся задача 60
Необъяснимая ошибка в коде 57
Плохой процесс принятия решений 42
Введённые ограничения на разработку 40
Личные проблемы, не связанные с работой 39

Научная статья опубликована 15 марта 2017 года на сайте arXiv.org (arXiv:1703.04993v1).

 

 

 

Типы программистов?

 

  • Гений
    Почти всегда молод, знает о программировании куда больше, чем ему нужно знать, проводит 90% своего свободного времени за кодингом. ВСЕГДА САМОУЧКА. Всегда следует за трендами и “the next big things”. Может только взглянуть на код, понять и проанализировать его, как компьютер, с редким талантом. Часто очень хорош в математике.

  • Хипстер
    Использует Javчше. Фанатик почти всегда знает только один язык и никогда не пытается выучить другой. Больше сфокусирован на библиотеках и синтаксисе, чем на создании настоящих приложений, сайтов или игр.

 

 

NeoBook: среда программирования для непрограммистов

 

kmp