ทำไมคุณไม่ใช้ C สำหรับเว็บแอปของคุณ


101

ผมก็มีลักษณะที่ไม่กี่เว็บเซิร์ฟเวอร์ที่แตกต่างกันเมื่อเช้านี้ผมมาในG-WAN ตามที่ฉันเข้าใจมันเป็นเว็บเซิร์ฟเวอร์ที่เขียนด้วย C และคุณต้องใช้ประโยชน์จากมันโดยการเขียนเว็บไซต์ / เว็บแอพของคุณใน C ประโยชน์ที่ชัดเจนอย่างหนึ่งคือความเร็วตามที่ไซต์ G-WAN แนะนำ

อย่างไรก็ตามในฟอรัมผู้สร้าง G-WAN ถามว่าทำไมไม่ใช้ C สำหรับแอปบนเว็บและฉันไม่สามารถคิดเหตุผลเดียวได้นอกจากมันยาก (สำหรับฉันแล้วฉันเป็นมือใหม่เมื่อพูดถึง C) ต้องมีเหตุผลมากกว่านี้ว่าทำไมเราถึงใช้ PHP, Python, Ruby และอื่น ๆ นอกเหนือจากความง่ายในการพัฒนาในภาษาเหล่านี้ ฉันไม่เห็นว่าเป็นเหตุผลที่ดี

ฉันจึงนำมาให้คุณ: ทำไมคุณไม่ใช้ C สำหรับเว็บแอปของคุณ?


34
ทำไมเราใช้เตาและไม่ปรุงอาหารด้วยไฟโดยตรง? ทำไมเราถึงใช้รถยนต์ทั้งๆที่การเดินหรือใช้จักรยานนั้นมีประโยชน์ต่อสุขภาพมากกว่ากัน? ทำไม ... ฉันไปต่อได้ ...
Felix Kling

16
@ เฟลิกซ์ - อย่างที่บอกตั้งชื่อเหตุผลอื่นนอกจากมันยาก ซึ่งหมายความว่าฉันตระหนักดีว่าภาษาอื่น ๆ มีปัญหาในเชิงนามธรรม
Abs

15
ไม่เคยพิจารณา C diffiult จริงๆ
3Dave

10
@David Lively หากคุณล้มเหลวในการใส่ 'c' ในจุดประสงค์ที่ยากมันค่อนข้างตลกจริงๆ ทำได้ดีมาก :)
punkrockbuddyholly

11
@MrMisterMan ใช้เวลาเพียงสี่เดือนเพื่อมองเห็นสิ่งนั้น =)
3Dave

คำตอบ:


79

ต้องใช้ความระมัดระวังเป็นอย่างมากในการทำให้โปรแกรม C ถูกต้องและปลอดภัย การดูแลนั้นหมายความว่าคุณต้องมีคนเขียนโปรแกรมที่ดีจริงๆ นั่นหมายความว่าคุณจ่ายมากขึ้น

นอกจากนี้ C ยังไม่ได้รับประโยชน์จากการวาดจากไลบรารีฟังก์ชันมาตรฐานเดียวขนาดใหญ่เช่นเดียวกับ. NET (และแพลตฟอร์มอื่น ๆ ที่เน้นเว็บเป็นศูนย์กลาง) ดังนั้นคุณอาจต้องซื้อส่วนประกอบหรือดำเนินการทำงานร่วมกันหรือหมุนฟังก์ชันการทำงานของคุณเองซึ่งมา "ฟรี" เพิ่มเติมเราจะพูดภาษา "เว็บเป็นศูนย์กลาง" เช่น PHP หรือ C # หรือ Ruby หรืออะไรก็ตาม นั่นหมายความว่าคุณจ่ายมากขึ้น

เพิ่มทั้งหมดนี้ให้กับข้อเท็จจริงที่ว่าความเร็วในการคำนวณแบบเธรดเดียวนั้นไม่สำคัญบนเว็บ หากคุณต้องการความสามารถในการปรับขยายได้มากขึ้นองค์กรส่วนใหญ่สามารถประหยัดได้เพียงแค่โยนคอร์ให้กับปัญหามากขึ้นและก็สบายดี นี่ไม่ใช่เรื่องจริงสำหรับทุกคนแน่นอน ฉันคิดว่าแกนหลักของเครื่องมือของ Google เขียนด้วยภาษา C หรือภาษาที่คล้ายกันไม่เพียง แต่เพื่อความเร็วเท่านั้น แต่ยังช่วยประหยัดค่าไฟได้จริง


48
ว้าวอาร์กิวเมนต์สำหรับ. NET เทียบกับ C เนื่องจากไลบรารี ? แน่นอนว่า stdlib มีขนาดเล็กกว่า แต่เรามีไลบรารีหลายสิบปี (โอเพ่นซอร์สจำนวนมาก) ใน C ฉันมีปัญหาในการคิดอะไรใน. NET stdlib ที่ไม่มีไลบรารี C สำหรับผู้ใหญ่และฟรี
Ken

3
ฉันไม่คิดว่าเขากำลังเถียงเรื่อง. NET โดยเฉพาะฉันคิดว่าเขาแค่หมายความว่ามีภาษาอื่น ๆ ที่มีไลบรารีที่สอดคล้องกันมากมาย ฉันแน่ใจว่า C มีโหลด แต่พูดตามตรงฉันไม่ได้เจอ repo ประเภทใดที่รวบรวมทั้งหมดไว้ในที่เดียวหรือบรรจุหีบห่อ
Abs

16
การจัดการ @Ken String เป็นงานเว็บแอปทั่วไป ไลบรารี C มีอยู่สำหรับสิ่งนั้น แต่ไม่มากหรือใช้งานได้เกือบเท่าไลบรารีใน [เลือกภาษาระดับสูง]
Andres Jaan Tack

23
@Ken: มีจักรวาลแห่งความแตกต่างเมื่อคุณมีชุดฟังก์ชันการทำงานที่ได้รับการสนับสนุนอย่างดีเพียงชุดเดียวเทียบกับไลบรารีขนาดเล็กที่มีอยู่มากมายซึ่งแตกต่างกันอย่างมากในชุดคุณลักษณะการออกใบอนุญาตและการสนับสนุน
Dave Markle

49

ฮึบ ...

ดูเหมือนว่าฉันจะคุยช้าไปหน่อย แต่ตอนนี้ฉันเพิ่งค้นพบ และฉันรู้สึกขอบคุณทุกท่านสำหรับข้อมูลมากมาย

ฉันเป็นผู้เขียนของ G-WAN ซึ่งทำให้ชัดเจนว่าฉันได้ดำเนินการอย่างจริงจังในเรื่องนี้: G-WAN ทั้งเร็วกว่าเว็บเซิร์ฟเวอร์อื่น ๆ ทั้งหมด (ไม่มีการประมวลผล) และเซิร์ฟเวอร์ Web Application อื่น ๆ ทั้งหมด (การประมวลผลใด ๆ ที่คุณสามารถจินตนาการได้)

ใช่ ANSI C ยังช่วยให้สามารถประมวลผลเนื้อหาแบบคงที่ได้มากขึ้นด้วยซีพียูที่มีประสิทธิภาพน้อยกว่า (ANSI C ไม่ได้เป็นเพียงแค่การทำให้เนื้อหาไดนามิกบินเท่านั้น)

