Можно ли писать сайты на С или C#?

800
24 ноября 2017, 08:08

В интернете часто пишут, что делать сайты (серверное программирование) на языках типа С, С++, C#, Фортран, ТурбоПаскаль вроде как нереально, надо делать на языках программирования вроде PHP, Perl, Python, Ruby, Java.

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

Поэтому хотелось бы понять

  1. Можно ли делать сайты (далее везде речь пойдет о серверном программировании, не клиентском) на С, С++, C#, Фортран, ТурбоПаскаль или любых других языках? Или есть какие-то особенности, которые не позволяют этого делать или очень сильно усложняют разработку и какие это особенности?

  2. Правильно ли я понимаю, что для данных языков С, С++, C#, Фортран, ТурбоПаскаль на сервере должен стоять компилятор и есть ли он там? Или на сервер нужно загружать уже скомпилированную программу, если так он сможет ее исполнить или нет?

  3. В чем принципиальное преимущество PHP, Perl, Python, Ruby, Java касаемо серверного программирования против С, С++, C#, Фортран, ТурбоПаскаль и любых других языков? Оно вообще есть или в свое время сыграл свое дело хороший маркетинг?

Answer 1

делать сайты на языках типа C, C#, Фортран

На самом деле абсолютно все сайты "сделаны" на языке HTML. Другое дело, что все html-странички, из которых и состоят сайты, делятся на две категории:

  1. Статичные (неизменные) странички
  2. Динамические (постоянно изменяющиеся) странички.

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

Динамические странички генерируются "на лету", в тот момент, когда пользователь ввел URL этой странички. Примерами могут быть прайс-листы, новостные и погодные сайты, гостевые книги и т.д.

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

Можно выделить два класса этих средств, выполняющих генерацию контента:

  1. Специализированные языки программирования (Perl, PHP,Rust, Go...)
  2. Целые системы для генерации содержимого - CMS.

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

Answer 2

Но почему нереально

Реально. Хоть на ассемблере, хоть на фортране, хоть на bash. Вопрос в трудозатратах и уровнях абстракции.

чисто технически сгенерировать html-страницу на сервере можно на любом языке?

Да. Но попробуйте обработать что-то вроде multipart/form-data на C/ASM/etc (даже с привлечением сторонних библиотек), и представьте, что это самая примитивная задача в числе тех, которые приходится решать.

P.S. Именно поэтому глупо спрашивать "какой язык учить" - для разных задач подходят разные языки, и нормальный программист должен знать хотя бы пяток из них :)

Answer 3

А вы замените "невозможно" на "мне влом учить язык". Получите ответ. В принципе можно писать хоть на ассемблере.

У PHP, Java, Ruby низкий порог обучения, по сравнению с С,С#

Answer 4

Можно ли делать сайты (далее везде речь пойдет о серверном программировании, не клиентском) на С, С++, C#, Фортран, ТурбоПаскаль или любых других языках? Или есть какие-то особенности, которые не позволяют этого делать или очень сильно усложняют разработку и какие это особенности?

Можно. Но у всех перечисленных языков кроме C# из коробки ничего для веб-разработки не идёт. Вот статья на хабре, как на ассемблере писать: https://habrahabr.ru/post/318916/.

Правильно ли я понимаю, что для данных языков С, С++, C#, Фортран, ТурбоПаскаль на сервере должен стоять компилятор и есть ли он там? Или на сервер нужно загружать уже скомпилированную программу, если так он сможет ее исполнить или нет?

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

C# опять немного выделяется, поскольку в .net core что-то сделали не так, как было в классическом C#, где приложение компилировалось в код. Не знаю, что нужно для его исполнения на сервере, но при классическом C# компилятор тоже не нужен.

В чем принципиальное преимущество PHP, Perl, Python, Ruby, Java касаемо серверного программирования против С, С++, C#, Фортран, ТурбоПаскаль и любых других языков? Оно вообще есть или в свое время сыграл свое дело хороший маркетинг?

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

В C# есть устаревший asp.net и более новые asp.net mvc и webapi. Последние два также входят в кроссплатформенный .net core. Писать на них сайты весьма удобно.

Node.js предоставляет низкоуровневый доступ к запросу и ответу и на него давно написаны аналоги распространённых решений по сайтостроению. Наиболее популярен express.

На джаве когда-то было jsp, но оно устарело, что есть сейчас - не знаю.

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

Турбопаскаль - старьё с 16-битными программами. Во-первых, понятия не имею, на каких серверах это сможет запуститься, во-вторых, памяти мало - 65 КБ на всё и, вероятно, возможность нарыть до 2 гигов через дальние указатели (это вспоминая borland c++), но мегабайта стека, как в современных программах, точно никто не даст.

READ ALSO
Поэтапная форма отправки

Поэтапная форма отправки

Всем доброго времени суток! Пишу поэтапную форму отправки с логикой: 1 этап -> запись в куку -> второй этап -> запись в куку -> подтверждение -> отправка...

286
Ошибочное перенаправление после входа joomla

Ошибочное перенаправление после входа joomla

При неверной авторизации на сайте (joomla 25

313
Знак вопроса вместо русских букв (MySQL, PHP)

Знак вопроса вместо русских букв (MySQL, PHP)

Имеется локальный сервер на основе Endels, база данных MySQL phonebook и таблица tblMain в кодировке utf8_general_ciБраузер принудительно установлен на такую...

396
Привязка PHP скрипта к “машине”

Привязка PHP скрипта к “машине”

Здравствуйте, понимаю что вопрос звучит как извращение, но всё таки я должен его задатьМожно ли и как привязать скрипт к определенному компьютеру

265