การใช้ Coffeescript มีความเสี่ยงมากน้อยเพียงใดโดยไม่ต้องใช้ Javascript [ปิด]


15

ฉันเป็นโปรแกรมเมอร์ที่มีประสบการณ์พอสมควรที่พยายามเรียนรู้การพัฒนาเว็บ ฉันพยายามพัฒนาเว็บแอปพลิเคชันฝั่งไคลเอ็นต์ซึ่งใช้ svg หรือ canvas สำหรับกราฟิก ฉันตัดสินใจว่าฉันต้องการเขียนรหัสแอปพลิเคชันใน Coffeescript ฉันไม่รู้ Javascript หรือ Coffeescript

จำเป็นต้องมีความรู้ในการพัฒนาเว็บ Javascript ถึง Coffeescript อย่างไร? ฉันมีแนวโน้มที่จะประสบปัญหา gnarly ซึ่งต้องให้ฉันเข้าใจ Javascript หรือไม่ ฉันสามารถทำงานอย่างมีความสุขกับ Javascript APIs จาก Coffeescript ได้หรือไม่

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

ฉันจะทำงานในโครงการขนาดเล็กเพื่อเรียนรู้การพัฒนาเว็บ ฉันควรใช้ Javascript หรือ Coffeescript ดีกว่าไหม ฉันคิดว่าในระยะยาวฉันจะชอบ Coffeescript แต่ฉันยินดีที่จะเริ่มต้นด้วย Javascript ถ้าฉันต้องการความเข้าใจอย่างละเอียดของ Javascript เพื่อใช้ Coffeescript


โปรดทราบว่า CoffeeScript จะรวบรวม JavaScript ในขณะที่ CS ช่วยให้จัดการ JavaScript ที่แตกต่างกันได้ง่ายขึ้น มันยังคงขึ้นอยู่กับฟังก์ชั่นและนิสัยใจคอที่เหมือนกันทั้งหมด ตัวอย่างเช่นclassคำหลักใน CS ไม่ได้ทำอะไรวิเศษ มันใช้กลไกการสืบทอดดั้งเดิมของ JavaScripts เท่านั้น ด้วยเหตุนี้ฉันขอแนะนำให้มีความรู้อย่างน้อยเกี่ยวกับ "คุณสมบัติ" JavaScripts ที่คลุมเครือมากขึ้น
Michelle Tilley

2
CS ไม่ใช่กระสุนเงินเวทย์มนตร์ที่ทำให้ทุกอย่างง่ายขึ้น แต่เป็น JS ที่มีไวยากรณ์แตกต่างกัน ไม่ว่าคุณจะเขียน JS หรือ CS เป็นการกำหนดลักษณะ
Raynos

คำตอบ:


12

ฉันคิดว่ามันไม่จำเป็นอย่างยิ่ง แต่คุณต้องเจอสิ่งกีดขวางบนถนนในระยะยาวหากคุณไม่ทำ

คุณต้องเข้าใจว่าเกิดอะไรขึ้นภายใต้ประทุนและสิ่งที่คอมไพเลอร์ CoffeeScript ถ่ายสำเนานั้นเป็นสิ่งที่เบราว์เซอร์ (สมมติว่าเรากำลังพูดถึงการใช้ CoffeeScript ในสภาพแวดล้อมของเบราว์เซอร์) จะต้องตีความ ซึ่งหมายความว่าเป็นสิ่งที่คุณจะต้องทำการดีบักโดยเฉพาะอย่างยิ่งการพิจารณา CoffeeScript นั้นค่อนข้างเร็วและเราอาจเจอข้อผิดพลาดและข้อบกพร่องในกลไกการถอดรหัส นอกจากนี้หากไม่ได้ใช้เครื่องมือแก้ไขข้อบกพร่อง bespoke ใด ๆ สำหรับการดีบักคุณจะต้องข้ามโค้ด JavaScript ที่สร้างขึ้นเพื่อทำการดีบักโดยใช้ Firebug หรือ Chrome Dev Tools หรือคอนโซล JS ที่คุณเลือก ในบางกรณีคุณจะสามารถดูว่าข้อผิดพลาด JS เกี่ยวข้องโดยตรงกับคำสั่ง CoffeeScript ต้นทางได้อย่างไร ในขณะที่การถอดความไม่ใช่เรื่องเล็กน้อย

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

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


1
หรือคุณจะรำคาญที่ CoffeeScript เพราะไม่ใช่ JavaScript;) ES5 เป็นภาษาที่น่ารัก
Raynos

