Елена Булыгина предлагает Вам запомнить сайт «Ленусик»
Вы хотите запомнить сайт «Ленусик»?
Да Нет
×
Прогноз погоды

Основная статья: Программирование

Итоги года в IT 2018

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

Популярные языки программирования

TIOBE. В топ-5 популярных языков программирования входят Java, C, C++, Python и Visual Basic.NET. Причем в прошлом году пятерка лидеров была почти такой же — только вместо Visual Basic.NET ее замыкал C#. За год существенно поднялись в рейтинге SQL (в прошлом году он даже не вошел в двадцатку), Go (+4 места), Objective-C (+8) и Swift (+8). Objective-C в этом году опередил Swift на одну строчку.

Стремительно теряют популярность Perl — за два года он спустился с 10 на 18 строчку рейтинга, Assembly — с 9 на 15 место за тот же период, Ruby — с 12 на 16 позицию. В 2017 году был всплеск интереса к языку R: он взлетел в рейтинге с 17 на 8 место, в 2018 — снова опустился на 14 строку.  

PYPL. Рейтинг показывает, что учат программисты всего мира. С прошлого года пятерка самых изучаемых языков не изменилась: это Python, Java, JavaScript, C# и PHP, — только они поменялись местами. В прошлом году на первом месте была Java, в этом — Python. В 2017 пятерку замыкал JavaScript, теперь — PHP. Продолжает расти интерес к языкам TypeScript, Go, Lua, Haskell, Julia, хотя в рейтинге TIOBE в двадцатку входит только Go.

В долгосрочной мировой перспективе прослеживаются устойчивые тренды:

  • растет интерес к изучению Python, R, Swift, MatLab, Scala, Go, Kotlin, TypeScript;

  • стабильно привлекают разработчиков Java, C#, JavaScript, C/C++;

  • падает интерес к PHP, Ruby, Perl, VBA, Visual Basic, Objective-C, Delphi.

Stack Overflow традиционно проводит опрос программистов. В 2018 году в нем приняли участие 100 тысяч человек. Топ-5 языков, которые наиболее часто используют профессиональные разработчики, включает JavaScript, HTML, CSS, SQL и Java.

Если рассматривать только языки программирования, в пятерку лидеров войдут JavaScript, SQL, Java, Python и C#. JavaScript занимает первое место уже шесть лет подряд, а быстрее всех набирает популярность Python.

Традиционный вопрос — «Какие языки вам нравятся, какие ненавидите, а какие хотите изучить?» — показывает истинные чувства программистов. Ответы во многом совпали с прошлогодними. Народную любовь сохраняет Rust (37-е место в рейтинге TIOBE, 20-е — в PYPL), всеобщую неприязнь — Visual Basic 6 (20-е место TIOBE, 15-е PYPL). И конечно, все хотят учить Python, JavaScript и Go.

Любят

Ненавидят

Хотят изучить

Rust

Visual Basic 6

Python

Kotlin

Cobol

JavaScript

Python

CoffeeScript

Go

TypeScript

VB.NET

Kotlin

Go

VBA

TypeScript

Swift

MatLab

Java

JavaScript

Assembly

C++

C#

Perl

Rust

F#

Objective-C

C#

Clojure

Lua

Swift

Bash/Shell

Groovy

HTML

Scala

Delphi/Object Pascal

CSS

SQL

C

SQL

HTML

Ocalm

R

CSS

PHP

C

Haskell

Hack

Ruby

Julia

C++

Scala

Java

Erlang

Haskell

R

Ruby

Bash/Shell

Ruby

R

PHP

Erlang

Java

F#

C++

Julia

Assembly

Hack

Haskell

Erlang

PHP

CSS

Clojure

Ocaml

HTML

Objective-C

Интерес вызывает и еще один вопрос из исследования Stack Overflow — «Какие языки ассоциируются у вас с высокой зарплатой?». Первое место занимает F#, разработанный компаний Microsoft в 2005 году. Почитать подробно про него можно в статье «Хочу все знать. F#». Вот первая десятка языков со среднегодовой зарплатой специалистов:

  • F# — 74 000 $;
  • Ocalm — 73 000 $;
  • Clojure — 72 000 $;
  • Groovy — 72 000 $;
  • Perl — 69 000 $;
  • Rust — 69 000 $;
  • Erlang — 67 000 $;
  • Scala — 67 000 $;
  • Go — 67 000 $;
  • Ruby — 64 000 $.

В этом списке мы не видим популярных языков, а некоторые из перечисленных входят в рейтинг неприязни — тем не менее это не мешает профильным программистам зарабатывать с их помощью хорошие деньги. По всей видимости, большие зарплаты обусловлены дефицитом специалистов. Ведь действительно найти разработчика PHP или JS намного проще, чем Perl.

GitHUB представил собственное исследование за 2018 год. По количеству репозиториев самыми популярными языками стали JavaScript, Java, Python, PHP и Ruby.

По числу программистов — JavaScript, Java, Python. Сильно потерял позиции Ruby — он упал с пятой на десятую строку, а Objective-C вообще вылетел из десятки. Его место занял TypeScript, который за год поднялся с 10 на 7 место.

Интересен рост количества разработчиков по каждому языку. Программистов, которые работают на Kotlin, стало больше в 2,5 раза. Также растут HCL, TypeScript, PowerShell и Rust. Подробнее о Kotlin можно узнать в материале «Хочу все знать. Язык Kotlin».

Популярные технологии

Базы данных. Согласно рейтингу PYPL, в 2018 году программисты больше всего изучали Oracle, MySQL, SQL Server, PostgreSQL и MongoDB. Также рос интерес к освоению Redis, Apache Hive, MariaDB, DynamoDB.

За последнее десятилетие:

  • возрос интерес к изучению Apache Hive, DynamoDB, Elasticsearch, Firebase, MariaDB, MongoDB, Redis, SAP HANA, Splunk, Teradata;

  • стабильно привлекают разработчиков Oracle, MySQL, SQL Server, PostgreSQL, Solr, SQLite;

  • снижается интерес к DB2, FileMaker, Firebird, Sybase.

В опросе Stack Overflow разработчики назвали самые используемые базы данных: MySQL, SQL, PostgreSQL, MongoDB, SQLite.

В вопросе «Какие базы данных вам нравятся, какие ненавидите, а какие хотите изучить?» места распределились так:

Любят

Ненавидят

Хотят изучить

Redis

IBM Db2

MongoDB

PostgreSQL

Oracle

Elasticsearch

Elasticsearch

Memcached

PostgreSQL

Amazon RDS/Aurora

Apache HBase

Redis

Microsoft Azure (Tables, CosmosDB, SQL, etc)

Amazon Redshift

MySQL

Google Cloud Storage

Apache Hive

Microsoft Azure (Tables, CosmosDB, SQL, etc)

MongoDB

Cassandra

Google Cloud Storage

MariaDB

SQLite

Cassandra

Google BigQuery

MySQL

Amazon DynamoDB

SQL Server

Neo4j

Google BigQuery

IDE. PYPL посчитал, что больше всего в 2018 году разработчики изучали Visual Studio, Eclipse, Android Studio, NetBeans и IntelliJ. Рос интерес к IntelliJ, Visual Studio Code, Light Table и Eric Python, снижался — к Atom, Xcode, Xamarin, Zend Studio и Coda 2.