อย่างไรก็ตาม G-WAN ใช้สคริปต์ C (ไม่จำเป็นต้องใช้คอมไพเลอร์ C และตัวเชื่อมโยง) ดังนั้นจึงไม่มีวงจรการคอมไพล์ / ลิงก์ / หน่วงเวลา

ในกระบวนการเปรียบเทียบ G-WAN กับ. NET Java และ PHP ฉันเขียนแอปพลิเคชันที่คล้ายกันในทั้ง 4 ภาษา: http://gwan.ch/source/

และที่ทำให้ฉันตกใจคือภาษาสคริปต์สมัยใหม่คือ ไม่ได้ใช้ง่ายกว่านี้

ส่วนหนึ่งของงานที่น่าหงุดหงิดเป็นพิเศษคือ ค้นหาการเรียก API 'เวทย์มนตร์' ที่จะทำในสิ่งที่คุณต้องการทำ

ลองคิดดูว่าจะทำอย่างไรให้ 'สวยหลายพัน' ใน:

ค#

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

Java

new DecimalFormat("0.00"); ...

PHP

number_format($amount, 2); ...

ANSI C.

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

"... " หมายความว่าจำเป็นต้องมีการกำหนดค่าล่วงหน้าหรือการประมวลผลภายหลัง ANSI C ใช้งานง่ายกว่าและจำง่ายกว่าอย่างชัดเจน

เมื่อ PHP มีการเรียก API มากกว่า 5900 รายการ (C # และ Java อยู่ไม่ไกล) การค้นหาการเรียก API ที่เหมาะสมถือเป็นความท้าทายในตัวมันเอง เวลาที่เสียไปเพื่อค้นหาสิ่งนี้ (แล้วจะพบว่าคนพื้นเมืองแย่แค่ไหนเรียก APIถูกนำไปใช้งานไม่ดีเพียงใด) เวลาในการเรียนรู้โดยใช้มันในครั้งต่อไปที่คุณต้องการเวลาทั้งหมดนี้ทำให้คุณหมดเวลาที่จำเป็นในการแก้ไขแอปพลิเคชันของคุณ ปัญหา.

ฉันได้อ่าน (ด้านบน) ว่า PHP นั้นรัดกุมกว่า ANSI C หรือไม่? ทำไมจึงใช้"//:: this is a comment ::"มากกว่า"// this is a comment" ? เหตุใดจึงมีไวยากรณ์ที่ 'ค่อนข้างซับซ้อน' ที่ซับซ้อนมาก?

อาร์กิวเมนต์ปกติอื่น ๆ คือ Java และสิ่งที่คล้ายกันให้การเรียกใช้เฉพาะสำหรับเว็บแอปพลิเคชัน

ฉันไม่พบสิ่งที่จะหลบหนี HTML ใน Java ดังนั้นฉันจึงเขียนเวอร์ชันของฉัน:

  // 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();
  }

คุณเชื่อหรือไม่ว่ารหัสเดียวกันใน ANSI C จะซับซ้อนกว่านี้ ไม่มันจะง่ายกว่ามากและเร็วกว่ามาก

Java (มาจาก C) ถูกกำหนดให้เขียนโปรแกรมเพื่อการเชื่อมโยงสายหลายสายกับ '+'
C # (มาจาก C) ถูกกำหนดให้เขียนโปรแกรมเพื่อการเชื่อมโยงสายหลายสายกับ '+'
PHP (มาจาก C) ถูกกำหนดให้โปรแกรมเมอร์ เชื่อมโยงสตริงหลายบรรทัดด้วย "."

ANSI C ไม่มีข้อกำหนดโง่ (ล้าสมัย) อย่างสมบูรณ์ในขณะนี้

ดังนั้นความก้าวหน้าที่ชัดเจนในการอ้างสิทธิ์โดยภาษาสมัยใหม่คืออะไร? ฉันยังคงมองหามัน

ขอแสดงความนับถือ

ปิแอร์.


10
ฉันไม่ค่อยเข้าใจความคิดเห็นของคุณเกี่ยวกับการประมวลผลพิเศษหลายพันคน สำหรับ C # ที่คุณทิ้งไว้, amount)PHP ก็ใช้ได้ตามที่เป็นอยู่และตัวอย่าง ANSI C ของคุณต้องการอาร์กิวเมนต์อีกสองข้อ (ความยาวบัฟเฟอร์และบัฟเฟอร์) ด้วยข้อยกเว้นที่โดดเด่นของ Java ตัวอย่างของคุณดูเหมือนจะพิสูจน์จุดตรงข้าม นอกจากนี้ฉันไม่เคยเห็น//:: comment ::ไวยากรณ์นั้นมาก่อน PHP ไม่ต้องการอย่างแน่นอน
icktoofay

1
พูดตามตรงกับคุณตัวเลือกอื่น ๆ ทั้งหมดดูดีกว่า ANSI C มากซึ่ง "ใช้ง่ายกว่าและจำง่ายกว่า" [sic]
Jarrod Mosen

G-WAN เปรียบเทียบกับ NGINX ได้อย่างไรถ้าทั้งคู่เขียนด้วย C?
m4l490n

47

เหตุผลเดียวกับที่เราไม่ใช้ C ในการเขียนโปรแกรมส่วนใหญ่ ประโยชน์ (ซึ่งส่วนใหญ่เป็นประสิทธิภาพ) ไม่เกินดุลต้นทุน (เวลาในการพัฒนา, ขาดการจัดการหน่วยความจำอัตโนมัติ, ขาดการป้องกันอัตโนมัติจากบัฟเฟอร์ล้น, มีขั้นตอนการคอมไพล์ระหว่างขั้นตอนการแก้ไขและการทดสอบ ฯลฯ )


10
กำลังพิมพ์สิ่งเดียวกันและคุณเอาชนะฉันไป ฉันแค่อยากจะเพิ่มว่าการปกป้องเว็บไซต์จากพฤติกรรมที่เป็นอันตรายก็เพียงพอแล้วสำหรับความท้าทายเช่นเดิมเราไม่จำเป็นต้องเพิ่มเวกเตอร์การโจมตีที่อาจเกิดขึ้นจากการใช้การจัดการหน่วยความจำคำชี้ ฯลฯ ในทางที่ผิด
Rob Allen

@ Jordan: ฉันรู้สึกว่าคุณยังไม่ได้เขียนโปรแกรมเว็บใด ๆ ใน C. สิ่งที่คุณพูดไม่ตรงกับรูปแบบของการเขียนโปรแกรมบนเว็บ

2
แน่นอนว่าเป็นเช่นนั้นสมมติว่าเว็บไซต์ของคุณมีสถานที่สำหรับการโต้ตอบของผู้ใช้ไม่ว่าจะด้วย URL หรือการป้อนแบบฟอร์ม เมื่อข้อมูลถูกส่งไปยังเซิร์ฟเวอร์แล้วก็ขึ้นอยู่กับโปรแกรมเมอร์ว่าจะจัดสรรหน่วยความจำได้อย่างถูกต้อง G-WAN มีนามธรรมรอบ ๆ พารามิเตอร์การสืบค้น แต่นั่นจะไม่ช่วยคุณได้อย่างสมบูรณ์ ฉันไม่ได้บอกว่าทำอย่างถูกต้องการเขียนโปรแกรมเว็บ C ไม่สามารถปลอดภัยและรวดเร็วได้ แต่จะเสี่ยงต่อข้อผิดพลาดที่รุนแรงกว่า
จอร์แดน