@ Raynos: ลิปสติกบนหมูยังคงเป็นหมู tuxido บนแพะยังเป็นแพะ ฯลฯ ... :) ฉันเห็นด้วยว่า ECMAScript เป็นภาษาที่น่าสนใจมาก ๆ เมื่อคุณรู้จัก แต่มันมีความไม่สอดคล้องกันมากและกับดักและหลุมพรางที่ทำให้ทั้งคู่เป็นภาระ ผู้เรียนใหม่และแม้แต่โปรแกรมเมอร์ขั้นสูง แต่ถึงกระนั้นมันก็เป็นเว็บที่ทันสมัยของเราและมันก็ปรับปรุงและสุกเมื่อเวลาผ่านไป ฉันชอบแนวคิดของ CoffeeScript เพราะมันซ่อนสิ่งที่น่ารำคาญบางอย่างของ ECMAScript เอาไว้เช่นเดียวกับที่ใช้ libs สำหรับ Java (หรือแม้แต่ภาษาที่อยู่ด้านบน) ทำให้สามารถรับได้
haylem

2
ฉันต้องอ่านส่วนที่ดีและความดีของคุณแล้ว ข้อผิดพลาดนั้นไม่ยากที่จะหลีกเลี่ยง
Raynos

@ Raynos: แต่ฉันพยายามที่จะหานักพัฒนา JS ขั้นสูงที่จะจ้าง แต่น่าเสียดายที่ คนดีจริงๆยากที่จะหา
haylem

โอ้ฉันเห็นด้วยชุมชน JS นั้นเต็มไปด้วยนักพัฒนาปานกลาง ฉันไม่ได้ที่คุณควรหาพวกเขา ฉันเพียงรู้นักพัฒนาที่ดีไม่กี่จากห้อง JS chat.SO ฉันเดาตามความจริงแล้วไม่มีนักพัฒนา JS ที่ดีนัก JS ต้องยาก ฉันแค่คิดว่าไม่มีใครมารบกวนการเรียนรู้มันอย่างถูกต้อง
Raynos

4

คุณถาม:

ฉันมีแนวโน้มที่จะประสบปัญหา gnarly ซึ่งต้องให้ฉันเข้าใจ Javascript หรือไม่

ฉันสามารถพูดได้อย่างแจ่มแจ้งใช่ โดยทั่วไปหากคุณกำลังทำสิ่งที่น่าสนใจในบางจุดคุณจะต้องเข้าใจสิ่งที่เกิดขึ้นในระดับที่ต่ำกว่าคุณ (บางครั้ง Google + cut + paste สามารถช่วยคุณได้ แต่คุณไม่ต้องการเป็นผู้ชายคนนั้น)

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

ข้อมูล "วิธีการ" จำนวนมากที่คุณจะพบในเว็บจะเขียนด้วย JavaScript ในใจดังนั้นคุณอาจจะมีเวลาง่ายขึ้นถ้าคุณเรียนรู้วิธีการอ่าน JavaScript และแปลเป็น CoffeeScript ที่เทียบเท่า

จริงๆแล้วถ้าคุณไม่พยายามที่จะเพิกเฉยต่อความตั้งใจของคุณคุณอาจจะเลิกเรียนรู้จาวาสคริปต์ในฐานะที่เป็นผลข้างเคียงของการทำงานใน CoffeeScript ดังนั้นเพิ่งเริ่มต้นแล้ว


4

เนื่องจาก " กฎทองของ CoffeeScript คือ: 'มันเป็นเพียง JavaScript' , 'ฉันขอแนะนำอย่างน้อยก็เป็นความคุ้นเคยพื้นฐานกับ JavaScript โดยเฉพาะอย่างยิ่งมีลักษณะที่ดักลาส Crockfordหนังสือเล่มเล็ก ๆ 's, JavaScript: ส่วนดี คุณยังสามารถดูการนำเสนอเบื้องต้นของ Crockford ที่ยอดเยี่ยมเกี่ยวกับเรื่องนี้

CoffeeScript จะห่อหุ้มส่วนที่ดีของ JavaScript ในแพคเกจต่าง ๆ : " CoffeeScript เป็นการทดลองทางความคิดอย่างง่าย ๆ ที่จะจินตนาการถึงภาษาที่มีไวยากรณ์น้อยที่สุดสำหรับโมเดลวัตถุที่สวยงามที่รองรับ JavaScript " คุณไม่จำเป็นต้องรู้รายละเอียดทั้งหมด เพียงพอที่จะเข้าใจว่า JavaScript นั้นเองไม่ใช่ภาษาเชิงวัตถุ มันไม่มีชั้นเรียนเลย แต่จะใช้ " ต้นแบบ " และสร้างความแตกต่างจากภาษา OO อื่น ๆ Jeremy Ashkenasทำความสะอาดส่วนที่ไม่ดีของไวยากรณ์ JavaScript เพิ่มการปรับปรุงบางส่วนและทำให้Python -esque เพิ่มขึ้นอีกเล็กน้อย

JavaScript มี "gotchas" ที่เป็นที่รู้จักกันดีในการระวัง ไม่อย่างนั้นมันเป็นภาษาที่ยอดเยี่ยมและใช้กันอย่างแพร่หลายในทุกวันนี้ เราจะไม่มี AJAX หรือ jQuery หากไม่มีมันเหนือสิ่งอื่นใด