В исследовании Stack Overflow популярные инструменты разбиты по направлениям: для сисадминов, web- и мобильных разработчиков. Пятерка общих лидеров включает Visual Studio Code, Visual Studio, Notepad++, Sublime Text и Vim.

Web-разработчики

Мобильные разработчики

Сисадмины

Visual Studio Code

Android Studio

Vim

Visual Studio

Visual Studio Code

Visual Studio Code

Notepad++

Xcode

Notepad++

Sublime Text

Visual Studio

Visual Studio

IntelliJ

Notepad++

Sublime Text

Vim

Sublime Text

IntelliJ

Eclipce

IntelliJ

Atom

Atom

Eclipce

Android Studio

Android Studio

Atom

Eclipce

PyCharm

Vim

PyCharm

Инструменты. В топ-5 самых часто используемых инструментов: фреймворков, библиотек и прочего — входят Node.js, Angular, React, .NET Core, Spring. Разработчики любят TensorFlow, ненавидят Cordova и хотят изучить React. Подробнее про TensorFlow можно узнать в материале «Tenzor Flow — open-sources от Google».

Любят

Ненавидят

Хотят изучить

TensorFlow

Cordova

React

React

Xamarin

Node.js

Torch/PyTorch

Hadoop

TensorFlow

Node.js

Angular

Angular

.NET Core

Django

.NET Core

Spark

Spring

Django

Spring

Spark

Hadoop

Django

.NET Core

Xamarin

Angular

Node.js

Spark

Hadoop

Torch/PyTorch

Torch/PyTorch

Занятость программистов в мире

В исследовании Stack Overflow 2018 обобщили средние показатели по занятости программистов.

Тип занятости. Если в прошлом году 83 % опрошенных работали в компаниях на полной занятости, то в 2018 таких только 76 %. Фриланс остался на том же уровне — 10 %, а количество безработных в поиске нового места увеличилось в пять раз: с 1,3 % в 2017 до 5 % в 2018. Это 4300 человек из 86 тысяч программистов, ответивших на вопрос.

Размер компании. Больше всего программистов трудятся в компаниях с количеством сотрудников от 20 до 99 человек, меньше всего — от 5 до 9 тысяч. За год цифры изменились несущественно, в среднем в пределах одного процента.

Отрасль. Сильного перекоса в сторону одной отрасли нет. Занятость распределена равномерно: 16 % — компании по разработке сайтов и дизайна, по 10 % — IT, SaaS и разработка ПО, 8,8 % — финансовый сектор. Меньше всего программистов работает в медицинских компаниях — 4,5 %.

Поиск работы. Среди всех программистов — и занятых, и безработных — только 24,3 % не интересуются вакансиями. 59,8 % респондентов не ищут их, но готовы рассмотреть предложения, а 15,9 % находятся в активном поиске. Причем больше всего людей, ищущих новую работу, в США — 14,2 %, а минимум — 10,7 % — в Германии.

Среди тех, кто ищет работу, 18,5 % преподавателей или научных работников, 18,1 % — мобильных разработчиков, 18 % — специалистов по Data Science и машинному обучению, 17,9 % — бизнес-аналитиков или аналитиков данных, 17,9 % — гейм-дизайнеров или гейм-девелоперов, 17,7 % — дизайнеров. Меньше всех — управленцев (CEO, CTO и пр.) — 12 %.

Программисты часто меняют работу: 34,6 % вышли на новое место в течение этого года, 22 % — больше года назад, 18,8 % — больше двух лет назад, 18,9 % — больше четырех лет назад. Всего 5,8 % на протяжении всей карьеры работают в одной компании, в Индии таких — 11,2 % программистов.

При выборе компании разработчики смотрят на зарплату и соцпакет (18,3 %), технологии (17,3 %) и дальнейшее профессиональное развитие (16 %). Однако женщины-программисты (4000 респондентов) на первое место поставили «корпоративную культуру» (16,9 %), а зарплату и соцпакет — только на четвертое (14,1 %). Если сравнивать по странам, то больше всего программисты смотрят на зарплату в Великобритании — 81,7 %, меньше всего в Индии — 64 %.

Зарплата. В опросе приняло участие 57 тысяч человек. Больше всего зарабатывают технические руководители (Engineering manager) — 89 тысяч долларов в год, причем в США у них зарплата еще выше — 137 тысяч. На втором месте DevOps-инженеры — 72 тысячи долларов (110 000 в США), на третьем — специалисты по Data Science и machine learning — 60 тысяч долларов (102 000 в США). Меньше всего на мировом рынке зарабатывают мобильные разработчики — 43 000 долларов и разработчики игр — 40 000.

В США топ профессий отличается от мировых. На первых местах — технические руководители, DevOps-инженеры, бэкендеры, дата-сайентисты и мобильные разработчики. Меньше всего платят дизайнерам (85 000 $) и тестировщикам (83 000 $).

На портале Glassdoor автоматически рассчитывается средняя зарплата. Больше всего предлагают специалистам по Data Science — 139 тысяч долларов, меньше всего программистам JavaScript — 72 тысячи.

Зависимость зарплаты. Не обязательно иметь многолетний опыт, чтобы получать высокую зарплату. При пятилетнем стаже Data Scientist может заработать 60 тысяч долларов в год, мобильный разработчик — 44 тысячи, а разработчик игр —  40 тысяч. Но чтобы занять позицию DevOps-инженера с зарплатой 73 тысячи, нужно восемь лет опыта, Product-менеджера — девять лет, а СТО/СЕО и технических управленцев — более десяти лет.

Зависимость зарплаты от использования языка программирования не изменилась за этот год. По-прежнему много платят тем, кто работает на редких ЯП: Clojure, F#, Hack, Go, Scala, Erlang, Groovy. Причем опыт работы имеет меньшее значение, чем язык. Программисты Delphi с двенадцатилетним опытом зарабатывают меньше, чем специалист с пятью годами стажа, работающий на Hack.

Перспективы. Программистам задали вопрос «Чем вы надеетесь заниматься через пять лет?». Ответы распределились так:

  • работать в более крутой компании — 33,9 %;
  • основать собственную — 25,7 %;
  • работать там же/ так же — 19,4 %;
  • работать техническим управленцем — 9,9 %;
  • работать управленцем — 6,6 %;
  • заниматься другим — 2,8 %;
  • уйти на пенсию — 1,7 %.

Занятость IT-специалистов в России

Динамика вакансий. Спрос на IT-специалистов в этом году рос, особенно в летние месяцы. Об этом свидетельствует статистика портала HeadHunter. По сравнению с 2017 годом, в июне и августе количество вакансий увеличилось более чем на 40 %, а в июле — вообще на 79 %.

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

Информационные технологии входят в десятку сфер с наибольшим количеством размещенных вакансий. Больше, чем айтишников, требуется только продажников, рабочих и сотрудников на производство. По сравнению с прошлым годом, количество IT вакансий выросло на 21 %, но в 2017 году IT-сфера была на втором месте, в 2018 — на четвертом. В общем объеме предложений количество IT-вакансий уменьшилось.

Динамика резюме. IT-соискателей становится больше. Наблюдалось временное снижение летом, но с сентября количество резюме снова выросло. Общий рост за год составляет 13 %.

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

