Kuroch
Хороший совет и ответ дал Champion. Заниматься азами времени нет, сильно много работы, а если действительно так нужно, то найдется 15 минут на прочтение пары страниц кода.
Kuroch пишет:
сами наверное понимаете что такое для программиста новый язык
Совершенно не понимаю, каждый уважаемый программист должен владеть хотя бы несколькими языками программирования и использовать их по задачам. Я не говорю про знания всех мелочей, но хотя бы знать азы и особенности необходимо. Почитайте статьи о том, как люди проходят собеседования на престижную работу в хорошую компанию - мало знать один язык.
Знания особенностей нескольких языков позволяют программисту даже мыслить совсем иначе.
test - работает от SAM Broadcaster
testnonstop - от ices
Проблема когда подключаю test, пользователей автоматически на него не возвращает, приходится ручками в проигрывателе отключатся и подключатся по новой, чтоб получить новый эффект. При отключении test, та же проблема, автоматом не перенаправляет на testnonstop - как это положено.
Проблема 2:
ices2 - отрубается после обработки первой песни в плей листе.
DlTA
1) Я не говорил, что нужно заменить PHP на другой язык, я упоминал, что для хорошей производительности необходимо использовать связки языков, технологий и т.д.
2) Разработка на С++ может занимать не больше кода чем использование PHP. Существует уже множество готовых наработок (библиотек) в С++ , которые делают программирование на С++ не сложнее и не больше чем на PHP - поэтому вывод о километрах сишного кода - это не правда. Следующий топик, который я опубликую, будет о взаимодействии С++ и MySQL - и все смогут удивится, что использование mysql в С++ за счет библиотеки mysql.h - такое же, как и в mysql - и вообще на этой части работы код будет отличатся с PHPшным в несколько строк.
Моя цель была, просто объяснить, что хороший программист не может упираться в знание одного лишь языка и для качественного решения задач необходимо использовать максимум возможностей и знаний, которые необходимо постоянно углублять и расширять.
Мелкий
Действительно это так, но не нужно забывать, что есть еще время затраченное на интерпретацию кода. В то время когда скомпилированный код сразу преобразуется в машинный и потому скорость работы выше.
Так же не буду спорить, что сравнительно недавно в PHP появилась возможность сразу интерпретировать код в машинный, но тем не менее С++ остается по факту более быстрым в частных решениях.
Уже много раз упомянуто про плюсы CGI и о возможности создавать менее ресурсоемкие приложения нежели на PHP. Но существует некий минус.
Хоть хостеры зачастую запрещают выполнение таких функций, как exec, system и т.д. Но данный запрет распространяется только на выполнение на PHP, но ни каким образом не распространяется на другие языки например на С++.
Таким образом нужно не забывать про права доступа к файлам. Если у Вашего хостера включен CGI, то рекомендовано побеспокоится на тему прав доступа к файлам, исключить возможность создания файла в ваших файлах, путем использования файлов и папок с правами достаточными для злодеяний. Где нужно запретить любыми способами обращение ко всему кроме того, к чему можно. Например через .htaccess .
Как вариант можете проверить хостера следующим скриптом:
Очень частой проблемой встречается невозможностью запустить скрипт С++ в CGI .
Данная проблема заключается в конфигурации серверов, в частности как правило монтирование раздела диска с отметкой noexec - что запрещает выполнение.
Хостеру в таком случае нужно перемонтировать диск без отметки noexec . Отмечу, не форматировать , а монтировать.
в том что поток в процессе работы может получать новые данные и обрабатывать их(оставаясь в памяти), задача же выполняется над исходными данными один раз
Если такой подход, то поток может обеспечиваться только на стороне сервера. а не CGI. А С++ в данном случае может служить только инструментом для запуска этого потока.
White пишет:
вызванная один раз программа на c++ остается в памяти сервера, а не выгружается из нее после окончания обработки определенных данных, так как это делает любая php
Я не буду громко кричать но при изучении вопроса (не углубленно) я понял, что если мы запускаем параллельно множество запросов к программе, то они использую только один экземпляр библиотек и т.д. Другими словами посмотрите тему "Запуск нескольких экземпляров программы" - и как я понял (надеюсь правильно), то используемые библиотеки загружаеются единожды и используются всеми копиями программы.
Для лучшего усвоения запустить несколько копий одной игры и обратите внимание, что количество ресурсов затраченных на одну копию приложения не больше чем среднее значение потраченных ресурсов на большее количество программ.
ALEN пишет:
именно это я и хочу понять, в чем принципиальное отличие этих языков именно в веб-програмировании
C++ - не является шаблонизатором и на нем не так удобно делать вставки из того же html
PHP - идет как шаблонизатор и изначально задуман для создания web проектов.
Преимущество С++ перед PHP есть только при создании приложений требующих большую нагрузку на сервер. В простых сайтах не вижу смысла использования С++ вместо PHP.
White
1) Что такое многозадачность? Многопоточность - это способность параллельно запускать несколько задач. Все упирается в большей степени в права запуска в CGI. Я не уверен, что вышеупомянутые функции можно запускать из под CGI - в будущем проведу эксперименты и если все выйдет, тогда опубликую отдельный топик.
2) ПО поводу чата, да действительно это более серьезный обработчик, поэтому использования С++ будет более уместно нежели PHP, попробую объяснить на пальцах. При работе PHP:
При написании топика или проверки новых сообщений, PHP каждый раз загружает и интерпретирует все используемые библиотеки, классы, функции и т.д. Таким образом одни и теже элементы одновременно в системе занимают несколько пространств. При использовании C++
Все библиотеки и т.д. остаются в памяти один раз, что дает возможность обращаться к ним быстрее чем из диска + код уже компилирован и не нуждается в обработке и интерпретации.
3) Если код большой, то первая компиляция проходит с небольшой задержкой. Дальше если просто править сам код и не добавлять библиотеки компиляция проходит значительно быстрей и ее бывает даже не замечаешь, т.е. выходит, что я жму Ctrl+F5 вместо Ctrl+S ,но весь плюс работы на C++ - его не скомпилируешь с ошибками, php ты заливаешь и уже по ходу дела находишь и исправляешь ошибки.
Итого при хорошем знании обеих языков время создания одного и того же приложения будет не сильно отличатся.
Еще раз хочу отметить, что идеальное решение это использовать связки языков, а не заменять PHP на тот же C++ .
DeepVarvar
Создал пару топиков в разделе, вступительных, почитай тогда поймешь почему выдвигаю идею в частности прочти C++ в сайтростроении - если мои "писательские"- авторские способности не равны нулю, то должно было стать ясным, что знание даже хотя бы С++ очень даже нужны при создании серьезных проектов.
White
1) Если имелось в виду многопоточность, то в С++ она существует, я правда еще не задавался такой целью, но думаю в будущем решу вопрос и поведаю, что вышло. А вообще читал, что используется:
WIN - CreateThread и _beginthread(ex)
*nix - _beginthread(ex)
Но все это используется в визуальных приложениях точно, а вот под консолью (CGI) - я не уверен, потом попробую найти какую-то информацию (самому стало интересно).
2) Весь вопрос в том, какая цель и задача стоит перед разработчиком. Если мы пишем чат и каждую секунду к одним и тем же библиотекам и т.д. обращаются пользователи, то естественно С++ при правильном подходе даст желаемый результат, в отличии к примеру от PHP. Если у нас "цель" - простой сайт визитка с небольшой нагрузкой, то не вижу смысла использовать, что-то кроме PHP - под которым построить будет быстрее и удобней приложение.
3) Действительно код выходит закрытым в отличии даже от PERL. Я не слышал про компиляцию с помощью CGI. Да и сомневаюсь, что правильно весь проект засовывать в один cgi файл - лучше разбить модульно на части, что и облегчит разработку и в дальнейшем будут независимые модули, которые легче будет заменять и усовершенствовать чем целую программу сразу. Например система голосования в один файл, учет посещений в другой и т.д. - по времени вряд ли будет настолько огромный код, что будет "напрягать" при компиляции.
Я не буду рассказывать значимость знаний С++ языка в настоящее время, а просто хочу сразу перейти к вопросу, чем хорош или плох в использовании С++ при создании интернет проектов. В основном буду прибегать в сравнении с PHP языком, который является основным лидером среди используемых языков в создании сайтов.
Решил начать с минусов:
1) Код необходимо компилировать для работы, в отличии от PHP. Данный минус не позволяет быстро править код программы.
2) C++ изначально не является шаблонизатором
3) Код программы занимает значительно больше места, чем аналогичная программа на PHP (Не всегда, но часто)
4) Генерация страницы иногда происходит дольше чем генерация страницы на PHP.
Плюсы:
1) Несмотря на то, что требуется компилировать код программы - это позволяет несколько обезопасить себя от внедрения вредоносных участков кода со стороны злоумышленниками.
2) -
3) -
4) Если ваш язык программирования интерпретатор(PHP) или компилятор для загрузки, каждый раз он выполняет соответственно компиляцию или интерпретацию кода, то при обращении к коду процедура будет занимать определенные ресурсы и время каждый раз. А при использовании С++ все накладные расходы на обработку, библиотеки и т.д. система может сохранять в кэш памяти, что значительно сократит нагрузку на ресурсы и скорость работы сценария.
Это основные моменты которые смог сразу для себя определить.
Хочу сделать небольшие выводы и рассказать, как я вообще пришел к использованию С++ в интернет проектах.
Совсем недавно ко мне обратились с просьбой создания хорошего и интересного проекта, который сможет выдерживать значительные нагрузки и легко справляться с ними. За помощью я обратился к братьям по цеху, которые занимаются разработкой в одних из крупных проектов. После длительных диалогов, тестов и фактов, я на личном опыте убедился, что хороший проект не может быть написан с использованием одного языка. Приходится учитывать многие особенности каждого языка, его плюсы и минусы. Выбирать для каждого модуля (части целой программы) отдельную технологию, которая может максимально подходить для реализации задачи. Таким образом я пришел к изучению С++ . Раньше даже смотрел примеры с написанием визуальных-прикладных программ написанных на PHP, но всему свое место.
Выводы:
- Если у вас простой сайт и он не требует больших нагрузок, то можно обойтись только PHP - тем более, что он специально разрабатывался для этих целей.
- Но не нужно забывать про другие языки программирования, таких как С++, C, PERL, Python, .NET и другие. С++ можно активно применять в создании: голосований, учетов различной статистики, чатах и других частях программ, которые требует частых обращений и могут значительно нагружать систему.
P.S. C++ выбрал за популярность, широту применения.
P.P.S. Думаю я более менее смог хоть на малую долю объяснить, что в web программировании языки отличные от PHP - не настолько бесполезны по сравнению с PHP. Буду рад, если кто поможет дополнить рассказ со своей колокольни.
Если кто еще не знает, что такое С++ или CGI : CGI C++
После чего компилируем его Ctrl+F5 и получившийся exe файл переименовываем в cgi, например вышел у нас после компиляции web.exe - переименуем его в web.cgi и поместим в директорию на сервере от куда возможен запуск CGI скриптов - после чего запустим и увидим работу скрипта.
Цитата:
Получает переменную окружения по имени:
DWORD GetEnvironmentVariable
(
LPCTSTR lpName, // имя переменной
LPTSTR lpBuffer, // буфер для полученных результатов
DWORD nSize // размер буфера
);