Почему вы не используете C для своих веб-приложений? - PullRequest
94 голосов
/ 20 июня 2010

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

Однако нана форумах создатель G-WAN спросил, почему бы не использовать C для веб-приложений, и я не могу придумать ни одной причины, кроме как трудной (для меня, во всяком случае, я новичок, когда речь идет о C).Должно быть больше причин, по которым мы все используем PHP, Python, Ruby и т. Д., Кроме того, что их легко разрабатывать на этих языках.Я не вижу в этом веской причины.

Поэтому я говорю вам: почему вы не используете C для своих веб-приложений?

Ответы [ 24 ]

5 голосов
/ 31 октября 2010

Должно быть больше причин, по которым мы все используем PHP, Python, Ruby и т. Д., Кроме того, что их легко разрабатывать на этих языках

Это и есть единственная причина. Он имеет много преимуществ, главное из которых - время выхода на рынок. Если вы можете подключить свое веб-приложение к сети через месяц с использованием PHP вместо двух месяцев с использованием C, вы можете просто выиграть. Если вы можете добавить новую функцию через неделю, используя Ruby on Rails вместо двух недель, используя C, вы снова выиграете. Если вы можете исправить ошибку за день с использованием Python вместо двух дней с использованием C, вы выиграете еще раз. Если вы можете добавить функцию, потому что вы используете язык X, который ваши конкуренты не могут добавить вообще , потому что они используют язык Y, и это слишком сложно на этом языке, учитывая их ресурсные ограничения, тогда вы определенно выиграете.

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

Если производительность становится проблемой, вы можете переписать медленные части вашего сайта на более эффективные языки. Или вы можете просто добавить больше оборудования. Действительно, проблема производительности - это то, что мы называем «хорошей проблемой» - это значит, что вы уже добились успеха. Но тратить больше времени на разработку основной функциональности вашего сайта - редко вариант. Запись его на C просто так, чтобы он работал быстрее, является преждевременной оптимизацией, которая, как говорит нам Кнут, является корнем всего зла.

Все это подразумевает, что если вы можете использовать язык с более высоким уровнем абстракции, чем Python или Ruby, вы можете выиграть у людей, использующих Python или Ruby. Поучительная история Пола Грэма о том, как он и его команда использовали LISP в качестве «секретного оружия» при разработке веб-сайтов. http://www.paulgraham.com/avg.html

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

4 голосов
/ 20 июня 2010

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

4 голосов
/ 21 июня 2010

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

Какой веб-сайт написан только на одном языке?Серьезно, эта нить, кажется, предполагает, что один молоток подходит ко всем гвоздям.

Когда в последний раз кто-нибудь серьёзно заявлял, что C сложен?Я имею в виду на самом деле, ребята, вы не можете получить гораздо более низкий уровень.Я не говорю о C ++ здесь, так как на них часто ссылаются коллективно.

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

В любом случае от комментариев.Сложность использования любого языка зависит от рассматриваемой проблемы. C и особенно C ++ могут привести к быстрому решению проблемы в опытных руках.

Промышленное использование веб-серверов, то есть встроенных серверов / сайтов, просто не имеет выбора языка, который может иметь обычный веб-сервер.Таким образом, вы заканчиваете тем, что используете вариант C или что-то вроде BASIC.Ваша цель - предложить функциональность, необходимую для устройства, и не беспокоиться о языках.На основном веб-сервере это можно сделать с помощью языков высокого уровня.Уйдите от большого железа, и ваша свобода программирования выходит за дверь.

Без правильных библиотек было бы глупо в большинстве случаев заниматься созданием веб-проекта на языке C. Отсутствие хороших стандартизированных библиотек является здесь серьезным недостатком.

3 голосов
/ 20 июня 2010

Вот еще некоторый связанный с веб-кодом код, написанный на C, который стоит посмотреть при создании своей собственной библиотеки C для Интернета:

  • cgic: библиотека ANSI C для программирования CGI
  • cgit: веб-интерфейс для git-репозиториев
  • wbox: инструмент тестирования HTTP
  • wget html-parse.c
  • curl cookie.c
  • Discount, реализация Дэвидом Парсонсом C текста Markdown Джона Грубера на html языке
  • Protothreads (особенно для встроенных систем), http://www.sics.se/~adam/software.html
  • protothread, проект кода Google от LarryRuane
  • uriparser sourceforge project
  • http-парсер, http-парсер запросов / ответов для c от Райана Даля на github
  • nginx
  • ...
2 голосов
/ 31 августа 2018

Все языки, которые вы упомянули, на самом деле написаны на C / ++. Единственное отличие состоит в том, что расширенные классы и библиотеки, созданные из C, составляют то, что сейчас является этими другими языками интерпретатора. Это также, почему они упоминаются как языки сценариев.

Думайте об этом, как о выпечке торта (PHP / JS):

  • 2 яйца, 1 стакан молока, 2 стакана сливочного масла, 4 чашки муки, 1 стакан сахара, пищевая сода