Конкуренция среди соискателей. На конец 2018 года на каждую IT-вакансию приходится 2,8 резюме. Это не самый плохой показатель, и в 2017 году было так же. Например, на каждую вакансию юриста приходится девять резюме, стажера — десять, а руководителя — двенадцать. Меньше всего резюме в областях консалтинга, рабочего персонала, инсталляции и сервиса, а также страхования.

Статистика по городам. Рост числа вакансий и резюме по городам неоднородный. В Тюмени количество вакансий увеличилось на 70 %, а в Самаре — всего на 15 %. В отличие от прошлого года, работодатели размещают предложений больше, чем соискатели — резюме.

Конкуренция среди соискателей сильно различается по городам России. Наибольшая в Краснодаре — на каждую вакансию претендуют четыре человека. Чуть меньше в Иркутске, Уфе и Хабаровске — по трое. Наименьшая конкуренция в Ульяновске — 1,5 резюме и Перми — 1,6. В Москве на каждую вакансию приходится 2,8 резюме, в Санкт-Петербурге — 2,7.

Портрет соискателя. Типовой портрет соискателя за год не изменился. Программист — мужчина 26–35 лет с высшим образованием и опытом работы от трех до шести лет. Есть сходство с типовым респондентом Stack Overflow: это тоже мужчина 24–34 лет с высшим образованием и опытом работы от трех до пяти лет.

Сравнение типового портрета

 

Россия

Мир

Мужчина

81%

92%

Возраст 24/25 — 34/35

59%

50%

Высшее образование

82%

74%

Опыт работы 3-6 лет

26%

27%

Зарплата. По расчетам портала HeadHunter, средняя зарплата IT-специалиста в России — 60 600 рублей. Самая высокая в Москве — 91 000 рублей, минимальная в Саратове — 42 400. За год средняя зарплата в Москве и Санкт-Петербурге выросла на 9 %, в Красноярске — на 13 %, в Новосибирске — на 5 %, а в Нижнем Новгороде не изменилась. Зарплаты часто зависят от динамики резюме и вакансий. Например, за год количество вакансий в Красноярске увеличилось на 51 %, а резюме — всего на 14 %, поэтому и оплата выросла на 13 %.

Десять лет портал Superjob рассчитывает собственный индекс заработной платы в ведущих отраслях. За исходное значение взяты показатели октября 2008 года, и им присвоено 100 пунктов. За десятилетие зарплаты в IT выросли на 80 %, а за 2018 год — на 7 %. Зарплаты в других сферах существенно отстают.

По данным портала Trud.com, средняя зарплата программиста в России — тоже 60 тысяч рублей. Больше всего открыто IT-вакансий в Москве — 43 % от общего количества, в Санкт-Петербурге — 23 % и в Екатеринбурге — 11 %. Почти в 44 % открытых вакансий работодатели предлагают зарплату до 50 тысяч рублей. Только 13 % предложений — с зарплатой свыше 200 тысяч.

На портале «Мой круг» рассчитывают средние зарплаты через анкетирование участников. На вопросы ответили 7 тысяч человек. Средняя зарплата за первое полугодие 2018 года составила 101 тысячу рублей, а за вторую — 97 тысяч. В разрезе специализаций:

  • мобильная разработка — 120 тысяч рублей;
  • десктоп-разработка — 110 тысяч;
  • бэкенд — 100 тысяч;
  • фронтенд — 100 тысяч;
  • менеджмент — 80 тысяч;
  • администрирование — 80 тысяч;
  • тестирование — 75 тысяч.

Самые высокие зарплаты — в мобильной разработке: до 150 тысяч рублей, а минимальные — в администрировании: от 50 тысяч. Верхний предел по языкам программирования:

  • Scala — 250 тысяч рублей;
  • Golang — 225 тысяч;
  • Elixir — 200 тысяч;
  • Objective-C — 200 тысяч;
  • Swift — 200 тысяч;
  • Ruby — 200 тысяч.

Программисты на других языках получают меньше: Python — до 190 тысяч рублей, Java — 185 тысяч, JavaScript — 180 тысяч, PHP — 170 тысяч, C# — 170 тысяч. Самая низкая зарплата у Delphi-программистов — от 30 до 120 тысяч рублей.

Кратко

  1. В рейтинге TIOBE тройка популярных языков — Java, C и C++, в рейтинге PYPI — Python, Java и JavaScript. Согласно опросу Stack Overflow, разработчики чаще всего используют JavaScript, HTML и CSS. В GitHUB самые популярные — JavaScript, Java и Python.
  2. Согласно рейтингу PYPI, в этом году больше всего изучали базы данных: Oracle, MySQL, SQL Server — и IDE: Visual Studio, Eclipse и Android Studio. Stack Overflow выяснил, что чаще всего использовали БД MySQL, SQL и PostgreSQL и IDE Visual Studio Code, Visual Studio, Notepad++. Лидеры среди прочих инструментов — Node.js, Angular и React.
  3. В Stack Overflow посчитали, что 76 % опрошенных работают в компании на постоянке. Количество безработных увеличилось до 5 %, а 76 % активно ищут работу или готовы рассмотреть предложения. Больше всего программистов-мужчин интересует зарплата и соцпакет.
  4. Самые высокие зарплаты получают технические руководители (Engineering manager) — 89 тысяч долларов в год, DevOps-инженеры — 72 тысячи и специалисты по Data Science и machine learning — 60 тысяч. По данным портала Glassdoor, самые высокие средние зарплаты у специалистов по Data Science — 139 тысяч долларов, back-end программистов и инженеров по машинному обучению — по 114 тысяч.
  5. Согласно порталу HeadHunter, спрос на IT-специалистов в России растет. Средняя зарплата по РФ — 60 600 рублей. Самая высокая в Москве — 91 000 рублей, минимальная в Саратове — 42 400. По подсчетам портала Trud.com, средняя зарплата по России тоже 60 тысяч. Согласно анкетам программистов на сайте «Мой круг», средняя зарплата в первом полугодии 2018 года составляла 101 тысячу рублей, во втором — 97 тысяч. Больше платят в мобильной разработке — 120 тысяч и в десктоп-разработке — 110 тысяч.

3 дек 18, 17:57
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Книги о создании игр: ТОП актуальных (часть 1)

Вам тоже надоели книги с общими словами и прописными истинами под яркой обложкой? Последние пару лет я стихийно просматривала литературу о создании игр, и если вдруг удавалось выцепить что-то занятное, читала. По итогам предлагаю вам «избранное» из найденного. Интересного много, поэтому список разбиваю на несколько частей.

Книги на английском и в большинстве еще не переводились, по крайней мере свежие издания.

Game Engine Architecture (2018)

Автор: Jason Gregory.

Третье издание книги Джейсона Грегори «Game Engine Architecture» — обновленный рассказ профессионала игровой индустрии о работе над игровыми движками. Автор подробно описывает подходы, применяемые реальными студиями, где он трудился, в том числе Electronic Arts и Naughty Dog Inc. Сам он разрабатывал движки к серии шутеров Uncharted для PlayStation 3 и 4. Чтобы понимать материал, не обязательно быть опытным игроделом, но нужно знать C++.