ขอให้โชคดีกับ CoffeeScript ของคุณ!


ซื้อชิ้นส่วนที่ดี อย่าเป็นคนไร้ฝีมือ!
Raynos

@ Raynos - ฉันทำ ฉันไม่! : D แต่ฉันลบข้อเสนอแนะการค้นหาที่อาจไม่เหมาะสม ขอบคุณที่ชี้นำ!
John Tobler

3

ใช่. มันไม่ใช่จุดจบของโลกถ้าคุณไม่ทำ แต่ใช่

ทำไม? ก่อนอื่นจาวาสคริปต์นั้นง่ายต่อการเรียนรู้ ฉันใช้เวลา 4 วันในการเรียนรู้อย่างแท้จริง นอกจากนี้ฉันเชื่อว่ามันมีค่ามากกว่า CoffeeScript ฉันไม่คิดว่าคุณจะต้องใช้ CoffeScript แต่มันก็ยังเป็นเครื่องมือที่ดี


3
ฉันเรียนรู้จาวาสคริปต์มาหลายปีแล้วและฉันก็ยังคงไม่พูดว่าฉันรู้จัก บางครั้งฉันค้นพบสิ่งต่าง ๆ เกี่ยวกับมันที่ทำให้ฉันประหลาดใจ มันอาจเป็นเรื่องง่ายที่จะเรียนรู้วิธีการทำ "Hello World" แต่การเรียนรู้ที่จะทำนายพฤติกรรมของการแปลงและการปิดโดยปริยายนั้นไม่ใช่
ซัค

@Zach คุณอาจจะสนใจในหนังสือJavaScript ตรัสรู้ อ่านรีวิวหนึ่ง: "อันที่จริงแล้วฉันไม่พบอะไรที่ขาดหายไปจริงๆถ้าคุณเคยสงสัยว่าทำไม JSLint ถึงบ่นเกี่ยวกับบางสิ่งบางอย่าง
Michelle Tilley

1
การปิด @ Zach นั้นไม่ใช่เรื่องยากการแปลงเป็นเรื่องที่เจ็บปวด ปัญหาใหญ่ของ JS คือการรู้ว่า IE รุ่นเก่ากำลังทำอะไรอยู่
Raynos

@Zach: ฉันรู้ว่าฉันไม่รู้จัก Javascript ทั้งหมด ฉันยังไม่ปิด แต่ฉันรู้ว่าพื้นฐานและเนื้อหาขั้นกลางบางอย่างนั้นง่ายต่อการเรียนรู้
ไดนามิกใน

0

มันขึ้นอยู่กับ.

ถ้า CoffeeScript มีบทคัดย่อจาวาสคริปต์เพียงพอดังนั้นคุณไม่จำเป็นต้องรู้ (เช่นภาษา C # abstracting Intermediate Language) ใช่คุณสามารถทำสิ่งที่คุณต้องการทำใน CoffeeScript โดยไม่ต้องเรียนรู้ JavaScript

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

ใช่คุณถูก. ในขณะที่ไวยากรณ์ JavaScript นั้นง่ายและคุณสามารถเรียนรู้ได้ในจุดอ่อน แต่คุณต้องใช้เวลาหลายปีกว่าจะเชี่ยวชาญ

IMHO อย่างที่ฉันเห็น CoffeeScript มันยังไม่โตพอที่จะรวมความซับซ้อนทั้งหมดของ JavaScript ได้ทั้งหมด ดังนั้นฉันจึงไม่เสี่ยงที่จะไม่เรียนรู้หรือทำงานกับ JavaScript โดยตรง


CoffeeScript เป็นนามธรรมที่บางมาก คุณสามารถเรียนรู้ coffeescript โดยตรง แต่การดีบัก js ที่คอมไพล์แล้วจะเป็นความเจ็บปวด "ทำให้มือของฉันสกปรกและเขียนจาวาสคริปต์ที่บริสุทธิ์" JavaScript ไม่สกปรก
Raynos

1
@ เรย์มอนด์ฉันไม่ได้หมายความว่า JavaScript สกปรก :) นี่เป็นการแสดงออกถึงความหมายที่คุณควรเข้าสู่เลเยอร์ที่ลึกซึ้งยิ่งขึ้น
Saeed Neamati

นั่นคือการพูดว่า "ฉันกำลังเขียนโปรแกรมบางเกมทำให้มือของฉันสกปรกและเขียน c ++" หรือ "ฉันกำลังทำ AI บางอย่างทำให้มือของฉันสกปรกและเขียน LISP" เลเยอร์พื้นฐานที่ลึกกว่าที่เรามีในเบราว์เซอร์คือ NaCl
Raynos

0

เอกสาร coffeescript กำหนด coffescript ในแง่ของจาวาสคริปต์ที่เทียบเท่า หากคุณไม่เข้าใจจาวาสคริปต์คุณจะไม่เข้าใจ coffeescript เช่นกัน

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