ในขณะที่คำถามคือ "วัตถุประสงค์ของภาษาเหมือนกันหรือไม่" คำถามที่แท้จริงคือ: "เราจะทำให้การเขียนโปรแกรมเว็บดีขึ้นจากที่ที่เราอยู่ได้อย่างไร" .
ทั้งสองโครงการพยายามทำสิ่งนี้เพื่อพิจารณา
ภาษาการเขียนโปรแกรม (TypeScript ทำให้ขั้นตอนเล็ก แต่สะอาดมาก Dart ทำให้การปฏิวัติครั้งต่อไปที่ยังคงเคลื่อนไหวอยู่)
การทำงานร่วมกันกับรหัส js ที่มีอยู่ (0 การเปลี่ยนแปลงใน TypeScript ซึ่งคอมไพล์กับ js, ซับซ้อนใน Dart เนื่องจาก 2 VMs พูดคุยกัน)
การปฏิบัติด้านวิศวกรรมซอฟต์แวร์ (Dart only, web component และ shadow dom)
ในช่วง 3 วันที่ผ่านมาฉันดำดิ่งสู่ Dart และจากนั้นเข้าสู่ TypeScript รหัสฐาน CoffeeScript ของฉันไปที่รหัสบรรทัด 2000s มากเกินไปที่จะจัดการกับ CoffeeScript ที่น่ารัก แต่นุ่มเกินไป ปัญหาที่ฉันเผชิญคือ CoffeeScript ขาดคุณสมบัติที่ภาษาที่ออกแบบมาสำหรับการเขียนโปรแกรมระดับกลางถึงขนาดใหญ่ ได้แก่ อินเตอร์เฟสโมดูลความปลอดภัยของประเภท แต่มีหนึ่งแม้จะมากปัญหาที่รุนแรงมากขึ้นด้วยเครื่องชงกาแฟและ js: ผู้ js ชี้ "นี้" ความแปลกประหลาดได้รับผลกระทบสุขภาพจิตของฉันและ CoffeeScript ไม่ได้ช่วยอะไรที่นี่
ดังนั้นที่นี่ผลลัพธ์ของฉันหลังจาก 3 วันของการประเมินผลและการใช้งาน:
โผ
ไปอย่างทั่วถึงผ่านการกวดวิชาอ่านหนังสือ 1 เล่ม skimming หนังสือเล่มที่ 2 และพยายามสาธิต ฉันคิดว่าโผที่เป็นอนาคต จากนั้นฉันพยายามย้ายแอพของฉันไปที่ Dart นั่นคือความกระตือรือร้นของฉันลดลงจาก 100 เป็น 10 นี่คือเหตุผล:
แก้ไขโผเป็นวิธีเดียวที่จะเขียนโปรแกรมโผ ในขณะที่ปลั๊กอินสำหรับ Sublime Text มีอยู่พวกเขาไม่ได้จัดเตรียมคุณสมบัติเช่นการใช้งานภายในระบบการเติมเต็มโค้ด (แก้ไขฉันหากฉันผิด) Dart Editor เป็นอย่างไรก็ตามในคุณภาพก่อนอัลฟา ในขณะที่มันรองรับสิ่งมหัศจรรย์ supercool เช่นการปรับปรุงหน้าเว็บเมื่อคุณแก้ไขไฟล์ CSS (! เจ๋งจริง ๆ ) มันแฮงค์หรือล้มเหลวหลายครั้งต่อนาที ดังนั้นคุณพิมพ์ตัวอักษร 5 ตัวและ 2 ครั้งคุณต้องรอ 2 วินาทีหรือ 15 วินาทีระหว่างการพิมพ์ และฉันมีโครงการที่มีโค้ดบางบรรทัดดังนั้นไม่ต้องการรอสิ่งที่เกิดขึ้นเมื่อมีบรรทัด 1,000 บรรทัดย้ายไฟล์จากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งภายใน Dart Editor เกิดความผิดพลาด แก้จุดบกพร่องด้วย Dart Editor นั้นเป็นที่แรกที่เห็นได้ดีกว่าเครื่องมือแก้จุดบกพร่อง js ทั้งหมดที่ฉันรู้ (chrome เป็นตัวเลือกของฉัน) แต่ยังมีหลายสิ่งที่ขาดหายไป: ไม่มีหน้าต่างทันที (ซึ่งทำให้ js ดีขึ้นมากในขณะนี้)
ความเป็นไปได้ทางการเมืองและการหลบหนี : บางคนบอกว่า Apple, MS และ Firefox จะไม่ให้ Dart VMs ดีฉันไม่แน่ใจ แต่อย่างน้อยสำหรับ Apple นี้ปรากฏขึ้นในขณะนี้แน่นอนมาก สำหรับคนอื่น ๆ มันมีแนวโน้มมากกว่าที่ตรงกันข้าม ดังนั้นไม่มีปัญหาเราสามารถแปลง Dart เป็น JavaScript วิธีการรวมนี้ใช้งานได้ดีจริงๆ Dart รักษา js stub ที่เก็บรหัส js ที่เชื่อมต่อกับ Dart Editor ดังนั้นprint()
คำสั่งยังคงปรากฏใน Dart Editor เย็น แต่ที่นี่มา แต่: รอยเท้าของรหัสแปลงดังกล่าวสูง ประมาณ 150kB (ก่อนการลดขนาด) ฉันไม่ได้ขุดมากเกินไปในขนาดที่แน่นอนดังนั้นอย่าตอกตะปูลงบนสิ่งนี้
ครบกําหนดภาษา นอกเหนือจากปัญหาที่ร้ายแรงเกินไปที่ Dart Editor โผล่เข้ามาในใบหน้าของฉัน 3 ครั้งต่อนาทีฉันก็พบว่าไม่สามารถยอมรับได้ว่าทุกแหล่งที่มาเกี่ยวกับรหัส Dart ที่คุณพบนั้นใช้ Dart ที่แตกต่างกัน ภาษาเปลี่ยนไปทุกวัน คุณพบโพสต์จาก 5 สัปดาห์ที่ผ่านมา? มันล้าสมัยแล้ว คุณลองตัวอย่างจากการสอนของ Google? ตัวอย่างอย่างน้อย 1 รายการไม่ได้รวบรวมตั้งแต่ API เปลี่ยนไป แม้แต่เรื่องธรรมดา ๆ เช่นการแนบเหตุการณ์ไปยังองค์ประกอบ DOM ก็เป็นไปได้ด้วยดี
การรวมเข้ากับไลบรารี js ที่มีอยู่นั้นมีส่วนเกี่ยวข้องบ้างเล็กน้อย 2 VMs ต้องสื่อสารที่นี่มันยุ่งยาก
โดยสรุปคุณไม่สามารถใช้ Dart อย่างจริงจังในวันนี้และการดำน้ำในนั้นไม่สนุกมากนักเนื่องจากข้อ 1 และ 3 ทั้งสองประเด็นจะหายไปเมื่อเวลาผ่านไป ประมาณ 2 จุด Google ได้เผยแพร่การวัดประสิทธิภาพเมื่อหลายวันก่อนแสดงให้เห็นว่า js ที่คอมไพล์แล้วดีกว่า js ที่เขียนด้วยลายมือ คำชมเชยงานที่ยอดเยี่ยมของฉัน เวลาในการโหลดอาจยังค้างอยู่เนื่องจากปัญหารอยเท้าดังกล่าว อย่างไรก็ตามหากมีการใช้รหัสรอยเท้าในหลาย ๆ ไซต์ก็อาจมีแคชและข้อความเสียงหายไปเช่นกัน
ดังนั้น: ฉันคิดว่า Dart เป็นโครงการที่ยอดเยี่ยมการใช้งานในขณะนี้มีความเสี่ยงที่คาดเดาไม่ได้และจะใช้เวลาปีนี้เพื่อให้ได้ระดับที่มั่นคง
สิ่งที่พิมพ์ด้วยพิมพ์ดีด
การประเมิน TypeScript นั้นง่ายมากใช้เวลา 1 หรือ 2 ชั่วโมงและคุณรู้ทุกอย่าง การอ่านเอกสารข้อมูลภาษาและหนังสือสั้น ๆ (TypeScript เปิดเผย) เปิดเผยฉันรู้ทุกอย่างและเริ่มเขียนโปรแกรม ฉันแล้วก็ต้องประหลาดใจเมื่อพบว่าการเพิ่ม typescript เพื่อ JavaScript เพียงแค่กรอกทุกความต้องการอย่างจริงจังผมมีการเขียนโปรแกรมเพื่อเพิ่มลูกค้าของฉัน ไฮไลท์ที่นี่:
อินเตอร์เฟซ การห่อหุ้มและส่วนต่อประสานช่วยให้ฉันสามารถจัดโครงสร้างรหัสได้อย่างง่ายดาย ที่สมบูรณ์แบบ!
ระดับรัฐ . TypeScript อนุญาตให้แสดงสถานะที่อินสแตนซ์ของคลาสดำเนินการอย่างชัดเจนหรือดีกว่าบังคับให้มัน นี่เป็นขั้นตอนที่ใหญ่กว่าเมื่อเทียบกับ js หรือกาแฟ
this
เรียกความบ้าคลั่งลดลง ฟังก์ชันลูกศรภายใน TypeScript ทำให้this
ตัวชี้เหมือนกับพลเมืองทั่วไปที่มีพฤติกรรม
บรรณาธิการ, Intellisense TypeScript มาพร้อมกับ Intellisense ที่สมบูรณ์แบบสูงสุด 100% ที่ตอบสนองในช่วงไมโครหรือมิลลิวินาทีที่ใช้จาก Visual Studio เมื่อตั้งโปรแกรม C # ส่วนหัว typescript สำหรับห้องสมุด js ที่สำคัญทั้งหมดที่มีอยู่มากเกินไป ยิ่งใหญ่ยิ่งใหญ่ยิ่งใหญ่
ประสบการณ์และความเสี่ยง การใช้ TypeScript มีความเสี่ยงเป็นศูนย์ภาษามีการกำหนดไว้อย่างชัดเจนมั่นคงอย่างสมบูรณ์แบบมันเป็นเพียง js กับน้ำตาลไม่มีอะไรมองไม่เห็น
ที่จริงแล้วการปรับปรุงเหล่านี้ให้ทุกอย่างที่ฉันต้องการ สิ่งเดียวที่ฉันอยากเห็นในอนาคตคือคอลเล็กชันทั่วไป แต่นั่นคือถั่วลิสง
แล้วเรื่องประสิทธิภาพล่ะ ในขณะที่ฉันพิจารณาตัวเองว่าเป็นคนที่คลั่งไคล้ในการแสดง แต่ฉันไม่เชื่อว่าจะมีโครงการใดที่จะเลือกเทคโนโลยีที่นี่ตามประสิทธิภาพ ทั้งสองอยู่ใน js liga
หากคุณสนใจในอนาคตของการเขียนโปรแกรมเว็บทั้งสองเป็นความพยายามที่ยอดเยี่ยม TypeScript นั้นสามารถใช้งานได้จริงมากขึ้นในขณะนี้ Dart เป็นโครงการทดลองที่น่าสนใจมากซึ่งจะสามารถใช้งานได้เมื่อบรรณาธิการและ debuggers พร้อมใช้ มันจะขึ้นอยู่กับการเมือง
ไม่ว่าในกรณีใด 3 วันที่สนุกที่สุดและฉันเรียนรู้มากถ้าคุณหาเวลามันใช้เวลา 1 วันสำหรับ Dart และ 2 ชั่วโมงสำหรับ TypeScript เพื่อแสดงความคิดเห็นของคุณเอง ลองมัน.
อัปเดตตุลาคม 2557
มันผ่านมานานแล้วและโพสต์อดีตมันดูเหมือนว่าสมมติฐานที่ typescript เป็นเส้นทางที่ปลอดภัยที่จะไปค่อนข้างถูกต้อง ฉันเพิ่งพบคำสั่งที่โดดเด่น (มาก) เกี่ยวกับ Typescript, Dart and Closure:
ฉันสนใจความท้าทายของการเขียนโปรแกรมเว็บขนาดใหญ่มาระยะหนึ่งแล้ว ฉันเชื่อว่าในปัจจุบัน Google ปิดยังคงเป็นตัวเลือกที่ดีที่สุดสำหรับการพัฒนา JavaScript / เว็บขนาดใหญ่ แต่ในที่สุดมันก็จะถูกแทนที่ด้วยบางสิ่งที่มีความละเอียดน้อยกว่า ถึงแม้ว่าโผจะแสดงคำสัญญามากมาย แต่ฉันก็ยังตกใจกับขนาดของจาวาสคริปต์ที่มันสร้างขึ้น โดยการเปรียบเทียบถ้า TypeScript สามารถแปลโดยตรงไปยัง JavaScript ที่สามารถรวบรวมโดยใช้โหมดขั้นสูงของการปิดคอมไพเลอร์แล้วเราจะได้รับประโยชน์ทั้งหมดของ JavaScript ที่ดีที่สุดจากการปิดโดยไม่ต้องใช้คำฟุ่มเฟือย มีอะไรเพิ่มเติมเนื่องจาก TypeScript เป็นชุดของ JavaScript ฉันเชื่อว่าส่วนขยายไวยากรณ์มีโอกาสที่จะทำให้เป็นมาตรฐาน ECMAScript ในบางจุด
http://blog.bolinfest.com/2013/01/generating-google-closure-javascript.html
Michael Bolin เป็นเวลานาน (อดีต) google (อดีต) fb ฮีโร่ฝ่ายหน้านอกจากนี้ยังมีส่วนร่วมในการปิด google (รับหนังสือของเขาเกี่ยวกับการปิด)
Google Traceur
การประเมินของ Google ในการใช้ชีวิต ECMA Script 6 วันนี้เป็นโครงการ Traceur:
https://github.com/google/traceur-compiler
เมื่อเทียบกับ typescript แล้วการสนับสนุนการใช้เครื่องมือถือว่าอยู่ไกลมากจนถึงทุกวันนี้ อย่างไรก็ตามในทางกลับกันมันเร็วกว่ามากในการใช้ภาษา js ในอนาคตที่ยอดเยี่ยมเช่นการทำซ้ำหรือความเข้าใจ
กระแส Facebook, Google AtScript
ให้คุณสมบัติที่คล้ายกันเป็น TypeScript
"ใครบางคนอาจสงสัยว่ามีอะไรบ้างในโซลูชันการตรวจสอบประเภท JavaScript ที่แตกต่างกันเหล่านี้และสิ่งที่ต้องทำเกี่ยวกับเรื่องนี้ข่าวดีก็คือ Microsoft, Facebook และ Google กำลังร่วมมือกันในเรื่องนี้
ทีม TypeScript ทำงานร่วมกับทั้งทีม Flow และ AtScript เพื่อช่วยให้แน่ใจว่าทรัพยากรที่สร้างขึ้นโดยชุมชนการพิมพ์ JavaScript สามารถใช้กับเครื่องมือเหล่านี้ได้ มีโครงการจำนวนมากที่สามารถเรียนรู้จากกันและกันและเรารอคอยที่จะทำงานร่วมกันต่อไปและสร้างเครื่องมือที่ดีที่สุดที่เราสามารถทำได้สำหรับชุมชน JavaScript ในระยะยาวเราจะทำงานเพื่อพับคุณสมบัติที่ดีที่สุดของเครื่องมือเหล่านี้ลงใน ECMAScript ซึ่งเป็นมาตรฐานที่อยู่เบื้องหลัง JavaScript "
บทความ infoq เกี่ยวกับการไหลของ FB