Первая редакция книги вышла в 2009 году, вторая — в 2014. Особый акцент в новом издании сделан на параллельные вычисления и их применение в играх. Автор убежден, что даже в работе с высокоуровневым языком программист обязан понимать все происходящее на нижних уровнях, в том числе на аппаратном. Это сужает аудиторию книги, но если вы разделяете такой подход, у вас будет возможность «копнуть глубже» и разобраться в вопросах, которые вы раньше оставляли на потом.

Если вы задумали написать свой движок или разобраться, как работает чужой, «Game Engine Architecture» поможет в этом.

Location-Based Mobile Games. Design Perspectives (2018)

Авторы: Davide Spallazzo, Ilaria Mariani.

Мечтаете сделать свой Pokemon Go? Научная работа Давида Спаллаццо и Иларии Мариани посвящена мобильным играм на местности (LBMG). В дополненной реальности физическое местоположение игрока влияет на игровые события. Процесс может быть завязан на поиск и сбор предметов, решение головоломок, контроль территории, обучение.

Еще в 2012 году — до истории с ловлей покемонов — Niantic выпустила MMO-игру Ingress для iOS и Android. Если кратко: игроки делятся на два лагеря и бегают между реальными городскими достопримечательностями в поиске порталов. Контролируемые точки-порталы образуют виртуальные треугольники — так происходит раздел карты.

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

Все темы авторы рассматривают с двух точек зрения: гейм-дизайнера и конечного потребителя. Вы увидите, как каждую приведенную в книге идею интерпретируют игроки. Узнаете о частых ошибках гейм-дизайнеров и о том, как включать в игру реальные физические объекты и выстраивать командное взаимодействие в смешанной реальности.

Чтобы оценить эту книгу, нужна привычка к чтению научных работ. Здесь нет упрощенных объяснений и забавной инфографики, но через каждые два слова — ссылки на источники данных.

Artificial Intelligence and Games (2018)

Авторы: Georgios N. Yannakakis, Julian Togelius.

Искусственный интеллект — неотъемлемая часть компьютерных игр, а сами игры — «полигон» для обкатки новых AI-алгоритмов. Книга рассказывает, как ИИ упрощает и удешевляет разработку игр. Вы узнаете, как игроделы умудряются автоматически генерировать контент: уровни и карты, графику, звуковые эффекты и даже правила. Авторы книги также делятся примерами усовершенствования геймплея с помощью искусственного интеллекта.

По структуре и содержанию перед нами университетский учебник. Здесь нет кода, но за каждой главой следуют упражнения, полезные ссылки и рекомендации, что почитать по теме. Вы узнаете, где в интернете брать для анализа данные о тысячах игр и о поведении игроков. За дополнительными ресурсами для выполнения практических заданий нужно заходить на сайт книги — gameaibook.org.

Целевая аудитория издания — студенты-«технари», ученые, гейм-дизайнеры и разработчики, специалисты по машинному обучению. Предполагается, что у читателя есть базовое представление об ИИ, программировании, алгебре и началах математического анализа. Но пусть гуманитарии не пугаются: в тексте ничего сложного нет. Самое приятное — актуальные примеры, которые показывают, что происходит в авангарде игровых AI-проектов.

По словам авторов, они решились написать эту книгу после более чем 10 лет преподавания и исследований искусственного интеллекта в учебных заведениях разных стран мира. Главной задачей было создать всеобъемлющую работу об использовании ИИ в играх, а игр — в исследованиях ИИ.

Learn to implement games with code (2017)

Автор: John M. Quick.

Книга быстро погружает в разработку игр на Unity, но главное — вы тренируетесь писать годные алгоритмы и код, что важно вне зависимости от движка. Опыта работы с C# не требуется — достаточно знать, что такое переменные, условия, циклы, массивы, функции. Если сомневаетесь в своих силах, посмотрите бесплатный курс «Основы программирования» на GeekBrains.

По содержанию книга похожа на методичку: в ней нет «воды» и философских разговоров — только сжатые инструкции и пояснения. Каждая глава — это новая практическая задача, вокруг которой выстроена теоретическая часть. При этом теории дают ровно столько, сколько нужно для решения задачи. Вы получаете ссылку на Unity-проект, который нужно достроить. Когда задание выполнено, вы можете свериться с эталонным кодом — тоже по ссылке.

Автор — Джон Куик (John M.Quick) — имеет ученую степень Ph.D. в области образовательных технологий. Он исследовал развлекательную составляющую и проявление индивидуальности в играх. В своих научных работах он предложил модели GEM (Gameplay Enjoyment Model) и GGO (Gaming Goal Orientation). Преподавал компьютерную грамотность, гейм-дизайн и программирование в университетах США и технологическом институте DigiPen в Сингапуре.

Pro HTML5 Games (2017, 2-е издание)

Aвтор: Aditya Ravi Shankar.

Книга учит создавать HTML5-игры с нуля. Никакой лирики — только практика и необходимые пояснения. Автор — индийский разработчик — отличился тем, что в числе других проектов реализовал на HTML5 классические игры Command and Conquer и Commandos: Behind Enemy Lines.

Вы изучите основы HTML и JavaScript, поработаете с физическим движком Box2D, создадите игровой мир, напишете сначала простую аркаду Froot Wars, а затем мобильную браузерную RTS с одиночной кампанией, мультиплеером и поддержкой тачскрина. Вы также получите практические советы по выбору и настройке инструментов разработчика. Что тут еще скажешь? Надо пробовать.

Games, Design, and Play (2016)

Авторы: Colleen Macklin, John Sharp.

Книга подробно рассказывает о работе над инди-проектами — в теории и на практике. Охвачено множество аспектов: от создания концепции до вывода игры в продакшн.

Обратите внимание: это не о разработке, а о гейм-дизайне. По выражению авторов, «архитекторы проектируют здание, но не строят его». Поэтому речь не о коде или контенте, но об идеях и принципах, определяющих, какой будет игра. Шарп и Маклин на реальных примерах разбирают шаблоны и приемы игрового дизайна, подходы к прототипированию. Вы узнаете, как получать что-то новое из уже знакомых идей. Например, как организация игрового пространства может изменить игровой процесс.

Источниками примеров и идей в книге выступают не только видеоигры, но и «настолки», и спортивные состязания на свежем воздухе.

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

Game Audio Programming: Principles and Practices (2016)

Автор: Guy Somberg.

По заявлению автора, это первая книга, целиком посвященная программированию звука в играх. Для такой темы труд действительно основательный — на 300 с лишним страниц. Вы узнаете об устройстве звуковых движков, об актуальных инструментах для работы со звуком в играх, о том, как программисту взаимодействовать с саунд-дизайнерами. Издание повествует о звуке с точки зрения физики и психоакустики, объясняет работу аудиодвижков Wwise, FMOD и ADX2, который де-факто является стандартом у японских игровых студий. А еще книга показывает, что можно делать со звуком в CRYENGINE.

Автор книги разрабатывал звуковые движки для игр The Sims 4, Bioshock 2, Hellgate: London, Tales from the Borderlands и Game of Thrones.

Продолжение следует…

А вы какие знаете хорошие и актуальные книги об игрострое?


6 окт 18, 15:12
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

«Аппетит приходит во время еды – это про меня с IT»

