C++14 имеет достаточно фич, что бы забыть о PHP?
==================================================

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

На днях я ознакомился с черновиком С++14, и хотелось бы узнать у тех, кто ознакомился более подробно, а так же уже освоил C++11, там достаточно возможностей, что бы так же быстро клепать дерьмо-сайты, только на нормальном языке, с адекватным распределением памяти?  

  

(Для злящихся php-шников, дополню, меня не устраивает вот это. Этим испещрен весь язык. )  

$a = «2d9»; $a++; $a++; echo $a; → 3  

$a = «2d9»; $a+=2; echo $a; → 4  

$a = «2d9»; $a++; echo $a; → 2e0 

 C++14 имеет достаточно фич, что бы забыть о C++ 

 Ну если хотите много геморойчика себе на сидячее место, то на здоровье.  

  

Профит от C++ возможен только в случае, если необходимы очень сложные расчеты и многопоточность. А для всякой мелочи у которой в основном работа с бд и файлами, подойдет абсолютно любой интерпритируемый язык. Если хотите уйти с PHP, глядите на Python к примеру. Но подводные камни есть абсолютно везде. 

 А вы смотрели в сторону [Go](http://golang.org/)? Я забыл о PHP с приходом Go в мою жизнь. Правда я не сайты делаю, а сервисы, но одно не сильно от другого отличается. Go как C компилируемый (скорость, низкое потребление памяти), но при этом на нём очень комфортно писать, почти как на PHP или Python.  

Можно подружить с nginx.  

  

Вот подборка веб фреймворков на этом языке  

[robfig.github.io/revel/](http://robfig.github.io/revel/)  

[www.gorillatoolkit.org/](http://www.gorillatoolkit.org/)  

[webgo.io/](http://webgo.io/)  

[code.google.com/p/gorest/](https://code.google.com/p/gorest/)  

  

Я использую этот — [github.com/stretchr/goweb](https://github.com/stretchr/goweb)  

Простой и лёгкий.  

  

Книжка по Go — [www.golang-book.com/](http://www.golang-book.com/) 

 меня очень удивил C#. сам программирую в основном на php, а на работе новый проект начали на шарпе. был очень удивлен как там все довольно таки просто и довольно таки удобно. 

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

 На плюсах есть всё чтоб пилить сайты. Берёте батарейки (boost), веб-сервер (мой выбор — [mongoose](https://github.com/cesanta/mongoose) с [самопальной обёрткой](https://github.com/bakwc/ozifi/blob/master/library/http_server/server.h)), шаблонизатор (например, [cpptemplate](https://bitbucket.org/ginstrom/cpptemplate)), базу данных (в простых случаях — хранить всё в памяти и дампить на диск. В средних — заюзать любую из кучи бд, как внешних, так и легко встраиваемых прям внутрь проги. В сложных — держать часть данных в памяти, часть на диске, подгружать когда надо, и не забыть ещё журналирование). Затем берёте бутстрап & jquery (или любые другие фреймворки по вкусу) и запиливате обмен json-ами. Можно ещё websocket-ы прикрутить.  

По скорости разработки — когда приноровитесь — будете не слишком сильно сливать интерпретирщикам. Для удобной разработки нужно иметь настроенную систему сборки с библиотеками, ide, умеющую работать с данными на удаленной машинке (например, QtCreator) ну и саму машинку, которая будет не сильно долго всё это пересобирать.  

Сливать будете всё равно, потому что:  

 — компиляция (быстрей 5-10 секунд для проекта с набором библиотек наврятли разгонитесь. хотя..)  

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

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

 — скорость мозга. Есть инфа, что если мозг часть времени думает о том, какой объект кем владет и кто кого когда убивает, ещё часть, как бы завернуть первую часть в удобо-юзабельные абстракции и какой-бы паттерн тут применить, ещё часть о том, что за странное сообщение об ошибки в какой-то сторонней библиотеки, вступившей в странную связь со свеженаписанным ~~говно~~кодом, не забывая про статическую типизацию а так же извращённый интерфейс разработчиков типовых решений ([да тот-же split](http://stackoverflow.com/questions/5734304/c-boost-split-string)) — его производительность несколько ниже чем у мозга, думающего по большей части о продуктовой логике.  

 — ошибки компиляции, линковки, segfault-ы, ошибки многопоточности, утечки памяти — вообщем полный набор удовольствий для истинных ценителей :) 

 Честно, для себя лично я оценил простоту web-разработки на C# + Asp.Net MVC + jquery/twitter bootstrap. 

 Про объективность использования C++ это вам уже и так понаписали. Давайте растолкую про не устраивающую вас логику PHP. Правда в другом порядке.  

  

```
<?php $a = "2d9"; $a++; echo $a; → 2e0
  

a — строка. Инкремент строки (которая не является записью в 10чной СЧ) выполняется [по принципу Perl](http://php.net/manual/ru/language.operators.increment.php): «A»++ = «B», «Z»++ = «AA», «AA»++ = «AB». Вот и получаем «2e0».  

  

<?php $a = "2d9"; $a++; $a++; echo $a; → 3
  

Если же строка содержит нечто, похожее на 10чную СЧ, то приводим к целому и инкрементируем. Второй инкремент дает «2e0» = 210^0 = 2. 2++ = 3.  

  

<?php $a = "2d9"; $a+=2; echo $a; → 4
```
  

Арифметика без инкремента сразу приводит строку к числу, и мы просто считаем 2+2.  

  

Нормальная логика, если учесть, как PHP используется. Это как удивляться, почему инкремент short* увеличивает значение указателя на 2, а не «как должно быть» на 1 :) 

 Я вообще не понимаю Вашу проблему? Если Вы пишите на C++, то не составляет труда просто сделать свою ветку PHP выпилить сложение строк и получить интерпретируемый язык с тем поведением, которое Вам нужно.  

  

И я уверен Вы найдете последователей и любителей писать long-pool приложений. А если дописать PHP и снабдить его Threading и допилить до хорошего уровня ООП-шный Runtime, то цены вам не будет… 

Если сильно интересно - писать сайты можно и на C, и на С++

В моих проектах используется Apache HTTPD + интересующие модули + контентный модуль, написанный на C++ (правда, от ++ там только объекты с наследованием, никаких шаблонов, а тем более stl и boost, просто объектная семантика удобнее структур от C)

Apache HTTPD уже имеет на борту солидный набор полезных вещей (гуглить Apache Portable Runtime), недостатки исправляются тоннами хороших и доступных библиотек (curl, imagemagick, openssl, да что угодно из мира C/C++, хоть V8 + toc++ для генерации биндингов и у вас свой скриптуемый жабаскриптом сервер)

В дополнение, можно получить систему управления памяти от APR (пулы памяти), что избавляет от суровой головной боли с утечками, контролем времени жизни ресурсов и прочими радостями.

Для всей этой радости у нас написан фреймворк, который даёт коду на C++ читаемость и скорость разработки уровня интерпретируемых языков, который команда уже год мечтает допилить до полноценного OpenSource проекта (вот, только будет свободное время... но оно похоже будет оно в следующей жизни).

Сборка построена на makefile, которые замечательно понимает любая IDE, что есть на линуксе. Сборка инкрементальная, как положено, компиляция при активной работе над фичей меньше секунды. Отладка через GDB (тоже замечательно воспринимается IDE). Компиляция + деплой + запуск с одного сочетания клавиш занимает меньше секунды.

Рабочие версии выкатываются через примитивный CI (gitolite + hooks), сервер сам собирает, сам устанавливает. Выкатывание так же занимает от 5 до 10 секунд (на сервере всё пересобирается полностью, ну и качеству связи не последняя роль отведена).

Веб-морды собираются на бутстрапе (хотя недавно верстальщики распробовали SemanticUI и порадовались), сердце веб-морды - AngularJS.

А как же индексация, спросят знакомые с SEO люди? PhantomJS + простейший скрипт решают эту проблему. Когда приходит робот за полным индексом, сервера конечно не очень довольны, но вполне себе стоят и работают без заметных тормозов (0.1 мс против 1.5 мс, при среднем пинге пользователей в 150мс)

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

 

 1% времени мощь С++ используется.  

99% процентов времени ты с С++ борешься  
  

Сказал человек, разрабатывающий языки и среды и компиляторы уже почти 40 лет.  

<https://habrahabr.ru/post/314616/>