it-swarm.com.de

Warum verwenden Sie C nicht für Ihre Web-Apps?

Ich habe mir heute morgen ein paar verschiedene Webserver angesehen, als ich auf G-WAN gestoßen bin. Wie ich es verstehe, ist dies ein in C geschriebener Webserver, den Sie nutzen müssen, indem Sie Ihre Websites/Webapps in C schreiben. Ein eindeutiger Vorteil ist die Geschwindigkeit, wie die G-WAN-Site dies suggeriert.

In den Foren fragte der Entwickler von G-WAN, warum er C nicht für webbasierte Apps verwendet. Ich kann mir keinen einzigen Grund vorstellen, abgesehen davon, dass es schwierig ist (für mich sowieso bin ich Neuling, wenn es um C geht). Es muss mehr Gründe geben, warum wir alle PHP, Python, Ruby usw. verwenden, außer dass es einfach ist, diese Sprachen zu entwickeln. Ich sehe das nicht als guten Grund.

Also lege ich es Ihnen vor: Warum verwenden Sie C nicht für Ihre Web-Apps?

92
Abs

Es ist sehr sorgfältig darauf zu achten, dass ein C-Programm korrekt und sicher ist. Diese Sorge bedeutet, dass Sie wirklich gute Leute brauchen, die Ihre Programme schreiben. Das heißt, Sie zahlen mehr. 

Außerdem hat C nicht den Vorteil, aus einer riesigen Standard-Funktionsbibliothek zu bauen, wie es .NET (und die anderen web-zentrierten Plattformen) bietet. Möglicherweise müssen Sie entweder Komponenten kaufen oder Interop-Operationen ausführen oder Ihre eigene Funktionalität, die "kostenlos" verfügbar ist, mit einer weiteren Funktion ausrollen. Sagen wir "weborientierte" Sprache wie PHP oder C # oder Ruby oder was auch immer. Das heißt, Sie zahlen mehr.

Fügen Sie all das der Tatsache hinzu, dass die Rechentaktgeschwindigkeit mit einem einzigen Thread im Web nicht so wichtig ist. Wenn Sie eine größere Skalierbarkeit benötigen, können die meisten Unternehmen wirtschaftlich mehr Kerne auf das Problem werfen und sind in Ordnung. Dies gilt natürlich nicht für alle. Ich kann mir vorstellen, dass der Kern der Google-Engine in C oder einer ähnlichen Sprache geschrieben ist, nicht nur aus Geschwindigkeitsgründen, sondern auch um Stromkosten zu sparen.

75
Dave Markle

Summen...

Es scheint, dass ich mich in dieser Diskussion etwas verspätet habe - aber ich habe es gerade erst entdeckt. Und ich danke Ihnen allen für so viel Input.

Ich bin der Autor von G-WAN, was deutlich macht, dass ich ernsthaft an der Sache gearbeitet habe: G-WAN ist sowohl schneller als alle anderen Webserver (keine Verarbeitung) und alle anderen Webanwendungsserver (jede denkbare Verarbeitung).

Ja, mit ANSI C konnten auch statischere Inhalte verarbeitet werden - mit weniger leistungsstarken CPUs (in ANSI C geht es nicht nur darum, dynamische Inhalte zum Fliegen zu bringen).

Übrigens verwendet G-WAN C-Skripte (kein C-Compiler und kein C-Linker erforderlich), sodass der Kompilierungs-/Verknüpfungszyklus/die Verzögerung nicht vorhanden sind.

Beim Vergleich von G-WAN mit .NETJava und PHP habe ich similar Anwendungen in allen vier Sprachen geschrieben: http: // gwan.ch/source/

Und zu meiner Enttäuschung waren die modernen Skriptsprachen nicht einfacher zu benutzen.

Ein Teil des Jobs, der besonders frustrierend ist, besteht darin, verzweifelt nach dem 'magischen' API-Aufruf zu suchen, der das tut, was Sie tun möchten.