Привет, я Роман. Живу в Эстонии, работаю в сфере логистики, интересуюсь журналистикой, играю на гитаре и люблю путешествовать. Честно сказать, я никогда не был заинтересован в IT — это казалось мне скучным. На уроках информатики не хватало терпения досидеть до конца — и я их прогуливал. Этот предмет меня раздражал. Все это длилось до тех пор, пока у меня не появилась цель — сделать свой сайт. Но это произошло не сразу.

Как все начиналось

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

Со временем понял, что работать с подрядчиком не очень удобно. Я от него зависел: если хотел что-то добавить или улучшить, приходилось просить и ждать. Не говоря уже о финансовой стороне вопроса: любое изменение требовало денег. Сильного желания освоить разработку все еще не возникало, просто хотелось делать свое дело и не зависеть от третьих лиц. Я начал изучать сайтостроение самостоятельно, после чего понял, что надо пойти учиться систематически.

Искал курсы и нашел GeekBrains через рекламное объявление. Описание показалось мне интересным, и я прошел курс веб-мастера. Сделал собственный сайт на Wordpress, установив его через дистрибутив. Wordpress удобен, потому что позволяет собрать сайт, как конструктор. Я настроил подходящую тему оформления, установил все необходимые плагины, перенес контент со старой версии сайта (он бы написан на Joomla) — одним словом, сделал все для полноценной работы ресурса. С некоторыми трудностями столкнулся при переносе накопленного за 2 года контента на новый хост: картинки были разного формата, и их приходилось добавлять заново.

Сейчас все это кажется мне естественным, но до знакомства с GB я не имел представления о таких простых вещах. Полноценное понимание пришло уже в процессе обучения — во многом благодаря преподавателям, которые все подробно объясняли. Оказалось, освоить основы сайтостроения можно всего за 2 месяца, не углубляясь в серверные языки и базы данных.

Полная независимость

Спустя время я уже не зависел от веб-мастера, но по-прежнему пользовался готовыми темами оформления. Относительно моего бюджета это стоило немалых денег: одна из них обошлась в 60 долларов. И все бы ничего, если бы плата была разовой. Но в дальнейшем приходилось доплачивать за обновления, да и готовые плагины накладывали свои ограничения — ты априори зависишь от их ассортимента. Я же хотел независимости, но для этого нужно было приобрести больше навыков.

Тогда я решил освоить следующий курс — веб-разработку с нуля. Мы изучаем HTML, CSS, PHP, Javascript и базы данных. Могу сказать, что эти знания мне очень пригодились при работе над своим проектом. Они помогли создать свой сайт с нуля — таким, каким я хочу его видеть. До курса я тратил много времени на установку сайта на хостинг, а теперь это происходит гораздо быстрее и легче. Вишенкой на торте стал факт, что после обучения я смогу зарабатывать, создавая сайты для заказчиков.

Вскоре я действительно увлекся и взялся еще три курса: по SEO, системному администрированию и информационной безопасности. После знакомства с веб-разработкой пришел к неожиданному выводу: системное администрирование дается мне сложнее, чем сам JavaScript. Раньше думал, что быть сисадмином — легко. Возможно, у меня были общие заблуждения насчет этой профессии. Думал: протянул кабель, настроил оборудование — и готово, иди пей кофе. Оказалось не так. В системном администрировании нужно вникнуть в общий принцип: как работают программы, для чего они нужны. Общая картина складывалась тяжело, чего не скажешь о JavaScript, где все было понятно сразу: надо было лишь выучить и запомнить некоторые вещи, как при изучении иностранного языка. Просто учите, зубрите, повторяете.

Как не бросить все

При работе над сайтом постоянно всплывали ошибки. Когда что-то не получалось, опускались руки. Я пугался и думал: «Все пропало, шеф, все пропало», «Это не мое» и все в таком духе. Но любая задача решаема.

Ребята, даже если у вас есть опытный наставник, не пренебрегайте гуглением. Грамотный поиск и изучение нужной документации помогут вам найти ответы практически на любые вопросы. Другое дело, что наставник может задать вектор: подсказать, где именно и как искать. Верный алгоритм поиска — уже половина успеха, плюс сэкономленное время. Конечно, не все сразу: долгое время можно пребывать в тупике и унынии. Бывало, в критические моменты меня охватывала паника. Но справиться с ней можно, если:

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

Сейчас я уже окончил курсы SEO-специалиста и веб-мастера и стараюсь довести до ума оставшиеся три — системное администрирование, веб-разработку и информационную безопасность. Главной проблемой остается нехватка времени.

Так получилось, что я взялся за несколько курсов одновременно. С одной стороны, сложно угнаться за несколькими зайцами сразу. С другой — это лишний раз мотивирует: ты понимаешь, что уже встал на этот путь и несешь ответственность за свой выбор. Надо довести начатое до конца, чтобы не было стыдно перед собой.

Если считаете, что у вас нет времени на дополнительное образование — не спешите с выводами. Всего и сразу успеть нельзя, но выстроить свой день максимально продуктивно — можно. Могу поделиться своим скромным опытом. Я просто записываю. Когда вокруг много всего, ты будто выпадаешь из реальности. Записи помогают в нее вернуться. Не менее важно — планировать свое время по часам.

Мой обычный день выглядит примерно так:

  • 9:00 – 9:30 — завтрак;
  • 9:30 – 10:30 — час на изучение JavaScript;
  • 10:30 – 11:00 — полчаса на спортивную тренировку;
  • 11:00 – 12:00 — час на работу над своим сайтом;
  • 12:00 – 12:30 — полчаса на занятия по гитаре;
  • 12:30 – 13:30 — собираюсь на работу;
  • 13:30 – 14:30 — время в пути до работы, оно же — для изучения английского языка. В дороге я слушаю аудиопособия. Английский очень пригодится в IT-сфере — это конкурентное преимущество и интеллектуальный актив;
  • 14:30 – 23:00 — рабочий день;
  • после работы — время на другие дела или отдых.

Как видите, найти время можно на многое, если грамотно распланировать свой день. Я работаю на заводе сменами, поэтому личный график может меняться. Иногда встаю в 3 часа ночи, чтобы успеть на работу к 4 утра. Дело не в том, как именно составлен ваш график и насколько педантично вы его придерживаетесь. Суть в самом факте планирования, когда вы стабильно уделяете определенное время — пусть и небольшое — каждой из задач. В этом смысле мне было удобно проходить обучение дистанционно, гармонично встраивая его в личное расписание. На мой взгляд, это еще один плюс GeekBrains: можно просматривать вебинары в удобное время. Кроме того, на курсах советуют неплохие дополнительные материалы для самостоятельного изучения, вроде порталов htmlbook.ru, flexboxfroggy.com или webref.ru. От себя могу порекомендовать ресурс theory.phphtml.net. Все это помогает в условиях нехватки времени.

Что получилось

В итоге мой сайт стал более интересным и кликабельным. Раньше это выглядело как лента вида «картинка–текст». Сейчас есть рубрикация и категории. Внутренняя линковка работает лучше, а интерфейс стал более удобным: пользователю проще выбрать, что именно он хочет почитать. На сайте пишут люди из разных уголков мира. Я вошел во вкус и хочу развиваться дальше.

Аппетит приходит во время еды — именно так вышло у нас с IT. Я начал с простого, увлекся и перешел к более сложному. Не планировал становиться программистом, просто хотел научиться обслуживать свой сайт самостоятельно. Создавая проект, думал о его монетизации и предвкушал скорее результат, чем удовольствие от самого процесса.