3
ถอนหายใจ @Kinopiko: ถ้าคุณไม่รู้ว่าบัฟเฟอร์ล้นคืออะไรคุณไม่ควรเขียนโค้ดใน C. 'nuff กล่าว สำหรับข้อมูลเพิ่มเติม: securecoding.cert.org/confluence/display/seccode/…
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

29

แอปพลิเคชันเครือข่ายส่วนใหญ่โดยเฉพาะเว็บเซิร์ฟเวอร์มี "I / O bound" มากกว่ากล่าวคือสามารถสูบข้อมูลออกได้เร็วเกินกว่าที่เครือข่ายจะรับได้ ดังนั้นสิ่งที่ CPU มีประสิทธิภาพสูงจึงไม่ใช่ชัยชนะที่ยิ่งใหญ่ในขณะที่สิ่งที่ปรับขนาดได้และบำรุงรักษาได้คือ ดังนั้นจึงไม่มีเหตุผลที่จะยอมรับข้อบกพร่องของ C และสูญเสียข้อได้เปรียบของสภาพแวดล้อมที่มีการจัดการเช่น Java, .NET, Python, Perl หรือภาษาอื่น ๆ


1
C นั้นเร็วกว่าตันมาก

14
ถ้าฉันสามารถเติมท่อเครือข่ายด้วย Java หรือ Perl (และฉันทำได้) ความจริงที่ว่า C เร็วกว่านั้นไม่เกี่ยวข้อง
Paul Tomblin