Но представьте, что вам нужно создать все элементы, из которых состоят эти вещи. (С / ++)

  • 17 мг бикарбоната натрия, 15 столовых ложек белка, 12 столовых ложек витаминовой мембраны, аминокислоты, серы, ... нейтронных частиц

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

Узнайте, что вы можете буквально заставить его делать что угодно!

2 голосов
/ 08 мая 2012

Я бы использовал C для веб-приложения, если:

  1. У меня небольшой бюджет на хостинг-сервер (небольшой VPS), и мое время не дорого.
  2. Яработая на Facebook, Twitter или кого-то, кто нуждается в сокращении количества используемых серверов (с тысяч до миллионов пользователей).
  3. Я хочу изучать C и мне нужно найти приложение реального мира, где я могу его использовать..
  4. Я знаю C намного лучше, чем другие языки сценариев.
  5. Я эко-парень и хочу уменьшить выбросы углерода в своем приложении.

G-WAN запускает код в виде сценариев, да C-сценарии, такие как Play!Framework делает для Java.G-WAN очень быстрый и имеет простой API.G-WAN позволяет использовать C / C ++ для веб-приложений, когда другие серверы не смогли этого сделать.

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

2 голосов
/ 15 июля 2010

Ну, учитывая тот факт, что веб-разработка - это вопрос наличия полезных библиотек (типа, используемого PHP), тогда я не вижу, как C не будет полезен.

В конце концов, процедурная логикато же самое: делайте while, for, если еще, и т. д., будь то C, PHP, .Net или Perl.

И цикл или тест C не сложнее написать, потому что он написан на C.

Большинство библиотек PHP сделаны на C, поэтому аргумент отсутствует C-библиотеки для веб-сайта выглядит не очень убедительно.

Я предполагаю, что C не был объявлен какязык веб-программирования, разработанный промоутерами Java (SUN) и .Net (MICROSOFT), поскольку у них был свой собственный проприетарный (сильно запатентованный) интеллектуальный актив, который нужно было подтолкнуть к принятию.(не запатентованный) стандарт, C не предлагает никаких «замкнутых» возможностей для разработчиков ... следовательно, возможно, тяжелая рука лоббирования в школах и университетах, чтобы удостовериться, что деньги налогоплательщиков будут финансировать принятие низшей технологии BACked в личных интересах.

Если C достаточно хорош для IBM и MICROSOFT (они не разрабатывают свои продукты на PHP или .Net), но недостаточно для конечных пользователей, то конечные пользователи могут задаться вопросом, почемуим предлагается перенести этот двойной стандарт.

1 голос
/ 21 июня 2010

Обработка строк в C может быть упрощена с помощью:

Типы данных (часть libslack)

Libslack предоставляет универсальный тип данных массива указателей с возможностью наращивания, называемый List, универсальный растущийтип данных хеш-таблицы с именем Map и приличный тип данных String, который поставляется с кучей функций (многие из которых были взяты из Perl).Существуют также абстрактные однонаправленные и двусвязные типы данных списков с необязательными «растущими» фрилансами.

или:

Управляемая библиотека строк (для C)

http://www.cert.org/secure-coding/managedstring.html

1 голос
/ 15 июля 2010

"Domachine" писал (а):

зависимость от платформы: C необходимо скомпилировать в собственный код. Этот код работает не на всех платформах. Интерпретируемые языки (например, PHP) работают везде, где переводчик существует. Конечно, эту проблему можно решить, но вы видите, преимущество разработки на PHP в данном конкретном случае.

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

В ANSI C.

Итак, прежде чем снова отклонить переносимость ANSI C, спросите сами на каком языке ваш любимый язык программирования было написано ... (совет: почти все были написаны на C / C ++).

Компиляторы ANSI C доступны на всех платформах, которые мне приходилось работать на - и то же самое не относится к PHP и его гигантским во время выполнения.

Так много для аргумента переносимости .

0 голосов
/ 14 июня 2016

Вы должны любить то, что вы делаете, чтобы достичь результатов.Такие языки, как java и php, были созданы с огромным усилием, чтобы облегчить жизнь людям.Php особенно помог многим самопознанным веб-программистам сегодня.Вы можете увидеть, какую поддержку он оказывает в мире веб-разработки.

Java, я уверен, была написана, чтобы помочь вам во всем, что только возможно в современном мире.Огромная книга - четкое указание, и это чудовищно, если вы склонны и к веб-разработке.То же самое касается Python.Это фантастические языки и платформы.Неудивительно, что они очень популярны.

Я - преданный C, и отчасти это связано с определенными ограничениями, которые не позволяли мне взглянуть на другие языки, такие как php.Я пишу на С ежедневно, и каждый день я горжусь ею и узнаю что-то новое.Это заставляет меня чувствовать себя очень хорошо, и я также начал узнавать, как C был выбором по умолчанию при написании приложений для веб-сайтов через Cgi.Это абстрагируется на других платформах, и когда вы разрабатываете веб-сайты, связанные с базами данных и веб-сервисами, вам необходимо знать, что происходит за кулисами.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...