Когда-то я считал эту сферу скучной или недосягаемой. Сегодня все иначе — во многом благодаря GeekBrains, где ты не просто проходишь курс, но и получаешь профессию. У каждой специализации есть подробное описание на сайте, и это позволяет приступить к учебе уже немного подготовленным. Наставники всегда помогут и подскажут. Ты чувствуешь, что не брошен — это важно. Сейчас я соотношу свои возможности с требованиями рынка и понимаю, что программистом может стать практически каждый.

Когда-то я и представить не мог, что во мне проснется интерес к разработке и IT в целом. Не мог, потому что не знал всех возможностей этой сферы:

  • большой инструментарий, чтобы работать на себя;
  • с технологиями можно связать любое свое увлечение или идею. Например, сделать сайт о путешествиях или обучающее приложение по игре на гитаре;
  • освоить новую IT-специальность вполне реально за полгода–год, а на базовые вещи может уйти всего пара месяцев;
  • войти в эту сферу можно в любом возрасте и без предварительной подготовки.

Многие из нас в юности выбирают специальность неосознанно — а потом всю жизнь не чувствуют себя реализованными, не получают от работы удовольствия. Сейчас мне 31, и потребность в изучении чего-то нового появилась у меня в 30. Главное — целеустремленность и желание постоянно развиваться. В IT начать никогда не поздно.


7 сен 18, 12:19
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Crap! Какой язык программирования заставляет ругаться чаще?

А в совместной работе над проектами ругаться сам рандом велел. Обнаруживая в коде ляпы коллег, любой человек зачастую не выбирает выражений, чтобы донести, каким общим завалом могут обернуться баги.

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

В этой статье выясним, какие языки программирования вызывают у разработчиков больше всего эмоций. Информацию для анализа возьмем с трех крупных веб-сервисов для совместной разработки: Github, Bitbucket и Googlecode. В качестве поисковика используем сервис Searchcode, который позволяет находить отдельные элементы в коде и комментариях к нему. Система утверждает, что в проверочной базе есть 20 млрд строк кода из 7 млн проектов. Пересчитывать не будем — поверим на слово. Найдем «горячие точки», где негодование программистов выражено вербально, и  посмотрим, какая сложится статистика.

Да какие маты на английском? То ли дело на русском!

Существует миф, что в английском языке мало ругательств. Но на самом деле англичане преуспели в словесной брани не меньше, чем русские. Ведь массовая культура зародилась в Британии на 150 лет раньше, чем в Российской империи.

Причина этого мифа до банального проста: большинство русскоговорящих людей учит «академический» английский, который рассчитан на культурное общение. А нецензурную лексику мы преимущественно слышим в фильмах — а там она куда беднее, чем в жизни. Буквально пять ругательств и несколько десятков их производных.

В реальности идиоматических выражений в английском множество. Но наша статья посвящена не этой теме. Если интересуетесь, есть отличная книга «Вашу мать, сэр» (авторы Московцев и Шевченко): 480 страниц отборного английского мата, крепких выражений и сленговых фразочек. Советуем программистам, которые часто спорят с иностранными коллегами.

Для анализа в статье мы взяли 5 наиболее популярных ругательств английского языка:

  • Crap;
  • Fuck;
  • Shit;
  • Damn;
  • Cock.

Перевод угадать нетрудно — слова известные, близкие сердцу. Сначала соберем общую статистику с ресурсов. Затем разберемся, какое ругательство программисты используют чаще всего.

Уверенно лидирует слово «Crap», так что разберем его первым.

Crap

«Crap» не считается грубым ругательством. Это почти полный аналог русского «блин». Поэтому его и употребляют так часто.

Допустил ошибку в своем коде — «Crap!».

Увидел баг в чужом — «Crap!».

Не можешь найти общий язык с программистом — «Crap!».

Слово настолько плотно вошло в лексикон IT-специалистов, что появился специальный CRAP index (Change Risk Analysis and Prediction). Его формула прогнозирует, скажет ли программист «Oh, crap!», когда увидит, какой код ему предстоит поддерживать. CRAP-индекс на практике используют многие программисты — при тестировании, оптимизации и переписывании отдельных участков кода.

Больше всего «crap» используют на Bitbucket — 26 666 раз. При этом примерно 70% из них приходится на упоминание CRAP-индекса или его производных.

Такие фрагменты кода с аналогичными комментариями — норма. В остальных моментах «crap» используют, чтобы выразить отношение к коду или ситуации в целом.

На Googlecode «crap» встречается явно реже. То ли код там лучше пишут, то ли просто CRAP-индекс не используют.

C/C++ лидирует с большим отрывом — здесь «crap» звучит в три раза чаще, чем во всех остальных языках, вместе взятых. Видимо, кодить на С/С++ без ошибок крайне сложно. Или же англоязычное «блин» автоматически отлаживает код и дезинтегрирует ошибки.

Fuck

Продолжаем с самым распространенным ругательством английского языка — «Fuck».  Общее количество употреблений — 15 628 раз (система учитывает все производные от слова, поэтому реальные показатели немного меньше).

При этом программисты используют «fuck» как оскорбление куда реже, чем как междометие и связующее звено в мыслях. Фразы «fuck you», «fuck off» или «motherfucker» встречаются совсем редко. Это радует: мы ведь тут работать пытаемся, а не унижать друг друга.   

Google и здесь отличился. Если на Github и Bitbucket присутствует 7817 и 6888 использований соответственно, то на Googlecode — всего 607. В 10 раз меньше! Совпадение? Не думаю.

Статус наиболее «fucked»-языка неожиданно получил Vimscript.

Все объясняет одна-единственная фраза:

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

Зато C/C++ предсказуемо фигурирует в рейтинге. А стабильность — залог успеха.

Shit

Универсальное слово, которое показывает, что код, мягко говоря, не слишком хороший. Всего «shit» использовали 17 598 раз — это больше, чем «fuck», даже с учетом всех его словоформ. Эти слова часто используют вместе во фразе «fuck this shit», в окультуренном переводе — «нахрен вот это вот все». 1785 примеров!

Как думаете, на каком языке чаще всего делают «shit»?

Такая ситуация в С/С++ повторяется куда чаще, чем вы можете себе представить:

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

Что касается ресурсов, где больше пишут «shit», — абсолютно никаких странностей:

На Bitbucket немного больше, чем на Github, но это частности. Зато Google, как всегда, на высоте. И это совсем не потому, что там делают меньше проектов, чем на Github и Bitbucket, не-не-не. Там, конечно, разработчики культурнее.

Damn

Еще один аналог русского «блин» — даже более универсальный, чем «crap». Если «crap» имеет негативный оттенок, то «damn» в целом только эмоционально окрашивает фразу. И судя по частоте его использования в IT, разработчики — ой какой импульсивный народ.

Результат по ресурсам практически полностью повторяет статистику по слову «crap». Github и Bitbucket ругались, а Googlecode рядом стоял и надышался.

И аналитикой по языкам вас не удивим:

В этом туре в компанию затесался Assembly, но общей погоды он не меняет. С/С++ остается лидером из-за количества допускаемых ошибок, на которые нельзя спокойно реагировать.

