มีภาษาสคริปต์เว็บแบบคงที่หรือไม่ [ปิด]


12

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

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

นั่นทำให้ฉันประหลาดใจ มีภาษาสคริปต์ฝั่งเซิร์ฟเวอร์ที่ใช้การพิมพ์แบบคงที่เพื่อสิ่งที่ดีที่สุดของทั้งสองโลกหรือไม่?


2
คุณคิดจะใช้Goหรือเปล่า?
pswg


4
"ข้อเสียทั้งหมดในการทำงานความถูกต้องและการบำรุงรักษาที่ภาษาที่พิมพ์แบบไดนามิกนำมา" การยืนยันเหล่านี้เป็นที่ถกเถียงกันมากที่สุดและผิดที่สุด (JIT ที่เร็วที่สุดในปัจจุบันใช้สำหรับภาษาที่พิมพ์แบบไดนามิก)
Javier

2
"ตรรกะการสร้างเพจถูกคอมไพล์ลงในเซิร์ฟเวอร์ซึ่งหมายความว่าหากคุณต้องการเปลี่ยนแปลงบางสิ่งคุณต้องถอดเซิร์ฟเวอร์และแทนที่ด้วยบิลด์ใหม่" มีสภาพแวดล้อมเซิร์ฟเวอร์ต่าง ๆ ที่สามารถส่งมอบให้กับไบนารีใหม่โดยไม่มีการหยุดชะงักของบริการ กล่าวคือ โหลดใหม่อย่างสวยงาม uWSGI
Javier

1
สำหรับ JVM มีกรอบสองสามอย่างที่อนุญาตให้คุณคอมไพล์ใหม่และสลับร้อนได้ทันที
back2dos

คำตอบ:


8

UPDATE: โซลูชันปัจจุบันเพิ่มเติม ได้แก่ AtScript

คุณควรพยายามGoogle โผ

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

ข้อเสียเปรียบหลักของที่นี่คือเทคโนโลยีใหม่ดังนั้นจึงมีไลบรารีไม่มากและการทำงานร่วมกันกับ javascript ไม่ง่ายอย่างที่ควรจะเป็น นอกจากนี้ภาษายังอยู่ในระหว่างการพัฒนาดังนั้นจึงมีการเปลี่ยนแปลงอย่างต่อเนื่องเป็นครั้งคราว


ฉันอยากจะแนะนำ TypeScript เช่นเดียวกับลูกดอก แต่มันเข้ากันได้กับ JavaScript
Knerd

4

คำถามของคุณขึ้นอยู่กับสมมติฐานที่ไม่ถูกต้องหลายประการ

Python, Ruby ถูกคอมไพล์ไปเป็น bytecode ก่อนทำการประมวลผล กระบวนการนี้เป็นไปโดยอัตโนมัติ แต่การเปลี่ยนแปลงแอปพลิเคชันต้องการการรีสตาร์ทแบบเต็ม Node.JS ทำงานในลักษณะเดียวกัน แต่คอมไพล์กับรหัสเครื่อง

รหัส ASP.NET สามารถคอมไพล์แล้วและคัดลอกไปยังเซิร์ฟเวอร์หรือรวบรวมตามความต้องการจากซอร์สโค้ดบนเซิร์ฟเวอร์ IIS จัดการทั้งสองรูปแบบของการอัพเดตโดยไม่มีเวลาดาวน์ (คำขอแรกหลังจากการอัพเดตจะช้า) การอัพเดตดาวน์ไทม์ Zero สามารถทำได้ด้วย Python และ Ruby แต่มีตัวเลือกการปรับใช้มากมาย

จากนั้นฉันคิดว่าคุณจะมีความสุขกับภาษา. NET


3
ภาษาสคริปต์คือเมื่อคุณสามารถเขียนบิตบางส่วนในไฟล์และเรียกใช้ ไม่มีเหตุผลที่ไม่ควรพิมพ์แบบสแตติก
Florian Margaine

@FlorianMargaine ดังนั้นCเป็นภาษาสคริปต์หรือไม่

@delnan c ++ด้วย
mikerobi

@mikerobi จริงๆแล้ว "mine" ก็คือ C ++ เหมือนกัน (และ AFAIK เป็นผู้สืบทอดของ CINT) ฉันเพิ่งทำผิดพลาดเล็กน้อย

2
@mikerobi หากคุณสำรวจ picoc คุณจะสังเกตเห็นจุดทั้งหมดที่เขียนในตอนแรกคือภาษาสคริปต์ ไม่ใช่แค่ล่ามสำหรับ c แต่เป็นล่ามขนาดเล็กพอที่จะฝังในแอพพลิเคชั่นและอุปกรณ์ขนาดใหญ่และให้ผู้ใช้สามารถเขียนสคริปต์ขนาดเล็กใน c บางภาษาอาจใช้สคริปต์ได้ดีกว่าภาษาอื่น แต่ภาษาก็ไม่ได้เลวร้ายเพียงแค่การเขียนสคริปต์เพราะยังไม่ได้ใช้ (แต่) ในตอนท้ายของวันภาษาเป็นเพียงไวยากรณ์และความหมายการใช้งานอาจแตกต่างกันอย่างดุเดือด
yannis

0

ไม่มีเหตุผลที่ภาษาที่คอมไพล์จะต้องพิมพ์อย่างรุนแรงหรือยากที่จะปรับปรุง

คุณอาจต้องการดูการตั้งค่าบางอย่างของเว็บ erlang เช่น Cowboy, Webmachine และไนโตรเจน ด้วย Dialyzer คุณจะได้รับการตรวจสอบประเภทที่ดีมากสำหรับความถูกต้องและคุณสามารถโหลดโมดูลได้ทันทีในขณะใช้งานเนื่องจาก erlang ถูกออกแบบมาเพื่อให้สามารถอัพเกรดซอฟต์แวร์ได้โดยไม่รบกวนผู้ใช้ที่มีอยู่

นอกจากนี้ webmachine (อันที่ฉันใช้บ่อยที่สุด) นั้นค่อนข้างเร็ว ฉันเคยเห็น webmachine มีการตอบสนองโดยเฉลี่ยต่อจุดสิ้นสุดของ API น้อยกว่า 10ms บนโหนดเล็ก amazon EC2!

หากคุณต้องการพิมพ์แบบคงที่ลองใช้กรอบYesodซึ่งเป็นภาษา Haskell Haskell พิมพ์ด้วยระบบที่หลากหลายมาก

ฉันไม่ได้ใช้มันเป็นการส่วนตัว แต่คนที่ฉันรู้ว่าใครใช้มันรักมัน


3
อย่าสับสนการพิมพ์ที่แข็งแกร่งและคงที่ Haskell มีรูปแบบคงที่ที่แข็งแกร่ง Python มีรูปแบบไดนามิกที่แข็งแกร่ง
mikerobi

0

IMHO, ภาษาสคริปต์เว็บที่ดีที่สุดแบบคงพิมพ์D

เช่นเดียวกับการแปลภาษาสคริปต์มันสามารถรวบรวมสคริปต์ได้ทันทีและด้วยความเร็วสูง

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

สิ่งที่เกิดขึ้นพร้อมกันทั้งหมดถูกซ่อนไว้เช่นเดียวกับใน PHP และแม่แบบที่รวบรวมในรหัสพื้นเมือง

หายากกว่านั้น ...

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