1
@Kinopiko คุณกำลังบอกว่าคุณมีไพพ์ที่ใหญ่ขึ้นมีการเข้าชมหน้าเว็บมากขึ้นและมีข้อมูลที่จะจัดส่งมากกว่า eBay (Java), Stack Overflow (C # /. เหรอ?
Paul Tomblin

1
@ Paul Tomblin: จุดประสงค์ของเว็บแอปพลิเคชันไม่ใช่เพื่อเติมเต็มท่อเครือข่าย แต่เพื่อดำเนินการประมวลผลบางอย่าง หากคุณต้องการแสดงข้อความและรูปภาพเพียงบางส่วนคุณควรใช้เพจ HTML แบบคงที่ซึ่งให้ประสิทธิภาพที่เหนือกว่า ในกรณีส่วนใหญ่เพจแบบคงที่จะให้บริการจากแคชดังนั้นเซิร์ฟเวอร์ของคุณจึงไม่จำเป็นต้องทำอะไรเลย OTOH เมื่อจำเป็นต้องมีการประมวลผลอาจเป็นคอขวดได้ (แม้ว่าโดยทั่วไปแล้วดิสก์จะเป็นคอขวด)
PauliL

4
คุณต้องจำไว้ว่าเว็บแอปพลิเคชันเป็นเพียงส่วนหนึ่งของ "เซิร์ฟเวอร์สแต็ก" ที่จัดการคำขอของผู้ใช้และไม่ใช่ส่วนที่มีความสำคัญต่อประสิทธิภาพ มีส่วนอื่น ๆ - เคอร์เนล OS (โดยปกติจะเขียนด้วย C), ระบบไฟล์ (C), เว็บเซิร์ฟเวอร์ (โดยปกติคือ C), ตัวแปลภาษา (C), ฐานข้อมูล (โดยปกติคือ C หรือ C ++) โดยปกติเว็บแอปพลิเคชันจะส่งผ่านข้อมูลจากส่วนหนึ่งไปยังอีกส่วนหนึ่งเท่านั้นโดยใช้การทำงานพื้นฐานบางอย่างกับมันและประสิทธิภาพก็ไม่สำคัญเลย
el.pescado

15

C ไม่ใช่ภาษาที่สะดวกในการจัดการสตริง

เปรียบเทียบ C #:

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

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

4
PHP ไม่ได้จัดการ Unicode อย่างถูกต้องเช่นกัน แต่เป็นภาษาที่เน้นเว็บที่เป็นที่นิยมมาก
el.pescado

12
ดังนั้นเราควรใช้ C ++ เพราะมันจะได้ประสิทธิภาพเท่ากับ C แต่รวบรวมตัวอย่าง C # ของคุณเหมือนเสน่ห์?
tstenner

2
ในการจัดการสตริง - แอปพลิเคชั่นเว็บมักจะส่งออกสตริงเท่านั้นดังนั้น C printfควรทำงานได้ดี
el.pescado

5
C จัดการกับหลายไบต์และยูนิโคดได้ดีผ่านฟังก์ชันไลบรารีรันไทม์ การใช้ฟังก์ชันปลอดภัยเช่น strncpy และอื่น ๆ ทำให้ปลอดภัยเช่นกัน
justinhj

2
หรือคุณสามารถใช้ asprintf (& foobar, "% s% s", foo, bar);
Patrick Lorio

11

ถ้าความยากและซับซ้อนไม่ใช่ปัญหาเลย (ฮ่า!) ฉันจะไม่หยุดที่ C ฉันจะเขียน x86 assembly เป็นเวลาหลายปีแล้วที่ฉันใช้เว็บเซิร์ฟเวอร์ที่ไม่ใช่ x86 และมีโอกาสน้อยลงทุกวัน

ในการใช้ C (แทนการประกอบหรือสิ่งที่สูงกว่า) คือการแนะนำว่า C เป็นจุดที่น่าสนใจของประสิทธิภาพโปรแกรมเมอร์และประสิทธิภาพของคอมพิวเตอร์

สำหรับโปรแกรมที่ฉันเขียนนี่ไม่ใช่กรณี: C นั้นเข้ากันได้ไม่ดีกับประเภทของโปรแกรมที่ฉันต้องการเขียนและข้อดีของมันที่มีมากกว่าแอสเซมเบลอร์มาโครที่เหมาะสมนั้นไม่สำคัญ โปรแกรมที่ฉันเขียนตอนนี้ไม่ยากใน HLL ที่ฉันเลือก แต่ความซับซ้อนของมันในแอสเซมบลีหรือ C จะสูงมากจนไม่มีวันเสร็จ ฉันรับทราบว่าโปรแกรมเมอร์ที่ฉลาดเพียงพอและมีเวลาเพียงพอสามารถทำให้โปรแกรมทำงานเร็วขึ้นในแอสเซมบลีหรือ C แต่ฉันไม่ใช่โปรแกรมเมอร์คนนั้น


7
  • มันไม่ปลอดภัย
  • มันยากที่จะอ่าน
  • มันยากที่จะรักษาเวลาในการพัฒนาช้าลงตามลำดับขนาด
  • เนื้อหาเว็บส่วนใหญ่ของคุณอาจถูกผูกไว้กับ I / O ดังนั้นการเร่งความเร็วจึงไม่สำคัญโดยเฉพาะอย่างยิ่งเมื่อคุณใช้ภาษาที่รวดเร็วเช่น Java หรือ C #

2
"ภาษาที่รวดเร็วเช่น Java หรือ C #" หมายความว่าอย่างไร
RobS

3
@Kinopiko: ภาษาไดนามิกมีจุดอ่อนอะไรบ้าง? เมื่อโปรแกรมเมอร์ noob บอกอย่างชัดเจนว่าเขาต้องการรันโค้ดโดยพลการผ่านevalและ php include? โปรดใน C / C ++ คุณไม่ได้ระบุว่าคุณต้องการเรียกใช้รหัสตามอำเภอใจมันก็ทำได้ evalไม่ใช่จุดบกพร่อง แต่เป็นเจตนาของโปรแกรมเมอร์ ใน C / C ++ ข้อผิดพลาดใด ๆ evalที่สามารถนำไปสู่การเรียกใช้รหัสระยะไกลในภาษาแบบไดนามิกนี้เป็นกรณีที่ไม่เว้นแต่คนโง่บางอย่างจะล้อเล่นกับ
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

1
"และเร็วหรือเร็วกว่า C / C ++ ขึ้นอยู่กับว่าคุณกำลังทำอะไรอยู่" แต่คุณยังคงจัดการกับสภาพแวดล้อมหน่วยความจำที่มีการจัดการทั้ง Java และ C # ซึ่งอาจกลายเป็นอุปสรรคในสถานการณ์ที่มีปริมาณการใช้งานสูง
RobS

5
"และแน่นอนว่า C ไม่มีจุดอ่อนด้านความปลอดภัยมากเท่ากับภาษาไดนามิกใด ๆ " นั่นเพื่อนของฉันเป็นเรื่องไร้สาระโดยสิ้นเชิง ทำไมความคิดเห็นนั้นถึงมีการโหวตถึง 3 ครั้ง
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

2
@Kinopiko: จริง ๆ แล้วคุณอธิบายไม่ถูกเลย ไม่มีคำอธิบายสำหรับมัน C มีมากปัญหาที่ใหญ่กว่าภาษาแบบไดนามิก สิ่งที่เลวร้ายยิ่งกว่าที่อาจเกิดขึ้นในภาษาไดนามิกคือ "ไม่พบแอตทริบิวต์ whoop dee doo"
L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o̲̳̳k̲̳̳e̲̳̳

7

ฉันรู้ว่าคำถามนี้ได้รับคำตอบแล้ว แต่ยังมีอีก 2 สิ่งที่ยังไม่ได้กล่าวถึงซึ่งมีความสำคัญเป็นพิเศษต่อความสำเร็จในกระบวนทัศน์การเขียนโปรแกรมใด ๆ และโดยเฉพาะอย่างยิ่งในการพัฒนาเว็บที่คุณมีผู้คนมากมายที่ไม่จำเป็นต้องเป็นโปรแกรมเมอร์ ทำงานกับรหัส

  1. ชุมชนที่มีส่วนร่วมและมีประโยชน์หรือที่เรียกว่าผู้คนที่ได้แก้ไขปัญหาของฉันแล้ว มันค่อนข้างง่ายสำหรับคนที่ไม่มีส่วนเกี่ยวข้องกับ Google ว่าทำไมพวกเขาถึงได้รับข้อผิดพลาด "ส่วนหัวที่ส่งไปแล้ว" ใน PHP ในขณะที่ข้อมูลนั้นอาจไม่มีให้ใช้งานสำหรับเฟรมเวิร์กหรือภาษาที่ใหม่สำหรับฉากนั้นหรือไม่มี มวลวิกฤต
  2. Frameworks เพื่อให้โปรแกรมเมอร์ส่วนใหญ่สามารถแก้ไขปัญหาทางธุรกิจและไม่แฮ็กโค้ดร่วมกัน

ถ้าฉันมีแอปสำคัญที่ต้องการประสิทธิภาพสูงฉันจะใช้ C แต่จะต้องใช้เวลาเขียนนานกว่านี้มากจนฉันจะไม่มีวันออกสู่ตลาดได้ จนกว่าจะมี # 1 หรือ # 2 มันเป็นไปไม่ได้ที่ฉันจะใช้มัน


6

C เป็นภาษาระดับค่อนข้างต่ำสำหรับวัตถุประสงค์หลายประการ: no-OOP การจัดการทรัพยากรด้วยตนเองจำนวนมาก

มีการใช้งานที่ จำกัด ของ C สำหรับเว็บเป็นตัวอย่างเช่นKlone ส่วนใหญ่จะใช้สำหรับกรณีแอปพลิเคชันที่ฝังทรัพยากรต่ำ

อย่างไรก็ตามมีเว็บเฟรมเวิร์กC ++เช่นCppCMSที่ใช้สำหรับการพัฒนาเว็บแอปพลิเคชันประสิทธิภาพสูง

C ++ ช่วยให้คุณเพลิดเพลินไปกับความเป็นนามธรรมที่สูงและการเข้าถึงสิ่งที่คุณกำลังทำอย่างละเอียดให้ตัวเลือกที่ดีกว่ามากสำหรับการปรับใช้และพัฒนาแอปพลิเคชันขนาดใหญ่

แต่คุณใช้สิ่งเหล่านี้ในกรณีที่ประสิทธิภาพและการใช้ทรัพยากรมีความสำคัญมากขึ้นจากนั้นต้นทุนเวลาสู่ตลาดและการพัฒนาเนื่องจากโดยทั่วไปการพัฒนาเว็บจะเร็วกว่าโดยใช้เว็บเฟรมเวิร์กที่ดีสำหรับภาษาเช่น Java, Python หรือ PHP นอกจากนี้โดยทั่วไปแล้วจะมีโปรแกรมเมอร์ที่มีความสามารถน้อยกว่าสำหรับภาษา C ++ จากนั้น Java / P * สำหรับเงินเดือนเดียวกัน

ดังนั้นจึงเป็นคำถามเกี่ยวกับลำดับความสำคัญนอกจากนี้ยังมีเครื่องมือน้อยกว่าสำหรับการพัฒนาเว็บ C ++ สำหรับ PHP / Python / Perl หรือ Java


2
น่าสนใจฉันไม่รู้เกี่ยวกับ CppCMS เว็บเฟรมเวิร์กระดับต่ำที่เขียนด้วย C ++ อาจเป็นสิ่งที่ดีที่สุดของทั้งสองโลกซึ่งอยู่ระหว่างภาษา C และภาษาของเว็บ
Abs

ตอนนี้เป็นเฟรมเวิร์กระดับต่ำเป็นเฟรมเวิร์กเว็บ MVC ที่เร็วมาก
Artyom

ขออภัยฉันแค่อ้างถึงสิ่งที่ไม่ใช่ภาษาของเว็บเป็นระดับต่ำ ฉันเข้าใจว่ามันเป็นเฟรมเวิร์กเว็บ MVC
Abs

ไม่มีสิ่งที่เรียกว่า "ภาษาเว็บ" อาจมีเพียง PHP เท่านั้นที่สามารถเรียกได้ว่าเป็นเว็บเดียว ภาษาอื่น ๆ ทั้งหมดรวมถึง Java, Python, Perl, Ruby และ C # เป็นภาษาวัตถุประสงค์ทั่วไปที่ใช้สำหรับเว็บ
Artyom

1
ถ้าเราต้องการเจาะจงเช่นนั้นก็ไม่มีสิ่งที่เรียกว่าภาษาโปรแกรมสำหรับวัตถุประสงค์ทั่วไป มีเพียง Procedural, Structured, Object-Oriented, Functional ... etc ...
Abs

5

@ Joeri Sebrechts

FUD ในการดำเนินการ:

PHP, Python และอื่น ๆ นั้นง่ายต่อการปรับขนาดโดยการโยนฮาร์ดแวร์ไปที่ปัญหา

ดีจริงไม่ พวกเขาไม่ได้ปรับขนาดในแนวตั้งและปรับขนาดในแนวนอนได้ไม่ดีนัก ดู: http://gwan.ch/en_scalability.htmlซึ่งมีการอธิบายว่าปัญหาอยู่ข้างหน้าของผู้ทำผลงานไม่ดีมากเพียงใด

สมมติว่าต้องใช้ความพยายาม 1 คน 1 ปีในการพัฒนาแอปใน PHP และใช้เวลา 3 ปีในการทำในภาษา C (เนื่องจาก C ต้องใช้ความพยายามมากขึ้นในการทำสิ่งเดียวกัน)

ผิดอีกแล้ว. หากไลบรารี PHP เขียนด้วย C แล้วจะสามารถใช้งานได้โดยตรงจาก C - ให้ 'ผลผลิตที่ไม่ซ้ำใคร' ที่คุณอ้างว่า PHP มี

นั่นหมายถึงความต้องการฮาร์ดแวร์ที่ลดลงของรหัส C ต้องแสดงถึงค่าจ้าง 2 ปีเพื่อให้ C กลายเป็นสิ่งที่น่าดึงดูด ในทางปฏิบัตินั้น (เกือบ) ไม่เคยเกิดขึ้น

Pure FUD (ดูคำตอบด้านบน)

ขนาดของ Facebook มีขนาดใหญ่มากจนฮาร์ดแวร์มีค่าใช้จ่ายมากพอที่จะดูแล นั่นเป็นเหตุผลที่พวกเขาพัฒนา HipHop ซึ่งคอมไพล์ PHP เป็น C ++ นำเสนอสิ่งที่ดีที่สุดของทั้งสองโลก: ความเรียบง่ายของการเขียนโปรแกรมใน PHP และประสิทธิภาพดิบของ C ++ Facebook ยังคงได้รับการพัฒนาใน PHP แต่เมื่อคุณใช้งานจะเป็นโค้ดเนทีฟทั้งหมด

HipHop เร็วกว่า PHP มากไม่ต้องสงสัยเลย แต่ถ้าคุณเปรียบเทียบ HipHop กับการใช้งาน C ธรรมดาคุณมีค่าใช้จ่ายสองชั้น:

  • อินเทอร์เฟซ PHP เป็น C ++ (ซึ่งใช้ไลบรารี C ++ แบบป่อง)
  • C ++ ขยายตัวเอง (ซึ่งทำให้ C ++ ช้ากว่า C ธรรมดา 2-10 เท่า)

นอกจากนี้ HipHop ยังได้รับการเขียนในโหมดวิชาการที่ไร้ประสิทธิภาพ (แยกออกจากความเป็นจริงในโลกแห่งความเป็นจริง) แน่นอนว่ามันสามารถสร้างความประทับใจให้กับนักเขียนโค้ด PHP แต่แสดงรหัสนี้ให้กับโปรแกรมเมอร์ฝังตัวและเขาจะรู้สึกเสียใจกับ Facebook

"ภาษาที่ไม่มีทุกอย่างจะเขียนโปรแกรมได้ง่ายกว่าภาษาที่มี" - เดนนิสเอ็ม. ริตชี่

ซึ่งแตกต่างจากภาษาการเขียนโปรแกรม END-USERS (ส่วนใหญ่) เดนนิสรู้สองสิ่งเกี่ยวกับเรื่องนี้ดูเหมือนว่า


3
(1) อย่าเอาของไปใช้ส่วนตัวฉันไม่ได้ออกไปทำลายสินค้าของคุณเพราะฉันไม่รู้จักผลิตภัณฑ์ของคุณด้วยซ้ำ (2) คุณสร้างข้อพิสูจน์แนวคิดที่น่าสนใจกับ G-wan แต่ฉันหวังว่าคุณจะแก้ตัวหากฉันรอและดูแนวทางจนกว่าฉันจะเห็นเว็บแอปในโลกแห่งความเป็นจริงที่ใช้มันไม่ใช่แค่เกณฑ์มาตรฐานสังเคราะห์บางส่วน (3) คุณตั้งข้อร้องเรียนของ Facebook เกี่ยวกับการปรับขนาดแนวนอนไม่ถูกต้องเนื่องจากปัญหาของพวกเขาเกิดจาก memcache และประสิทธิภาพฐานข้อมูลแบบมัลติคอร์ซึ่งเป็นปัญหาคอขวดของเว็บแอปในโลกแห่งความเป็นจริงซึ่งเป็นสิ่งที่ G-wan ไม่ได้ช่วยแก้ปัญหา (4) HipHop ยินดีต้อนรับการสนับสนุนโค้ดของคุณฉันแน่ใจ
Joeri Sebrechts

1
พูดถึงปัญหาการเพิ่มผลผลิต ฉันเคยเขียนเว็บแอปในภาษา C มาก่อนดวงจันทร์หลายดวงแล้วและในเวลานั้นจำเป็นต้องมีเส้นเพื่อทำสิ่งเดียวกันมากกว่าที่ PHP ทำในขณะที่มีความเสี่ยงต่อการเกิดข้อผิดพลาด / การรั่วไหลของข้อบกพร่องมากกว่ามาก (ฉันเป็นแค่ "ค่าเฉลี่ย" สำหรับข้อบกพร่องประเภทนั้นซึ่งก็คือบอกว่าฉันเขียนมันเป็นตอน ๆ ไป) ฉันใช้วิจารณญาณในประสบการณ์นั้นจนกว่าฉันจะเห็นแอพจริงที่แสดงให้เห็นเป็นอย่างอื่น (เช่นพอร์ต wordpress ไปยัง C ที่ ไม่ต้องใช้รหัสบรรทัดมากขึ้น)
Joeri Sebrechts

บางสิ่งบางอย่าง "ไม่ปรับขนาดในแนวตั้ง" ได้อย่างไร คุณหมายความว่ามันไม่ได้รับประโยชน์จากประสิทธิภาพคอร์เดี่ยวที่เร็วขึ้นและประสิทธิภาพหน่วยความจำที่เร็วขึ้นหรือไม่?
rakslice

5

ต้องมีเหตุผลมากกว่านี้ว่าทำไมเราถึงใช้ PHP, Python, Ruby และอื่น ๆ นอกเหนือจากความง่ายในการพัฒนาในภาษาเหล่านี้

นี่คือเหตุผลทั้งหมดและเหตุผลเดียวที่จำเป็น มันมีประโยชน์มากมายหัวหน้าซึ่งถึงเวลาทำการตลาด หากคุณสามารถทำให้เว็บแอปของคุณออนไลน์ได้ภายในหนึ่งเดือนโดยใช้ PHP แทนที่จะใช้ C สองเดือนคุณก็อาจจะชนะ หากคุณสามารถเพิ่มคุณสมบัติใหม่ในหนึ่งสัปดาห์โดยใช้ Ruby on Rails แทนการใช้ C สองสัปดาห์คุณจะชนะอีกครั้ง หากคุณสามารถแก้ไขข้อบกพร่องในหนึ่งวันโดยใช้ Python แทนที่จะใช้ C สองวันคุณจะชนะอีกครั้ง หากคุณสามารถเพิ่มคุณลักษณะได้เนื่องจากคุณใช้ภาษา X ซึ่งคู่แข่งของคุณไม่สามารถเพิ่มได้เลยเนื่องจากใช้ภาษา Y และภาษานั้นยากเกินไปเนื่องจากข้อ จำกัด ด้านทรัพยากรคุณก็ชนะแน่นอน

และด้วยการ "ชนะ" ฉันหมายความว่าคุณไม่แพ้จริงๆ คู่แข่งของคุณกำลังใช้ภาษาและเฟรมเวิร์กระดับสูงในการพัฒนาไซต์ของตนดังนั้นหากคุณใช้ C คุณจะไม่แข่งขันกับคนอื่นที่ใช้ C คุณจะแพ้คนอื่นที่ไม่ได้ใช้ C เพียงเพื่อแข่งขันคุณมี เพื่อใช้เครื่องมือที่มีนามธรรมในระดับใกล้เคียงกัน

หากประสิทธิภาพกลายเป็นปัญหาคุณสามารถเขียนส่วนที่ช้าของไซต์ของคุณใหม่ในภาษาที่มีประสิทธิภาพดีกว่า หรือคุณสามารถใช้ฮาร์ดแวร์เพิ่มเติมได้ จริงๆแล้วปัญหาด้านประสิทธิภาพคือสิ่งที่เราเรียกว่า "ปัญหาที่ดีที่จะมี" นั่นหมายความว่าคุณประสบความสำเร็จแล้ว แต่การใช้เวลามากขึ้นในการพัฒนาฟังก์ชันพื้นฐานของไซต์ของคุณนั้นแทบไม่มีทางเลือก การเขียนใน C เพื่อให้มันทำงานได้เร็วขึ้นคือการเพิ่มประสิทธิภาพก่อนเวลาอันควรซึ่ง Knuth บอกเราว่าเป็นรากเหง้าของความชั่วร้ายทั้งหมด

ทั้งหมดนี้บอกเป็นนัยว่าหากคุณสามารถใช้ภาษาที่มีระดับนามธรรมสูงกว่า Python หรือ Ruby คุณสามารถเอาชนะคนที่ใช้ Python หรือ Ruby ได้ เรื่องราวของ Paul Graham เกี่ยวกับวิธีที่เขาและทีมใช้ LISP เป็น "อาวุธลับ" ในการพัฒนาเว็บไซต์อาจให้คำแนะนำได้ http://www.paulgraham.com/avg.html

แน่นอนว่าหากคุณกำลังพัฒนาไซต์เพื่อความบันเทิงของคุณเองให้ทำในภาษาใดก็ได้ที่คุณต้องการ และหากไซต์ของคุณมี CPU ผูกอยู่ (แทบจะไม่มีเลยพวกเขามักจะผูก I / O) ให้ใช้ภาษาที่ทำงานได้เร็วที่สุดที่คุณสามารถทำได้ หากคุณกำลังพยายามสร้างสรรค์สิ่งใหม่ ๆ ให้ใช้ภาษาระดับสูงที่มีนามธรรมที่ดีที่สุดที่คุณจะหาได้


คุณลืมว่ากำลังบิตประมวลผลคำสั่งในปริมาณสูงผ่านทางเว็บถูกเขียนใน C. ดูหมายเหตุที่ด้านล่างของpaulgraham.com/avg.html
Giles Roberts

4

คุณคิดว่าการเป็นคนง่ายไม่ใช่เหตุผลที่ดี ฉันคิดว่ามันเป็นเหตุผลที่ดี หากคุณต้องการประสิทธิภาพสูงสุด C ก็โอเค แต่ภาษาอื่น ๆ จะแยกสิ่งที่ยากออกไปเพื่อเพิ่มผลผลิตการบำรุงรักษาและลดข้อบกพร่อง


6
เพื่อให้ได้ประสิทธิภาพสูงสุดคุณไม่เพียงต้องการ C เท่านั้น แต่ยังต้องมีโปรแกรมเมอร์ C ขั้นสูงอีกด้วย และคนเหล่านั้นมักต้องการเงินมากกว่าโปรแกรมเมอร์ Java / P *
el.pescado

4

พิจารณาว่าฉันไม่ใช่นักพัฒนาเว็บ แต่จะถามคำถามเหล่านี้และเสนอประเด็นหรือสองประเด็น

เว็บไซต์ใดที่เขียนเพียงภาษาเดียว อย่างจริงจังดูเหมือนว่าหัวข้อนี้จะถือว่าค้อนหนึ่งตัวเหมาะกับตะปูทั้งหมด

ครั้งสุดท้ายที่ใครระบุว่า C ซับซ้อนคือเมื่อใด ฉันหมายถึงผู้ชายจริงๆคุณไม่สามารถรับระดับที่ต่ำกว่านี้ได้อีกแล้ว ฉันไม่ได้พูดถึง C ++ ที่นี่เนื่องจากทั้งสองมักจะอ้างอิงโดยรวม

C มีข้อกังวลด้านความปลอดภัยซึ่งไม่สามารถปฏิเสธได้ แต่มีน้อยกว่าที่เห็นใน kludges ที่เรียกว่า PHP & Perl หรือไม่? ไม่ว่าในกรณีใดเว็บไซต์ที่ปลอดภัยถือเป็นหน้าที่ของโปรแกรมเมอร์

ไม่ว่าในกรณีใด ๆ ที่จะแสดงความคิดเห็น ความยากในการใช้ภาษาใด ๆ ขึ้นอยู่กับปัญหาในมือ C & โดยเฉพาะ C ++ สามารถนำไปสู่การแก้ปัญหาอย่างรวดเร็วในมือที่มีประสบการณ์

ใช้ในอุตสาหกรรมสำหรับเว็บเซิร์ฟเวอร์นั่นคือเซิร์ฟเวอร์ / ไซต์แบบฝังตัวเพียง แต่ไม่มีตัวเลือกภาษาที่เว็บเซิร์ฟเวอร์ทั่วไปอาจมี ดังนั้นคุณจึงใช้ตัวแปร C หรืออาจจะเป็นแบบเบสิก เป้าหมายของคุณคือการนำเสนอฟังก์ชันที่อุปกรณ์ต้องการและไม่ต้องกังวลกับภาษา บนเว็บเซิร์ฟเวอร์หลักวิธีการทำเช่นนั้นคือภาษาระดับสูงเกือบตลอดเวลา เดินออกไปจากเหล็กขนาดใหญ่และอิสระในการเขียนโปรแกรมของคุณจะออกไปจากประตู

หากไม่มีไลบรารีที่ถูกต้องในกรณีส่วนใหญ่จะเป็นเรื่องโง่ที่จะทำโครงการเว็บใน C. การขาดไลบรารีที่ได้มาตรฐานที่ดีนั้นเป็นผลเสียอย่างมากที่นี่


3

นี่คือโค้ดเกี่ยวกับเว็บเพิ่มเติมที่เขียนด้วย C ซึ่งควรค่าแก่การพิจารณาเมื่อสร้างไลบรารี C ของคุณเองสำหรับเว็บ:

  • cgic: ไลบรารี ANSI C สำหรับการเขียนโปรแกรม CGI
  • cgit: ส่วนหน้าของเว็บสำหรับที่เก็บ git
  • wbox: เครื่องมือทดสอบ HTTP
  • wget html-parse.c
  • curl cookie.c
  • ส่วนลดการนำ C ของ David Parsons ไปใช้กับข้อความ Markdown ของ John Gruber เป็นภาษา html
  • Protothreads (โดยเฉพาะสำหรับระบบฝังตัว), http://www.sics.se/~adam/software.html
  • protothread โครงการรหัส Google โดย LarryRuane
  • โครงการ uriparser sourceforge
  • http-parser, http request / response parser สำหรับ c โดย Ryan Dahl บน github
  • nginx
  • ...

2

เนื่องจากข้อเท็จจริงที่ว่าการพัฒนาเว็บเป็นเรื่องของการมีไลบรารีที่มีประโยชน์ (แบบที่ PHP ใช้) ดังนั้นฉันจึงไม่เห็นว่า C จะไม่มีประโยชน์อย่างไร

ท้ายที่สุดลอจิกขั้นตอนก็เหมือนกัน: do while, for, if then else, etc. ไม่ว่าจะเป็น C, PHP, .Net หรือ Perl

และลูป C หรือแบบทดสอบไม่ยากกว่าที่จะเขียนเพราะเขียนด้วย C

ไลบรารี PHP ส่วนใหญ่สร้างขึ้นในภาษา C ดังนั้นอาร์กิวเมนต์ -C-libraries-for-the-Web ที่หายไปจึงดูไม่น่าเชื่อมากนัก

ฉันเดาว่า C ไม่ได้โฆษณาเป็นภาษาการเขียนโปรแกรมบนเว็บโดยผู้สนับสนุน Java (SUN) และ. Net (MICROSOFT) เนื่องจากมีทรัพย์สินทางปัญญาที่เป็นกรรมสิทธิ์ของตนเอง(จดสิทธิบัตรอย่างหนัก) เพื่อผลักดันให้มีการนำไปใช้

ในฐานะที่เป็นมาตรฐานฟรี (ไม่ได้จดสิทธิบัตร) C ไม่ได้เสนอการ 'ล็อคอิน' ใด ๆ กับนักพัฒนา ... ด้วยเหตุนี้อาจต้องใช้การล็อบบี้ในโรงเรียนและมหาวิทยาลัยอย่างหนักเพื่อให้แน่ใจว่าเงินที่จ่ายภาษีจะเป็นทุนในการนำไปใช้ เทคโนโลยีที่ด้อยกว่าได้รับการสนับสนุนโดยผลประโยชน์ส่วนตัว

หาก C ดีพอสำหรับ IBM และ MICROSOFT (พวกเขาไม่ได้พัฒนาผลิตภัณฑ์ของตนใน PHP หรือ. Net) แต่ไม่ดีพอสำหรับผู้ใช้ปลายทางผู้ใช้ปลายทางอาจสงสัยว่าเหตุใดพวกเขาจึงได้รับเชิญให้รับสองมาตรฐานนี้


1
อ๊ะ Microsoft.com และ SharePoint อยู่ใน ASP.NET Visual Studio 2010 ส่วนใหญ่อยู่ใน. NET (WPF) ข้อความนี้เป็นเท็จอย่างเห็นได้ชัด ใช้ภาษาระดับสูงสุดที่ตรงตามข้อกำหนดการออกแบบของคุณ สำหรับเว็บนั่นหมายถึง C # / Python / etc และส่วนประกอบใน C / C ++ / etc ที่ประสิทธิภาพกลายเป็นปัญหาแม้ว่าแทบจะไม่เคยเกิดขึ้น
3 ทุ่ม

2

ฉันจะใช้ 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 นักพัฒนาที่เส็งเคร็งทุกคนสามารถสร้างไซต์ด้วย spaghetti PHP :-) มีเครื่องตรวจจับการรั่วไหลและแม้แต่เครื่องเก็บขยะสำหรับ C