Иллюстрация к мысли о том, что оптимизм — важная черта характера разработчика на С/С++. По-другому здесь не выжить.

Баги в HTML тоже часто попадаются, но их проще исправлять, и они не приводят к таким печальным последствиям, как одна ошибка в 8000 строках кода, из-за которой падает вся система. Поэтому косяки в HTML не вызывают такого всплеска эмоций.

Cock

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

Судя по статистике, обижать коллег любят программисты на Github. Но если быть совсем честными, именно это слово часто попадает в различные фильтры. И львиная доля от всего числа использований — именно оттуда. А другая часть непонятным образом пришла из описаний неведомых материалов категории «18+». Если смотреть объективно, реальных оскорблений немного.

Интересно, что нигде, кроме Github и Bitbucket, слово «cock» вообще не используют. 63 упоминания в Googlecode — это ни о чем. На других ресурсах и того меньше. Все же это ругательство не типично для программиста.

Здесь лидером рейтинга становится HTML.

Это предсказуемо: фильтры на нецензурные слова ставят там, описания тоже есть. Вот и получается, что все HTML-проекты скинулись и набрали на первое место.

А так выглядит фильтр цензуры на Python:

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

И у нас есть победитель!

По статистике использования нецензурных слов и выражений побеждает С/С++ — с большим отрывом. Если бы такой был у бегуна-марафонца, он бы мог на дистанции попить кофейку с печеньками, вздремнуть часик-другой и все равно победить в забеге.

Все же сложность структуры языка влияет на эмоциональную стабильность программистов. И С/С++, судя по нашей статистике, не способствует душевной гармонии разработчиков. Одна ошибка — и ее придется ловить вручную. Встретите программиста на С/С++ — дайте ему конфету, поддержите.

А если это вы сам, помните, что ругаться — нормально. Во всяком случае, чтобы на самом деле не убить коллегу за ошибку, которую не можете найти уже 2 дня. Хорошего настроения и кода без багов!

Бонусы для читателей

Ловите бесплатный доступ на три месяца изучения английского на онлайн-курсах EnglishDom до 30 июля 2018 года.

Будем рады видеть вас на индивидуальных занятиях курса «Английский для IT-специалистов».


9 июл 18, 15:00
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Программирование в химии: интервью с Джузеппе Балакко

Большинство людей ассоциируют IT в первую очередь с разработкой мобильных приложений, веб-сайтов, игр. Но «фронт» работы программистов гораздо шире. Вряд ли вы с ходу назовёте хоть одну сферу, куда ещё не внедрена электроника.

Чтобы доказать это, перенесёмся в мир химии. О том, как из учёного стать крутым программистом, не меняя сферы деятельности, мы поговорили с основателем компании Nucleomatica, разработчиком ПО для спектроскопии ядерного магнитного резонанса iNMR Джузеппе Балакко.

Джузеппе, начнём с главного — что такое спектроскопия ядерного магнитного резонанса? Где она применяется?

— Спектроскопия ядерного магнитного резонанса (NMR) позволяет оценить молекулярную структуру вещества, его количественный и качественный состав. С середины ХХ века это один из популярнейших аналитических подходов в химии. Конкретной сферы применения нет: NMR востребована как в научных экспериментах, так и  в медицине, промышленности.

К примеру, вы нашли волшебный порошок, который превращает автомобиль в трансформер. Естественно, вы захотите узнать, из чего он состоит, и попробовать его воспроизвести. Самый верный способ установить состав — спектроскопия ядерного магнитного резонанса. Также с помощью NMR компания может контролировать поставщиков сырья.

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

NMR-спектрометр

В основе метода лежит явление ядерного магнитного резонанса. Попробую объяснить упрощённо: все ядра имеют заряд, а некоторые — ещё и полуцелые спины. Возможно, вы помните, как в школьном курсе химии раскладывали «стрелочки» (протоны и нейтроны) по парам в «клеточках» (характеризующих энергетический уровень), а в итоге оставались одинокие «стрелки» и «клетки». В этом случае под действием переменного внешнего поля магнитные ядра могут менять энергетический уровень, поглощая энергию. Преобразования в них можно фиксировать в зависимости от частоты излучения извне.  Регистрация этих явлений позволяет построить спектр зависимости и определить состав вещества. Для организации исследования, фиксации и интерпретации результатов используется программирование.

Программирование в классическом представлении: на популярных языках в общедоступных средах разработки? Или это работа со специальными языками и ПО?

— Нет, самое обычное программирование, но с обширным кругом задач: работа с устройствами ввода-вывода, протоколами, интерфейсами, аналого-цифровыми и цифро-аналоговыми преобразователями, а также представление этой информации пользователю в удобной форме.

Именно поэтому на рынке фактически нет такой профессии, как NMR-программист. Как правило, это или IT-специалисты широкого профиля, или химики с дополнительным образованием. Кроме того, в NMR есть объективные ограничения: высокая точность требует много времени и ресурсов (гелия, запас которого на планете ограничен, сверхпроводящих магнитов и прочего). То есть услуга дорогостоящая. В перспективе, с открытием новых технологий, NMR может стать более доступной и применяться массово, но пока это не так.

Какие языки программирования вы используете?

— Преимущественно С, так как требуется большая производительность. Но также приходится иметь дело с C++, Lua, Objective-C и веб-набором HTML–CSS–PHP.

По образованию я не программист, а химик, и всем языкам обучался сам. Первым был BASIC, потом я переключился на Pascal, и затем — на C. Когда начинал карьеру, рынок специализированного ПО был очень мал, поэтому пришлось учиться программировать, чтобы решать профессиональные задачи самостоятельно.

Можете посоветовать книги?

— Для изучения многих языков, в том числе Pascal, C, Python, есть серия книг «Numerical Recipes in…». Это собрание типовых задач и решений. Очень полезно для тех, кто делает первые шаги в программировании, но не хочет тратить много времени на самостоятельный поиск ответов на тривиальные вопросы.

По C рекомендую книгу «C: a Software Engineering Approac» Питера А. Дарнелла. Она как раз посвящена созданию ПО на инженерном уровне, где важна производительность и надёжность.

По Lua могу посоветовать «Programming in Lua» Роберто Иерусалимши: здесь можно найти ответы на все вопросы по языку.

Ваше мнение, как лучше обучаться: интернет-курсы, книги, навороченные среды разработки?

— Нет универсального ответа — необходимо всё совмещать. У меня был неудачный опыт онлайн-обучения, но преимущественно потому, что я не мог делиться своими соображениями и замечаниями. Но это частный случай, а в перспективе, безусловно, интернет-курсы —  эффективный способ. При этом без книг и онлайн-документации обойтись нельзя.

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


1 июн 18, 16:15
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

11 шагов к созданию языка программирования

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

Изучите устройство компьютера

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

Изучите терминологию

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

Определитесь с назначением языка

Сразу решите, будет ли ваш язык иметь узкую специализацию или ваша цель – универсальный инструмент, который окажется востребован в любой области IT. Оцените объём работы, которой вам предстоит проделать, поставьте цели, которых вы хотите достичь. Ну и самое главное – определитесь: вы хотите покорить мир или просто попробовать для себя что-то новое?

Очертите основные концепции

