หนังสือเรียนเบื้องต้นที่เขียนโดยชาวเน็ต โคแลนท์ (กรุณาเข้าสู่ระบบเพื่อดาวน์โหลด)
แนะนำภาษา Ruby การติดตั้ง Rails และตัวอย่างง่ายๆ มีประโยชน์มากสำหรับผู้เริ่มต้น ขอแนะนำ!
หากคุณมีส่วนร่วมในการพัฒนา j2ee ในฐานะโปรแกรมเมอร์ Java คุณจะต้องใช้ Application Framework มากมายอย่างแน่นอน ไม่มีภาษาใดที่ใช้งานได้ดีเท่ากับชุมชนภาษา Java และแนวคิดการเขียนโปรแกรมใหม่ใดๆ จะมีการใช้งานโอเพ่นซอร์สที่สอดคล้องกันบนอินเทอร์เน็ตในไม่ช้า ตามรูปแบบการพัฒนาเว็บไซต์ที่ใช้บ่อยที่สุด แต่ละเลเยอร์จะมีเฟรมเวิร์กจำนวนมาก Struts และ Tapestry เป็นของเลเยอร์คอนโทรลเลอร์ (C) และเฟรมเวิร์ก Velocity เป็นของเลเยอร์มุมมอง (V) เป็น Hibernate, iBatis, OJB หรือการใช้งานโอเพ่นซอร์สมากมายของ JDO เช่น JPOX แต่การมีทางเลือกมากเกินไปก็ไม่จำเป็นต้องเป็นสิ่งที่ดี และไม่ใช่ทุกคนที่จะสามารถนำกรอบการทำงานที่ถูกต้องมาทำสิ่งที่ถูกต้องได้ หากแพลตฟอร์มการพัฒนาของคุณคือ .net คุณอาจหลีกเลี่ยงสถานการณ์นี้ได้ โดยปกติคุณจะต้องติดตั้ง Visual Studio .net เป็นเครื่องมือในการพัฒนา จากนั้นจึงติดตั้ง MSDN เพื่อค้นหาข้อมูล สำหรับนักพัฒนาโปรแกรม นี่เป็นสถานการณ์ที่ยากลำบากมาก โดยส่วนตัวแล้วฉันชอบ Java มาก ไม่ว่าจะเป็นการเรียนรู้หรือฝึกฝน มันให้อะไรกับเรามากมาย แต่ทำไมฉันถึงคิดว่าโซลูชันแบบ "ครบวงจร" เช่น .net นั้นถูกต้องหลายครั้ง
ในฐานะโปรแกรมเมอร์ Java ฉันคิดว่าปัญหาที่ชัดเจนบางประการเกี่ยวกับ Java คือประการแรก Java นั้นซับซ้อนเกินไป และประการที่สอง Java นั้นเน้นโปรแกรมเมอร์มากเกินไป ไม่ใช่เน้นผู้ใช้ เมื่อเปรียบเทียบกับ C++ แล้ว Java นั้นง่ายมากอยู่แล้ว ความจริงที่ว่าตอนนี้มีโปรแกรมเมอร์ Java จำนวนมากแสดงให้เห็นประเด็นนี้ แต่อย่างที่ใครบางคนเคยกล่าวไว้ว่า "บน Linux คุณสามารถบอกได้อย่างง่ายดายว่าใครคือปรมาจารย์" แต่ไม่ใช่เรื่องง่ายในฟิลด์ Java ฉันมักจะพบว่าเพื่อนร่วมงานรอบตัวฉันยังคงทำผิดพลาดทางแนวคิดในระดับต่ำมาก พวกเขายังสามารถมีส่วนร่วมในการพัฒนา j2ee เป็นเวลาหลายปี แม้ว่าพวกเขาจะไม่สามารถแยกแยะได้อย่างแม่นยำว่าอินเทอร์เฟซ คลาสนามธรรม และ Servlets คืออะไร แต่เหตุใด Java จึงมีความซับซ้อน เนื่องจากต้องใช้เทคโนโลยีที่แตกต่างกันมากเกินไปในการทำสิ่งหนึ่งให้สำเร็จ ดังนั้นสำหรับโปรแกรมเมอร์ที่ไม่มีแนวคิดที่ชัดเจน คุณจะมั่นใจได้อย่างไรว่าพวกเขาตัดสินใจได้ถูกต้อง? และมีเฟรมเวิร์กกี่ตัวจากทั้งหมดที่ให้บริการแบบ "ครบวงจร"? Spring Framework ที่เพิ่งเกิดขึ้นเมื่อเร็ว ๆ นี้ให้บริการได้มากที่สุดในหลาย ๆ เฟรมเวิร์ก แต่มีปัญหาใหม่นั่นคือยังคงเน้นไปที่โปรแกรมเมอร์มากเกินไป ไม่ใช่ผู้ใช้ ทำไมคุณถึงพูดอย่างนั้น? เดิมทีเฟรมเวิร์กได้รับการออกแบบมาสำหรับโปรแกรมเมอร์ใช่ไหม แม้ว่า Spring จะมีตัวเลือกมากมาย (แต่ยังไม่เพียงพอ มันไม่มี ORM ในตัวมันเอง) แต่มันก็ไม่ได้มีวิธีการใช้งานที่ง่าย ดังนั้นเราจึงบอกได้แค่ว่ามันมีไว้สำหรับโปรแกรมเมอร์เท่านั้น กรอบงาน Java ส่วนใหญ่มีปัญหานี้ กล่าวคือ เส้นโค้งการเรียนรู้ค่อนข้างสูง ฉันคิดว่าระดับของเส้นโค้งการเรียนรู้เป็นกุญแจสำคัญในการแยกแยะว่ากรอบงานมีไว้สำหรับโปรแกรมเมอร์หรือผู้ใช้ ฉันคิดว่าสิ่งนี้สะท้อนให้เห็นเป็นหลักในการใช้งานกรอบงานได้ง่าย ที่จริงแล้ว ผู้ใช้เฟรมเวิร์กขั้นสูงสุดก็คือโปรแกรมเมอร์ สาเหตุที่เราใช้ "ผู้ใช้" และ "โปรแกรมเมอร์" เพื่อแยกแยะก็เพราะว่าเฟรมเวิร์กบางตัวสำหรับ "โปรแกรมเมอร์" นั้นใช้งานยาก แม้ว่าพวกเขาจะให้โครงสร้างพื้นฐานและชิ้นส่วนจำนวนมากก็ตาม ยังต้องการให้โปรแกรมเมอร์ประกอบเอง เฟรมเวิร์กที่มุ่งเน้น "ผู้ใช้" นั้นง่ายกว่า ผู้ใช้จะต้องปฏิบัติตามคำแนะนำเท่านั้นจึงจะใช้งานได้ เหตุใด Ruby on Rails จะทำให้เกิดความรู้สึกในชุมชน Java ฉันคิดว่าเหตุผลก็คือว่ามันให้เฟรมเวิร์กที่มุ่งเน้นผู้ใช้แบบ "ครบวงจร" เรียบง่ายและใช้งานง่าย ซึ่งยังขาดในเฟรมเวิร์ก Java ทำไม Ruby on rails ถึงทำได้ เป็นไปได้ไหมที่ Java เองก็ทำไม่ได้? ความจริงก็คือนักออกแบบเฟรมเวิร์ก Java จำนวนมากไม่ทำเช่นนี้ อาจเป็นได้ว่าความคิดของพวกเขาถูกจำกัดอยู่เพียงวิธีใช้รูปแบบเพื่อออกแบบเฟรมเวิร์กที่ดี และพวกเขาไม่ได้ทำอะไรเพิ่มเติมเกี่ยวกับความง่ายในการใช้งานของเฟรมเวิร์ก ใครก็ตามที่เคยใช้ Spring รู้ดีว่าไฟล์การกำหนดค่า xml ของมันจะค่อยๆ ขยาย แม้ว่าเราจะสามารถแยกออกเป็นไฟล์การกำหนดค่าขนาดเล็กลงเพื่อแก้ไขปัญหานี้ได้อย่างง่ายดาย แต่ในการใช้ไฟล์การกำหนดค่า xml นั้นเป็นไปตามแนวคิดจารีตประเพณีของการเขียนโปรแกรม Java: "Java เป็นภาษาโปรแกรมที่ดีที่สุด XML เป็นภาษาที่ดีที่สุดสำหรับการอธิบายข้อมูลและการรวมกันของทั้งสองจะสมบูรณ์แบบที่สุด หากแอปพลิเคชันไม่ได้ใช้ xml เพื่ออธิบาย แสดงว่าไม่ใช่แอปพลิเคชัน Java ที่ดี"
อย่างไรก็ตาม เมื่อถึงจุดนี้เองที่ Ruby on Rails มีความโดดเด่นจากเฟรมเวิร์ก Java จำนวนมาก และประสบความสำเร็จในการพัฒนาในด้านความง่ายในการใช้งานของเฟรมเวิร์ก แนวคิดนี้ดำเนินการผ่านการออกแบบ Rails ทั้งหมด: แบบแผนเหนือการกำหนดค่า ตัวอย่างเช่น เมื่อเราเขียนแอปพลิเคชันเว็บ Java เรามักจะแยกแยะคลาสที่เกี่ยวข้องตาม MVC โดยส่วนตัวแล้วฉันชอบที่จะวางคลาส Controller ไว้ในไดเร็กทอรีเว็บ คลาส View ในไดเร็กทอรีมุมมอง และคลาสโมเดลในไดเร็กทอรีโดเมน . แต่แต่ละคนมีการตั้งค่าและชื่อที่แตกต่างกัน จะทำให้เฟรมเวิร์กทราบไดเร็กทอรีที่แตกต่างกันเหล่านี้ได้อย่างไร ทางออกเดียวสำหรับเฟรมเวิร์ก Java คือแจ้งให้เฟรมเวิร์กทราบข้อมูลนี้ผ่านไฟล์คอนฟิกูเรชัน xml วิธีแก้ปัญหาของ Rails คือ: ฉันกำหนดโครงสร้างไดเร็กทอรี และคุณเพียงแค่ต้องใส่สิ่งต่าง ๆ ลงในไดเร็กทอรีที่ฉันกำหนดไว้ นี่เป็นเหตุผลสำคัญว่าทำไมจึงมีไฟล์การกำหนดค่าใน Rails น้อยมาก (แต่ไม่มีเลย) แม้ว่าแนวคิดจะเรียบง่ายมาก แต่ข้อดีที่ได้คือประสิทธิภาพการพัฒนาของ Rails นั้นมากกว่าการพัฒนา Java ถึง 10 เท่า (ซึ่งแฟน ๆ ของ Rails อ้างสิทธิ์ แต่ฉันเชื่อสิ่งนี้ และฉันเชื่อว่าคุณจะรู้เช่นกันหลังจากอ่านบทความนี้ ) . สิ่งนี้เพียงอย่างเดียวทำให้การพัฒนา Rails เร็วกว่าการใช้ Java หรือไม่? ไม่ใช่ทั้งหมด เนื่องจากสิ่งนี้ยังได้รับประโยชน์จากปรัชญาการออกแบบรางอีกแบบหนึ่ง นั่นคือ ใช้โค้ดน้อยลง ไม่มีภาษาใดสามารถอ้างได้ว่า Rails ประสบความสำเร็จได้ทั้งหมดด้วยภาษาการออกแบบ Ruby ด้วย Ruby คุณสามารถเขียนฟังก์ชันต่างๆ มากมายในภาษาเล็กๆ น้อยๆ ซึ่งภาษาอื่นๆ ไม่สามารถทำได้ หากต้องการเชี่ยวชาญ Rails คุณต้องเข้าใจ Ruby มีคนเคยกล่าวไว้ว่า: Zope (เฟรมเวิร์กเว็บของ Python ที่มีชื่อเสียง) เป็นแอปพลิเคชั่นที่ยอดเยี่ยมของ Python และ Python ก็เป็นอาวุธลับของ zope ฉันคิดว่าประโยคนี้เหมาะสมที่สุดในการอธิบายความสัมพันธ์ระหว่างรางกับทับทิม
ขยาย