2

ภาษาทั้งหมดที่คุณพูดถึงเขียนด้วยภาษา C / ++ ข้อแตกต่างเพียงอย่างเดียวคือคลาสขั้นสูงและไลบรารีที่สร้างขึ้นจาก C ซึ่งประกอบเป็นภาษาล่ามอื่น ๆ ในปัจจุบัน นอกจากนี้ยังเป็นสาเหตุที่เรียกว่าภาษาสคริปต์

คิดว่ามันเหมือนกับการอบเค้ก (PHP / JS):

  • ไข่ 2 ฟองนม 1 ถ้วยเนย 2 แท่งแป้ง 4 ถ้วยน้ำตาลทราย 1 ถ้วยเบคกิ้งโซดา

แต่จินตนาการว่าต้องสร้างองค์ประกอบทั้งหมดที่สิ่งเหล่านั้นประกอบด้วย (C / ++)

  • โซเดียมไบคาร์บอเนต 17 มก. โปรตีน 15 tbs เมมเบรน Vitelline 12 tbs กรดอะมิโนซัลเฟอร์ ... อนุภาคนิวตรอน

C เป็นรากฐานของภาษาสมัยใหม่หลายภาษา เป็นภาษาที่ยอดเยี่ยมและเกือบจะทรงพลังที่สุดในการประกอบ คุณสามารถทำได้โดยคุณต้องลงทุนในการสร้างโค้ดทั้งหมดที่ภาษาอื่น ๆ เหล่านี้ทำไปแล้ว เช่นเดียวกับการสร้างเค้กจากตารางธาตุ