Überlegen Sie, wie Sie "Ziemlich Tausende" machen können in:

C #

String.Format("{0:n}"...

Java

new DecimalFormat("0.00"); ...

PHP

number_format($amount, 2); ...

ANSI C

sprintf("%'.2f", amount);

Das "..." bedeutet, dass eine Vorkonfiguration oder Nachbearbeitung erforderlich ist. ANSI C ist deutlich einfacher zu bedienen und zu merken.

Wenn PHP mehr als 5900 API-Aufrufe hat (C # und Java nicht weit entfernt), ist es eine Herausforderung, den API-Aufruf right zu finden seine eigene. Die Zeit, die verschwendet wird, um dies zu finden (und dann herauszufinden, wie schlecht der native API-Aufruf implementiert ist), die Zeit, um es zu lernen, wenn Sie es das nächste Mal brauchen, all dies Zeit spart Ihnen die Zeit, um Ihre Anwendungsprobleme zu lösen.

Ich habe (oben) gelesen, dass PHP prägnanter ist als ANSI C? Warum dann "//:: this is a comment ::" anstelle von "// this is a comment" verwenden? Warum eine so blöde, komplexe "Ziemlich-Tausend" -Syntax?

Das andere übliche Argument ist, dass Java und dergleichen dedizierte Aufrufe für Webanwendungen bereitstellen.

Ich konnte in Java nichts finden, um HTML zu entkommen, also schrieb ich meine Version davon:

  // all litteral strings provided by a client must be escaped this way
  // if you inject them into an HTML page
  public static String escape_html(String Name) {
      int len = Name.length();
      StringBuffer sb = new StringBuffer(len);
      boolean lastWasBlankChar = false;
      int c;

      for(int i=0; i<len; i++) {
          c = Name.charAt(i);
          if(c == ' ')  sb.append("&#32;");  else
          if(c == '"')  sb.append("&quot;"); else
          if(c == '&')  sb.append("&amp;");  else
          if(c == '<')  sb.append("&lt;");   else
          if(c == '>')  sb.append("&gt;");   else
          if(c == '\n') sb.append("&lt;br/&gt;"); else {
             c = c&0xffff; // unicode
             if(c < 32 || c > 127) {
                sb.append("&#");
                sb.append(new Integer(c).toString());
                sb.append(';');
             } else
                sb.append(c);
          }
      }
      return sb.toString();
      //szName = sb.toString();
  }

Glauben Sie wirklich, dass derselbe Code in ANSI C komplexer wäre? Nein, beides wäre immens einfacher und schneller.

Java (abgeleitet von C) ist erfordert Programmierer, um mehrzeilige Zeichenfolgen mit einem '+' zu verknüpfen.
C # (abgeleitet von C) ist erfordert , dass Programmierer mehrzeilige Zeichenfolgen mit einem '+' verknüpfen.
PHP (abgeleitet von C) ist erfordert Programmierer, um mehrzeilige Zeichenfolgen mit einem '.'

ANSI C hat diese jetzt nicht ganz blöde (obsolete) Anforderung.

War also der so offensichtliche Fortschritt von den modernen Sprachen behauptet? Ich suche es immer noch.

Mit freundlichen Grüßen,

Pierre.

46
Pierre

Aus dem gleichen Grund verwenden wir für die meisten Programmierungen kein C. Die Vorteile (meistens Leistung) überwiegen nicht die Kosten (Entwicklungszeit, fehlende automatische Speicherverwaltung, fehlender automatischer Schutz vor Pufferüberläufen, eine Kompilierungsphase zwischen den Bearbeitungsstufen und der Testphase usw.).

44
Quentin

Die meisten Netzwerkanwendungen, insbesondere Web-Server, sind weitaus "I/O-gebunden", dh sie können Daten weitaus schneller abpumpen, als das Netzwerk dies akzeptieren kann. Daher ist etwas, das sehr CPU-effizient ist, kein großer Gewinn, während etwas Skalierbares und Wartbares ist. Es gibt also keinen Grund, die Nachteile von C zu akzeptieren und die Vorteile einer verwalteten Umgebung wie Java, .NET, Python, Perl oder anderen Sprachen zu verlieren.

27
Paul Tomblin

C ist keine bequeme Sprache zum Manipulieren von Strings.

Vergleichen Sie C #:

string foo = "foo";
string bar = "bar";
string foobar = foo + bar;

Korrespondierendes C:

const char* foo = "foo";
const char* bar = "bar";
char* foobar = (char*)malloc(strlen(foo)+strlen(bar)+1);
strcpy(foobar, foo);
strcat(foobar, foo);
//todo: worry about when/where the foobar memory
//which was allocated by malloc will be freed
15
ChrisW

Wenn Schwierigkeit und Komplexität überhaupt kein Thema waren (ha!), Dann würde ich nicht bei C aufhören. Ich würde x86 Assembly schreiben. Es ist Jahre her, seit ich einen Webserver verwendet habe, der nicht x86 war, und er sieht jeden Tag weniger aus.

Die Verwendung von C (anstelle von Assembly oder etwas höherem Niveau) bedeutet, dass C der beste Punkt für die Effizienz von Programmierern und die Effizienz von Computern ist.

Für die Programme, die ich schreibe, ist dies nicht der Fall: C ist eine schlechte Übereinstimmung mit den Arten von Programmen, die ich schreiben möchte, und die Vorteile, die es gegenüber einem anständigen Makroassembler hat, sind nicht so signifikant. Das Programm, das ich gerade schreibe, ist in meiner HLL der Wahl nicht schwer, aber die Komplexität davon in Assembly oder C wäre so hoch, dass es niemals fertig werden würde. Ich gebe zu, dass ein ausreichend intelligenter Programmierer mit ausreichender Zeit in Assembly oder C schneller laufen kann, aber ich bin nicht dieser Programmierer.

9
Ken

Ich weiß, dass diese Frage bereits zu Tode beantwortet wurde, aber es gibt zwei Dinge, die bisher nicht erwähnt wurden, die außerordentlich wichtig für den Erfolg in jedem Programmierparadigma sind, und insbesondere in der Webentwicklung, wo Sie viele Leute finden, die nicht unbedingt Programmierer sind. mit dem Code arbeiten.

  1. Beteiligte, nützliche Community, auch bekannt als Personen, die mein Problem bereits gelöst haben. Es ist ziemlich einfach für Noobies für Google, warum sie in PHP "bereits verschickte Kopfzeilen" erhalten, während diese Informationen für ein Framework oder eine Sprache, die in der Szene neu ist oder nicht vorhanden ist, möglicherweise nicht verfügbar sind kritische Masse.
  2. Frameworks, damit die meisten Programmierer geschäftliche Probleme lösen und nicht Code gemeinsam hacken können.

Wenn ich eine kritische App hätte, die extreme Leistung erforderte, würde ich C verwenden, aber das Schreiben würde so viel länger dauern, dass ich niemals auf den Markt kommen würde. Bis es entweder # 1 oder # 2 gibt, kann ich es nicht verwenden.

6
Jordan
  • es ist unsicher
  • es ist schwer zu lesen
  • es ist schwer beizubehalten, die Entwicklungszeit liegt in der Größenordnung einer Größenordnung
  • die meisten Ihrer Web-Inhalte sind wahrscheinlich E/A-gebunden, sodass die Beschleunigung keine Rolle spielt, insbesondere wenn Sie eine schnelle Sprache wie Java oder C # verwenden

C ist für viele Zwecke eine relativ einfache Sprache: No-OOP, viel manuelle Ressourcenverwaltung.

C für das Web wird nur eingeschränkt verwendet, beispielsweise Klone . Es wird hauptsächlich für Anwendungsfälle mit geringen Ressourcenanforderungen verwendet.

Es gibt jedoch C++ Web-Frameworks wie CppCMS , die für die Entwicklung von Hochleistungs-Webanwendungen verwendet werden.

Mit C++ können Sie eine hohe Abstraktion und einen präzisen Zugriff auf das, was Sie gerade tun, genießen. Dies bietet eine viel bessere Option für die Bereitstellung und Entwicklung großer Anwendungen.

Sie verwenden sie jedoch für den Fall, dass Leistung und Ressourcennutzung viel kritischer sind. __ dann Markteinführungszeit und Entwicklungskosten, da die Webentwicklung im Allgemeinen schneller ist Auch im Allgemeinen gibt es weniger kompetente Programmierer für C++ als Java/P * -Sprachen für das gleiche Gehalt.

Es geht also um Prioritäten, es gibt auch weniger Werkzeuge für die C++ - Webentwicklung als für PHP/Python/Perl oder Java.

6
Artyom

Es muss mehr Gründe geben, warum wir alle PHP, Python, Ruby usw. verwenden, außer dass es einfach ist, diese Sprachen zu entwickeln

Dies ist der gesamte Grund und der einzige, der benötigt wird. Es hat viele Vorteile, von denen hauptsächlich Time to Market ist. Wenn Sie Ihre Web-App in einem Monat mit PHP anstelle von zwei Monaten mit C online verfügbar machen können, gewinnen Sie möglicherweise einfach. Wenn Sie mit Ruby on Rails in einer Woche eine neue Funktion hinzufügen können, anstatt mit C zwei Wochen, dann gewinnen Sie wieder. Wenn Sie einen Fehler an einem Tag mit Python anstelle von zwei Tagen mit C beheben können, gewinnen Sie erneut. Wenn Sie eine Funktion hinzufügen können, weil Sie die Sprache X verwenden, die Ihre Konkurrenten gar nicht hinzufügen können, weil sie die Sprache Y verwendet und diese Sprache aufgrund ihrer Ressourcenbeschränkungen zu hart ist, gewinnen Sie definitiv.

Und mit "gewinnen" meine ich wirklich Sie verlieren nicht. Ihre Konkurrenten verwenden höhere Sprachen und Frameworks, um ihre Websites zu entwickeln. Wenn Sie also C verwenden, konkurrieren Sie nicht mit anderen Personen, die C verwenden, und verlieren dabei gegen andere Personen, die C nicht verwenden. Sie müssen Werkzeuge mit ähnlichen Abstraktionsebenen verwenden.

Wenn Leistung zu einem Problem wird, können Sie die langsamen Teile Ihrer Website in leistungsfähigeren Sprachen umschreiben. Oder Sie können einfach mehr Hardware darauf werfen. Wirklich ist ein Leistungsproblem das, was wir als "schönes Problem zu haben" bezeichnen - es bedeutet, dass Sie bereits erfolgreich waren. Es ist jedoch selten eine Option, mehr Zeit für die Entwicklung der grundlegenden Funktionen Ihrer Website zu verwenden. Wenn Sie es in C schreiben, damit es schneller läuft, ist es eine vorzeitige Optimierung, die, wie Knuth sagt, die Wurzel allen Übels ist.

All dies impliziert, dass, wenn Sie eine Sprache mit einem höheren Abstraktionsgrad als Python oder Ruby verwenden können, Sie gegen Leute mit Python oder Ruby gewinnen könnten. Die Geschichte von Paul Graham, wie er und sein Team LISP als "Geheimwaffe" bei der Entwicklung von Websites eingesetzt haben, kann aufschlussreich sein. http://www.paulgraham.com/avg.html

Wenn Sie eine Website zu Ihrer eigenen Unterhaltung entwickeln, tun Sie dies natürlich in der gewünschten Sprache. Wenn Ihre Site an eine CPU gebunden ist (kaum eine; normalerweise sind sie E/A-gebunden), verwenden Sie die Sprache, die am schnellsten funktioniert. Wenn Sie versuchen, Innovationen zu entwickeln, verwenden Sie eine Hochsprache mit den besten Abstraktionen, die Sie finden können.

5
kindall

Sie denken, dass es kein guter Grund ist, einfach zu sein. Ich denke es ist ein guter Grund. Wenn Sie ultimative Leistung benötigen, ist C in Ordnung, aber andere Sprachen entziehen dem Harten etwas, um Produktivität, Wartbarkeit und Fehler zu verbessern.

4
Craig

Bedenken Sie, dass ich kein Webentwickler bin, aber diese Fragen trotzdem stellen werde und ein oder zwei Punkte anbieten. 

Welche Website ist nur in einer Sprache verfasst? Im Ernst scheint dieser Thread davon auszugehen, dass ein Hammer für alle Nägel passt. 

Wann hat das letzte Mal jemand seriös gesagt, dass C komplex ist? Ich meine, wirklich Jungs, man kann nicht viel niedrigeres Niveau erreichen. Ich spreche hier nicht von C++, da die beiden häufig kollektiv referenziert werden. 

C hat Sicherheitsbedenken, die nicht geleugnet werden können, aber sind sie weniger als das, was man in den Kludges PHP & Perl sieht? In jedem Fall ist eine sichere Website eine Funktion der Programmiererdisziplin. 

Auf jeden Fall zu den Kommentaren. Die Schwierigkeit, eine bestimmte Sprache zu verwenden, hängt stark von dem jeweiligen Problem ab. C & C++ kann zu schnellen Lösungen für ein Problem in erfahrenen Händen führen. 

Industrielle Anwendungen für Webserver, dh eingebettete Server/Sites haben einfach nicht die Sprachauswahl, die ein normaler Webserver haben kann. Am Ende verwenden Sie eine Variante von C oder möglicherweise etwas wie BASIC. Ihr Ziel ist es, die Funktionalität bereitzustellen, die das Gerät benötigt, und sich nicht um Sprachen zu kümmern. Auf einem Mainstream-Webserver führt dies meistens in Hochsprachen durch. Gehen Sie weg vom großen Eisen und Ihre Programmierfreiheit geht aus der Tür. 

Ohne die richtigen Bibliotheken wäre es in den meisten Fällen töricht, ein grundlegendes Webprojekt in C durchzuführen. Das Fehlen guter standardisierter Bibliotheken ist hier ein großer Nachteil. 

4
David Frantz

@Joeri Sebrechts

F.U.D. in Aktion:

PHP, Python usw. lassen sich leicht skalieren, indem Hardware auf das Problem gerichtet wird.

Tatsächlich nein. Sie skalieren nicht vertikal und horizontal nur sehr schlecht. __ Siehe: http://gwan.ch/de_scalability.html wo erklärt wird, wie viel Ärger vor

Angenommen, es kostet 1 Person 1 Jahr, um eine App in PHP zu entwickeln, und es kostet Sie 3 Jahre, um es in C zu tun (da C mehr Aufwand erfordert, um das gleiche zu tun). 

Wieder falsch. Wenn PHP -Bibliotheken in C geschrieben wurden, sind sie direkt verwendbar Von C ausgehend - bietet sie die "einzigartige Produktivität", die Sie für PHP beanspruchen.

Das bedeutet, dass der reduzierte Hardwarebedarf des C-Codes 2 Jahre betragen muss Lohn für C attraktiv zu werden. In der Praxis passiert das (fast) nie.

Pure F.U.D. (siehe die Antwort oben).

Der Umfang von Facebook ist so groß, dass die Kosten für die Hardware durch Hardware groß genug sind. Deshalb haben sie HipHop entwickelt, das PHP nach C++ kreuzkompiliert. Es bringt das Beste aus beiden Welten: die Einfachheit der Programmierung in PHP, und die reine Leistung von C++. Facebook ist immer noch in PHP entwickelt, aber Wenn Sie es verwenden, ist alles nativer Code.

HipHop ist viel schneller als PHP, daran gibt es keinen Zweifel. Wenn Sie jedoch vergleichenHipHop mit einer plain-C-Implementierung, haben Sie zwei Overhead-Ebenen:

  • die Schnittstellen von PHP zu C++ (die die aufgeblähten C++ - Bibliotheken verwenden);
  • das C++ - Aufblähen selbst (was C++ 2-10 mal langsamer macht als einfaches C).

Außerdem wurde HipHop im ahnungslosen, ineffizienten akademischen Modus (__) (losgelöst von jeder realen Realität) geschrieben. Sicher, es kann PHP -Codierer beeindrucken, aber diesen Code einem eingebetteten Programmierer zeigen und er wird Facebook bedauern.

"Eine Sprache, die nicht alles hat, ist in der Tat einfacher zu programmierenIn als einige andere" --Dennis M. Ritchie

Anders als die (meisten) Programmiersprachen END-USERS kannte Dennis ein paar Dinge über die Angelegenheit, wie es scheint.

4
Pierre

In C geschriebener weiterer webbezogener Code, der einen Blick wert ist, wenn Sie Ihre eigene C-Bibliothek für das Web erstellen:

  • cgic: eine ANSI-C-Bibliothek für die CGI-Programmierung
  • cgit: ein Web-Frontend für Git-Repositories
  • wbox: HTTP-Testwerkzeug
  • wget html-parse.c
  • curl cookie.c
  • Discount, David Parsons C Implementierung von John Gruber Markdown-Text in HTML-Sprache
  • Protothreads (besonders für eingebettete Systeme), http://www.sics.se/~adam/software.html
  • protothread, Google-Code-Projekt von LarryRuane
  • uriparser sourceforge projekt
  • http-parser, http-Anfrage/Antwort-Parser für c von Ryan Dahl auf github
  • nginx
  • ...
3
ceeit

Ich würde C für eine Web-App verwenden, wenn:

  1. Ich habe ein kleines Budget für den Hosting-Server (kleiner VPS) und meine Zeit ist nicht teuer.
  2. Ich arbeite für Facebook, Twitter oder jemanden, der die Anzahl der verwendeten Server reduzieren muss (mit Tausenden bis zu Millionen Benutzern).
  3. Ich möchte C lernen und muss eine reale Welt-App finden, in der ich sie verwenden kann.
  4. Ich kenne C viel besser als andere Skriptsprachen.
  5. Ich bin ein Öko-Typ und möchte den CO2-Fußabdruck meiner App reduzieren.

G-WAN führt Code als Skript aus, ja C-Skripte wie Play! Framework tut für Java. G-WAN ist sehr schnell und hat eine einfache API. G-WAN ermöglicht die Verwendung von C/C++ für Web-Apps, wenn dies anderen Servern nicht gelungen ist.

Eines ist klar: Sie brauchen einen guten Programmierer, um eine Website in C zu schreiben. Jeder beschissene Entwickler kann eine Website mit Spaghetti erstellen PHP :-) Es gibt Leckanzeiger und sogar Müllsammler für C.

2
rtacconi

Nun, angesichts der Tatsache, dass es sich bei der Webentwicklung um nützliche Bibliotheken (die von PHP verwendete) handelt, sehe ich nicht, dass C nicht nützlich wäre.

Immerhin ist die prozedurale Logik die gleiche: tun, während, wenn, dann sonst, ob C, PHP, .Net oder Perl.

Eine C-Schleife oder ein C-Test ist nicht schwieriger zu schreiben, da sie in C geschrieben ist.

Die meisten PHP -Bibliotheken werden in C erstellt, sodass das Argument missing-C-Libraries-for-the-Web nicht sehr überzeugend aussieht.

Meine Vermutung ist, dass C von den Veranstaltern von Java (Sun) und .Net (Microsoft) nicht als Web-Programmiersprache beworben wurde, da sie ihre eigenen proprietären (stark patentierten) intellektuellen Vorzüge zur Push-Annahme hatten.

Als freier (nicht patentierter) Standard bietet C keinen "Lock-in" -Griff für Entwickler ... daher ist es vielleicht die schwere Hand des Lobbying in Schulen und Universitäten, um sicherzustellen, dass das Steuerzahlergeld die Einführung eines Systems finanziert minderwertige Technologie mit privaten Interessen.

Wenn C für IBM und Microsoft gut genug ist (sie entwickeln ihre Produkte nicht in PHP oder .Net), aber für Endbenutzer nicht gut genug, werden sich die Endbenutzer fragen, warum sie dazu eingeladen werden, dieses Doppelte zu erleiden -Standard.

2
Vince

Alle Sprachen, die Sie erwähnt haben, sind tatsächlich in C/++ geschrieben. Der einzige Unterschied besteht in den fortgeschrittenen Klassen und Bibliotheken, die aus C erstellt wurden und die nun diese anderen Interpretersprachen bilden. Deshalb werden sie auch als Skriptsprachen bezeichnet. 

Stellen Sie sich vor, Sie backen einen Kuchen (PHP/JS):

  • 2 Eier, 1 Tasse Milch, 2 Stück Butter, 4 Tassen Mehl, 1 Tasse Zucker, Backpulver

Aber stellen Sie sich vor, Sie müssen alle Elemente erstellen, aus denen sich diese Dinge zusammensetzen. (C/++)

  • 17 mg Natriumbicarbonat, 15 EL Protein, 12 EL Vitellin-Membran, Aminosäure, Schwefel, ... Neutronenpartikel

C ist die Grundlage vieler moderner Sprachen. Es ist großartig und fast die mächtigsten Sprachen der Versammlung. Sie können es tun, Sie müssen nur in den Code investieren, den diese anderen Sprachen bereits gemacht haben. Wie ein Kuchen aus dem Periodensystem bauen.

Lerne es, du kannst es buchstäblich dazu bringen, alles zu tun!

1
GetBackerZ

Die String-Verarbeitung in C kann vereinfacht werden mit:

Datentypen (Teil von libslack)

Libslack bietet einen generischen, anwählbaren Zeigerarray-Datentyp mit dem Namen List, einen generischen generierbaren Hash-Tabellendatentyp mit der Bezeichnung Map und einen anständigen String-Datentyp, der eine Vielzahl von Funktionen enthält (viele von Perl entfernt). Es gibt auch abstrakte, einzeln und doppelt verknüpfte Listendatentypen mit optionalen, "anwählbaren" Freelisten.

oder:

Verwaltete String-Bibliothek (für C)

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

1
ceeit

"domachine" wrote:

plattformabhängigkeit: C muss in nativen Code kompiliert werden. Dieser Code läuft nicht auf allen Plattformen. Interpretierte Sprachen (wie PHP) werden ausgeführt, wo immer ein Interpreter vorhanden ist. Natürlich könnte dieses Problem gelöst werden, aber Sie sehen den Vorteil, in diesem speziellen Fall in PHP zu entwickeln.

Haben Sie sich jemals gefragt, in welcher Sprache der portable PHP -Interpreter geschrieben ist?

In ANSI C.

Bevor Sie die Portabilität von ANSI C wieder verwerfen, fragen Sie sich, in welcher Sprache Ihre Lieblingsprogrammiersprache geschrieben wurde ... (Tipp: Fast alle wurden in C/C++ geschrieben).

ANSI C-Compiler sind auf allen Plattformen verfügbar, auf denen ich arbeiten musste - und dasselbe gilt nicht für PHP und seine gigantische Laufzeit.

Soviel zum Argument Portabilität.

1
CClue

Am Ende können Sie absolut jede Sprache verwenden, um Sites zu entwickeln, einschließlich Assembler (über CGI usw.). Wenn Sie gemeint haben, warum verwenden wir keine kompilierte Sprache? Nun, wir haben bereits .NET, Java und andere.

0
Andrei Rînea

Sie müssen lieben, was Sie tun, um Ergebnisse zu erzielen. Sprachen wie Java und PHP wurden mit viel Aufwand erstellt, um das Leben der Menschen zu erleichtern. Php hat heute vor allem vielen selbst erlernten Web-Programmierern zugute gekommen. Sie sehen, welche Art von Unterstützung es in der Welt der Webentwicklung gibt.

Java wurde sicher geschrieben, um Ihnen bei allem zu helfen, was in der heutigen Welt möglich ist. Das enorme Buch ist ein klares Indiz, und es ist ein Biest, wenn Sie sich auch für die Webentwicklung interessieren. Gleiches gilt für Python. Das sind so fantastische Sprachen und Plattformen. Kein Wunder, dass sie sehr beliebt sind.

Ich bin ein C-Fanatiker und teilweise aufgrund bestimmter Einschränkungen, die es mir unmöglich machten, andere Sprachen wie PHP zu betrachten. Ich schreibe täglich in C und bin jeden Tag stolz darauf, etwas Neues zu lernen. Dadurch fühle ich mich sehr gut und ich habe auch gelernt, wie C die Standardwahl war, wenn man mit Cgi Anwendungen für Websites schrieb. Dies wird auf anderen Plattformen abstrahiert. Wenn Sie Websites entwickeln, die sich auf Datenbanken und Webservices beziehen, müssen Sie wissen, was hinter den Kulissen passiert.

Wenn Sie jedoch all dies wissen und trotzdem eine Skriptsprache verwenden möchten, muss dies einen triftigen Grund haben, und wir brauchen niemanden, der davon abrät.

0

Ein weiterer Punkt könnte die Plattformabhängigkeit sein. C muss in nativen Code kompiliert werden. Dieser Code kann nicht auf allen Plattformen ausgeführt werden.

Interpretierte Sprachen werden überall dort ausgeführt, wo ein Interpreter vorhanden ist. Viele Anbieter bieten beispielsweise PHP-Interpreters an, die auf ihren Servern installiert sind, jedoch mit einem Windows-Betriebssystem. Wenn Sie jetzt auf einem Linux-Rechner entwickeln. Du hast ein Problem.

Natürlich könnte dieses Problem gelöst werden, aber Sie sehen den Vorteil der Entwicklung in PHP in diesem speziellen Fall.

Hoffe das hilft, Grüße domachine 

0
domachine

Ähnlich wie G-WAN, aber für Cocoa/Objective-C ist Bombax ein Webanwendungs-Framework.

http://www.bombaxtic.com

Apropos Objective-C Ich kann nicht umhin, MacRuby hervorzuheben, der das Potenzial hat, die Art und Weise zu revolutionieren, wie wir eines Tages Web-Apps erstellen werden.

0
gregg

PHP, Python usw. lassen sich leicht skalieren, indem Hardware auf das Problem gerichtet wird.

Angenommen, es kostet 1 Person 1 Jahr, um eine App in PHP zu entwickeln, und es kostet sie 3 Jahre, um dies in C durchzuführen (da C mehr Aufwand erfordert, um dasselbe zu tun). Das bedeutet, dass der reduzierte Hardwarebedarf des C-Codes einen Lohn von zwei Jahren darstellen muss, damit C attraktiv wird. In der Praxis passiert das (fast) nie.

Wie bei jeder Regel gibt es eine Ausnahme. Der Umfang von Facebook ist so groß, dass die Kosten für die Hardware durch Hardware groß genug sind. Deshalb haben sie HipHop entwickelt, das PHP nach C++ kreuzkompiliert. Es bringt das Beste aus beiden Welten: die Einfachheit der Programmierung in PHP und die reine Leistung von C++. Facebook ist immer noch in PHP entwickelt, aber wenn Sie es verwenden, ist es alles nativer Code.

0
Joeri Sebrechts