Есть ряд вопросов, на которые необходимо ответить:

  • Компиляция или интерпретация? Компилируемый код целиком собирается в машинный, после чего исполняется. Интерпретируемый код разбирается и выполняется построчно. Здесь, как и во всех дальнейших вопросах, нет однозначно правильного ответа, вам предстоит выбирать между удобством, функциональностью, безопасностью, производительностью и прочими аспектами.
  • Статическая или динамическая типизация? В первом случае пользователь должен самостоятельно задавать типы данных, во втором – вам придётся описать систему для определения типов.
  • Будет ли язык содержать автоматический сборщик мусора или ручное управление памятью?
  • Какую вы планируете использовать модель программирования: ООП, логическое функциональное, структурное? А может, вы собираетесь изобрести что-то принципиально новое?
  • Будет ли ваш язык поддерживать вставки из других языков программирования?
  • Содержит ли язык базовые функции или все возможности будут поддерживаться из внешних библиотек?
  • Как будет выглядеть архитектура программы?

Эти вопросы помогут сформировать облик будущего языка и породят ряд новых базисных вопросов, на которые тоже придётся дать ответы.

Поэкспериментируйте с синтаксисом

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

Дайте название языку

Время перейти к самому простому – подобрать название. Большинство разработчиков не вкладывает глубокий смысл в это действие, давая языку простое, легко запоминаемое имя. Советуем и вам придерживаться этого посыла. Мудрёные аббревиатуры или многословные названия, с одной стороны, не привлекают пользователей, с другой - быстро вылетают из памяти.

Выберите язык для языка

Новый язык надо на чём-то написать. Суровые гики могут использовать язык ассемблера или машинные коды, но в XXI веке куда больше смысла ориентироваться на высокоуровневые языки: Pascal, C, C++, Swift (компилируемые языки) для интерпретируемого варианта; Java, JavaScript, Python, Ruby (интерпретируемые языки) — для компилируемого. Такие пары обеспечат минимальные потери в производительности.   

Поработайте над лексером и парсером

Лексер – инструмент, отвечающий за лексический анализ, разбиения кода на составные единицы, называемые токенами. Парсер, отвечающий за синтаксический анализ, организует иерархию из токенов, определяя порядок их взаимодействия. Графически это можно представить следующим образом:

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

Создайте стандартную библиотеку

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

Напишите уйму тестов

Создать язык – не так сложно, как заставить его нормально работать. Определить работоспособность всех механизмов языка вам помогут специальные тесты, очерчивающие границы «можно» и «нельзя» и не вызывающие при этом исключительных ситуаций, которые поставят возможности языка в тупик.

Опубликуйте язык

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


3 апр 18, 14:30
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0

Программирование по любви или ради денег

Программирование – это работа, равноценно сочетающая в себе страсть и рутину. Возможно, вы полагаете, что переход и одного состояния в другое невозможно контролироваться. Но недавнее исследование, проведённое учёными из Университета Оулу, Финляндия, говорит об обратном. Более того, оперируя периодами удовольствия, вы можете значительно повысить свою эффективность.

Целью проведения исследования был сбор информации о том, как работа во внерабочие часы может снизить работоспособность, общее благополучие и производительность. Однако выводы дают более общее представление о различиях между оплачиваемой работой и «бесплатным» вкладом в проекты с открытым исходным кодом.

Исследование включало в себя анализ временных штампов совершения действий в проектах Mozilla и Apache, куда входят как наемные разработчики, так и волонтеры. Также под наблюдение попала местная компания, куда входят 9 «зарплатных» разработчиков, ведущих в сумме 87 проектов.

На основании этих данных были построены и изучены разные модели производительности программистов. Ниже приведены диаграммы, которые красноречиво показывают разницу между разработкой в мелких компаниях и таких гигантах, как Mozilla и Apache. Если в первом случае большинство сотрудников ограничивается 8-часовым днём и редко появляется в офисе по выходным, то во втором – существенный процент работы выполняется в свободное время.

В остальном мы видим привычную картину:

  • Пик активности приходится на период со вторника по четверг. Обратите внимание, что в крупных проектах максимум выпадает на второй день недели, а в маленькой фирме – на четвёртый.
  • Понедельник и пятница – наименьшие по активности будние дни, причём начале недели работать хочется даже чуть меньше.
  • Вторая половина дня – наиболее продуктивное время, но в целом активность достаточно равномерно распределена по «официальным» 8 часам.

Но есть и необычные выводы:

  • В крупных проектах, где привлекается совместно труд волонтёров и наёмных работников, за рабочее время выполняется только 60% работы.
  • Работа в маленьком офисе тесно связана с продолжительностью рабочего дня, несмотря на большую загруженность, в то время, как «свободные» компании сохраняют высокую активность вплоть до полуночи.

Дальнейшее исследование показало, что такие проекты, как SeaMonkey, Thunderbird и Groovy вообще демонстрируют максимальную активность вне рабочего времени.

В итоге Mozilla Firefox стал предметом более глубокого тематического исследования, чтобы на его примере посмотреть подробнее различия между деятельностью в рабочее время и вне его. В результате было обнаружено, к примеру, что в офисе большинство правок было сделано внутри систем контроля версий. В нерабочее время чаще встречаются неформальные «откаты» разработчиков, которые контролируются только им.

Также обратите внимание на перечень используемых терминов: в рабочее время (голубым) и вне его (коричневым):

Одним из очевидных выводов исследования стало то, что распределение рабочих часов в открытых проектах является следствием занятости наёмных работников и волонтёров. Разработчики, имеющие контракт с компанией, с большей вероятностью будут работать в рабочее время, в то время как «бесплатная сила» выбирает свободное время.

Далее взглянем на выборку из 287 разработчиков, которые исходя из своей занятости и активности были разбиты на три кластера:

У зелёного кластера (n=101) основная активность приходится на рабочие часы. Он имеет наибольшую долю коммитов (15,9%) во вторник и самый низкую – в воскресенье (1,7%). Черный кластер (n = 46) работает больше в свободное время и имеет пик коммитов в субботу (11,4%) и минимум в понедельник в рабочие часы (5,7%). Синий кластер (n = 131) предпочитает работать в будние дни, но вне рабочего времени. Поэтому наибольшая доля коммитов приходится на среду (11,2%), а наименьшая – в воскресенье (3,9%).

Вскрыв статус «наёмник/волонтёр», мы узнаем, что 90% зеленого кластера и 88% синего кластера получали деньги за свою работу. В чёрном кластере таких оказалась лишь половина (50%).

Это привело исследователей к заключению:

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

Организаторы исследования практически не делают на основании этого каких-то далеко идущих выводов, полагая, что даже сотрудники местной компании могут в свободное время выполнять личные или свободные проекты. Однако лично мне сложно представить, что разработчик, который на основном месте работы выполняет свои обязанности строго с 9 до 17 часов, будет бесплатно трудиться в свободное время или в выходной день.

Отсюда можно сделать «аккуратный» вывод, что эффективная модель ведения проектов предполагает не только исключительно оплачиваемый труд, но и деятельность, основанную на голом интересе.


30 мар 18, 18:20
0 0
Статистика 1
Показы: 1 Охват: 0 Прочтений: 0
Темы с 91 по 97 | всего: 97

Последние комментарии

нет комментариев
Читать

Поиск по блогу

Люди

7 пользователям нравится сайт lena2018.mirtesen.ru