เรียนรู้ว่าคุณสามารถทำให้มันทำอะไรก็ได้!


1

การจัดการสตริงใน C สามารถทำได้ง่ายขึ้นโดยใช้:

ประเภทข้อมูล (ส่วนหนึ่งของ libslack)

Libslack มีชนิดข้อมูลอาร์เรย์พอยน์เตอร์ที่เติบโตได้ทั่วไปที่เรียกว่า List ซึ่งเป็นประเภทข้อมูลตารางแฮชที่เติบโตได้ทั่วไปที่เรียกว่า Map และชนิดข้อมูล String ที่เหมาะสมซึ่งมาพร้อมกับฟังก์ชันมากมาย (จำนวนมากยกมาจาก Perl) นอกจากนี้ยังมีประเภทข้อมูลรายการที่เชื่อมโยงแบบนามธรรมเดี่ยวและแบบทวีคูณพร้อมด้วยฟรีลิสต์ที่เป็นตัวเลือก "เติบโตได้"

หรือ:

Managed String Library (สำหรับ C)

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


1

"domachine" เขียนว่า:

การพึ่งพาแพลตฟอร์ม: C จำเป็นต้องรวบรวมเป็นโค้ดเนทีฟ รหัสนี้ไม่ทำงานบนทุกแพลตฟอร์ม ภาษาที่ตีความ (เช่น PHP) ทำงานได้ทุกที่ที่มีล่ามอยู่ แน่นอนว่าปัญหานี้สามารถแก้ไขได้ แต่คุณเห็นข้อดีของการพัฒนาใน PHP ในกรณีนี้โดยเฉพาะ

คุณเคยสงสัยหรือไม่ว่าล่าม PHP แบบพกพาเขียนขึ้นในภาษาใด?

ใน ANSI C.

ดังนั้นก่อนที่คุณจะยกเลิกความสามารถในการพกพาของ ANSI C อีกครั้งให้ถามตัวเองว่าภาษาโปรแกรมโปรดของคุณเขียนเป็นภาษาใด ... (เคล็ดลับ: เกือบทั้งหมดเขียนด้วย C / C ++)

คอมไพเลอร์ ANSI C มีอยู่ในทุกแพลตฟอร์มที่ฉันต้องใช้และสิ่งเดียวกันนี้ไม่เป็นความจริงสำหรับ PHP และรันไทม์ขนาดมหึมา

มากสำหรับอาร์กิวเมนต์การพกพา


2
PHP ไม่ใช่ภาษาโปรดของฉัน ฉันยังไม่ได้เขียนโค้ดอะไรใน PHP เลย ฉันเป็นโปรแกรมเมอร์ C และ C ++ ฉันไม่เคยยกเลิกการพกพาของ C! สิ่งเดียวที่ฉันพูดถึงคือความสะดวกในการใช้ PHP-Scripts กับ WebSpace ที่มีอยู่ แสดงกรณีที่คุณสามารถหา WebSpace งบประมาณต่ำที่คุณมีคอมไพเลอร์ได้ บางทีฉันอาจจะคิดผิด แต่ฉันคิดว่าคุณเป็นหนึ่งในโปรแกรมเมอร์ผู้คลั่งไคล้ที่ชื่นชอบภาษาเดียว แต่ไม่เห็นข้อดีของภาษาอื่น ๆ อาจจะเป็นภาษาที่เหมาะสมกว่า ฉันชอบ C และ C ++ แต่ฉันสามารถคิดนอกกรอบได้
domachine

0

คล้ายกับ G-WAN แต่สำหรับ Cocoa / Objective-C คือ Bombax ซึ่งเป็นเฟรมเวิร์กแอปพลิเคชันบนเว็บ

http://www.bombaxtic.com

การพูดถึง Objective-C ฉันอดไม่ได้ที่จะชี้ให้เห็น MacRuby ซึ่งมีศักยภาพในการปฏิวัติวิธีการสร้างเว็บแอปในวันหนึ่ง


ตอนนี้ MacRuby ตายแล้ว
Banjocat

0

อีกประเด็นหนึ่งอาจเป็นการพึ่งพาแพลตฟอร์ม C ต้องรวบรวมเป็นรหัสดั้งเดิม รหัสนี้ไม่ทำงานบนทุกแพลตฟอร์ม

ภาษาที่ตีความจะทำงานทุกที่ที่มีล่ามอยู่ ตัวอย่างเช่นผู้ให้บริการหลายรายให้ PHP-Interpreters ติดตั้งบนเซิร์ฟเวอร์ของตน แต่มีระบบปฏิบัติการ Windows หากตอนนี้คุณกำลังพัฒนาบนเครื่อง Linux คุณมีปัญหา

แน่นอนว่าปัญหานี้สามารถแก้ไขได้ แต่คุณเห็นข้อดีของการพัฒนาใน PHP ในกรณีนี้โดยเฉพาะ

หวังว่านี่จะช่วยได้เกี่ยวกับ Domachine


0

PHP, Python และอื่น ๆ นั้นง่ายต่อการปรับขนาดโดยการโยนฮาร์ดแวร์ไปที่ปัญหา

สมมติว่าต้องใช้ความพยายาม 1 คน 1 ปีในการพัฒนาแอปใน PHP และใช้เวลา 3 ปีในการทำในภาษา C (เนื่องจาก C ต้องใช้ความพยายามมากขึ้นในการทำสิ่งเดียวกัน) นั่นหมายถึงความต้องการฮาร์ดแวร์ที่ลดลงของรหัส C ต้องแสดงถึงค่าจ้าง 2 ปีเพื่อให้ C กลายเป็นสิ่งที่น่าดึงดูด ในทางปฏิบัตินั้น (เกือบ) ไม่เคยเกิดขึ้น

เช่นเดียวกับทุกกฎมีข้อยกเว้น ขนาดของ Facebook มีขนาดใหญ่มากจนฮาร์ดแวร์มีค่าใช้จ่ายมากพอที่จะดูแล นั่นเป็นเหตุผลที่พวกเขาพัฒนาHipHopซึ่งคอมไพล์ PHP เป็น C ++ นำเสนอสิ่งที่ดีที่สุดของทั้งสองโลก: ความเรียบง่ายของการเขียนโปรแกรมใน PHP และประสิทธิภาพดิบของ C ++ Facebook ยังคงได้รับการพัฒนาใน PHP แต่เมื่อคุณใช้งานจะเป็นโค้ดเนทีฟทั้งหมด


0

ในท้ายที่สุดคุณสามารถใช้ภาษาใดก็ได้ในการพัฒนาไซต์รวมถึงแอสเซมเบลอร์ (ผ่าน CGI เป็นต้น) ถ้าคุณหมายถึงว่าทำไมเราไม่ใช้ภาษาคอมไพล์ล่ะก็เรามี. NET, Java และอื่น ๆ แล้ว


0

คุณต้องรักในสิ่งที่ทำเพื่อให้บรรลุผล ภาษาเช่น java และ php ถูกสร้างขึ้นด้วยความพยายามอย่างมากที่จะทำให้ชีวิตของผู้คนง่ายขึ้น Php ได้รับประโยชน์โดยเฉพาะอย่างยิ่งโปรแกรมเมอร์เว็บที่เรียนรู้ด้วยตนเองในปัจจุบัน คุณสามารถดูการสนับสนุนที่มีได้ในโลกของการพัฒนาเว็บ

Java iam แน่ใจว่าเขียนขึ้นเพื่อให้ความช่วยเหลือคุณในทุกสิ่งที่เป็นไปได้ในโลกปัจจุบัน หนังสือเล่มใหญ่เป็นตัวบ่งชี้ที่ชัดเจนและเป็นสัตว์ร้ายหากคุณกำลังพัฒนาเว็บด้วยเช่นกัน เช่นเดียวกันกับ Python นี่คือภาษาและแพลตฟอร์มที่ยอดเยี่ยม ไม่น่าแปลกใจที่พวกเขาได้รับความนิยมอย่างมหาศาล

ฉันเป็นสาวก C และส่วนหนึ่งเป็นเพราะข้อ จำกัด บางอย่างที่กีดกันฉันจากการดูภาษาอื่น ๆ เช่น php ฉันเขียนภาษา C ทุกวันและทุกวันฉันก็ภูมิใจที่ได้เรียนรู้สิ่งใหม่ ๆ เช่นกัน สิ่งนี้ทำให้ฉันรู้สึกดีมากและฉันก็เริ่มเรียนรู้ว่า C เป็นตัวเลือกเริ่มต้นอย่างไรเมื่อเขียนแอปพลิเคชันสำหรับเว็บไซต์ผ่าน Cgi สิ่งนี้เป็นนามธรรมในแพลตฟอร์มอื่น ๆ และเมื่อคุณพัฒนาเว็บไซต์ที่เกี่ยวข้องกับฐานข้อมูลและบริการเว็บคุณจำเป็นต้องรู้ว่าเกิดอะไรขึ้นเบื้องหลัง

อย่างไรก็ตามหากคุณรู้ทั้งหมดและยังต้องการใช้ภาษาสคริปต์ต้องมีเหตุผลที่ถูกต้องและเราไม่จำเป็นต้องให้ใครแนะนำเรื่องนั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.