ฉันมีความคิดว่าฉันกำลังเรียนรู้ Java เป็นภาษาที่สองของฉัน (ฉันเป็นนักพัฒนา Perl) แต่จากการอ่านบทเรียนออนไลน์เล็ก ๆ น้อย ๆ ฉันไม่สามารถหาความคล้ายคลึงกันระหว่างทั้งสองได้ ฉันจะเข้าใจอะไรได้ง่ายเมื่อเรียนรู้ Java
ฉันมีความคิดว่าฉันกำลังเรียนรู้ Java เป็นภาษาที่สองของฉัน (ฉันเป็นนักพัฒนา Perl) แต่จากการอ่านบทเรียนออนไลน์เล็ก ๆ น้อย ๆ ฉันไม่สามารถหาความคล้ายคลึงกันระหว่างทั้งสองได้ ฉันจะเข้าใจอะไรได้ง่ายเมื่อเรียนรู้ Java
คำตอบ:
Perl เป็นภาษาโปรแกรมระดับสูง, มีวัตถุประสงค์ทั่วไป, แบบหลายกระบวนทัศน์, ตีความ, แบบไดนามิก Java เป็นภาษาระดับสูงที่มีวัตถุประสงค์ทั่วไปส่วนใหญ่เป็นกระบวนทัศน์แบบเดี่ยวภาษาการเขียนโปรแกรมแบบคงที่
ดังนั้นทั้งสองระดับสูง :
ภาษาโปรแกรมระดับสูงเป็นภาษาโปรแกรมที่มีนามธรรมสูงจากรายละเอียดของคอมพิวเตอร์
และวัตถุประสงค์ทั่วไป :
ในซอฟต์แวร์คอมพิวเตอร์ภาษาโปรแกรมวัตถุประสงค์ทั่วไป (GPL) เป็นภาษาโปรแกรมที่ออกแบบมาเพื่อใช้ในการเขียนซอฟต์แวร์ในหลากหลายแอพพลิเคชั่นโดเมน
โดยพื้นฐานแล้วสิ่งนี้หมายความว่าทุกสิ่งที่คุณสามารถทำได้ด้วย Perl คุณสามารถทำได้ด้วย Java และเป็น @KyleHodgson กล่าวทั้งไวยากรณ์ของพวกเขาได้รับจาก C และ C ++ และไวยากรณ์สำหรับสิ่งที่ง่ายๆเช่นfor
loops และif
งบเป็นหลักเดียวกัน - และ @DipanMehta บันทึกทั้งมีการเก็บขยะ และแน่นอนว่าทั้งสองเป็นที่นิยมอย่างมากและมีชุมชนที่คึกคัก
แต่นั่นคือสิ่งที่ความคล้ายคลึงกันหยุด Perl เป็นกระบวนทัศน์หลากหลายที่สนับสนุนกระบวนทัศน์การเขียนโปรแกรมที่หลากหลาย:
Perl ไม่สนับสนุนกระบวนทัศน์เดียวเพียงอย่างเดียวพวกเขามีความเท่าเทียมกันและคุณมีอิสระที่จะเลือกสิ่งที่คุณคิดว่าเหมาะสมที่สุดกับสิ่งที่คุณกำลังสร้างโดยที่ไม่ จำกัด คุณไว้เพียงกระบวนทัศน์เดียว ในทางกลับกัน Java ส่วนใหญ่เป็นภาษาเชิงวัตถุตามระดับ มีการสนับสนุนสำหรับการเขียนโปรแกรมทั่วไป แต่ในฐานะผู้เริ่มต้นคุณควรนึกถึง Java ว่าเป็นภาษาเชิงวัตถุที่เน้นคลาสอย่างเคร่งครัด
Perl อนุญาตให้มีมากกว่าหนึ่งวิธีในการจัดโครงสร้างโค้ด1ของคุณในขณะที่ Java มีเพียงวิธีเดียว นั่นไม่ใช่สิ่งเลวร้าย (หรือสิ่งที่ดี) มันแตกต่างกัน หากคุณยังไม่ได้เขียนโค้ดเพิร์ลเชิงวัตถุใด ๆ จาวาอาจจะดูแปลกไปในตอนแรก อย่าท้อแท้การวางแนววัตถุเป็นสิ่งที่คุณจะต้องเรียนรู้ในที่สุดหากคุณกำลังพิจารณาอาชีพในการพัฒนาซอฟต์แวร์และการเรียนรู้ Java เป็นวิธีที่ดีในการเรียนรู้แนวคิดพื้นฐานของการวางแนววัตถุ - ไม่ใช่วิธีที่สมบูรณ์แบบ แต่ เป็นวิธีที่ดีอย่างแน่นอน
และที่คุณรู้ว่า Perl ถูกตีความในขณะที่ Java เป็น ... ดี ... เป็นสัตว์ที่แตกต่างกันอย่างสิ้นเชิง ใน Java คุณเขียนรหัสของคุณตามที่คุณต้องการใน Perl และจากนั้นคุณรวบรวมมัน ผลที่ได้คือไม่ได้เป็นปฏิบัติการ แต่Java bytecode รูปแบบตัวกลางนี้จะถูกดำเนินการ (ในที่สุด!) ในJava Virtual Machineซึ่งค่อนข้างคล้ายกับล่าม Perl JVM จะต้องติดตั้งก่อนสำหรับโปรแกรม Java เพื่อวิ่ง simirarly กับวิธีที่คุณจะต้องติดตั้งล่าม Perl เพื่อรันสคริปต์ Perl 2
สิ่งที่สำคัญที่สุดที่ต้องจำคือการคอมไพล์ไปยังขั้นตอน bytecode ที่มาจากพื้นหลัง Perl: ทุกครั้งที่คุณทำการเปลี่ยนแปลงกับซอร์สไฟล์ Java คุณต้องทำการคอมไพล์ใหม่อีกครั้ง มันอาจฟังดูบ้าในตอนแรก แต่การคอมไพล์มีผลลัพธ์ที่ดีมาก: โค้ดของคุณถูกตรวจสอบหาข้อผิดพลาดที่หลากหลายในขั้นตอนนี้และคอมไพเลอร์ปฏิเสธที่จะเสร็จสิ้นกระบวนการหากมีและบางครั้งจะช่วยให้คุณระบุข้อผิดพลาดด้วย ข้อความที่เป็นประโยชน์ (มีข้อความอยู่เสมอ แต่บางครั้งก็มีประโยชน์เท่านั้น)
ซึ่งนำเราไปสู่ความแตกต่างที่สำคัญล่าสุด:
Perl เป็นแบบไดนามิก3 :
ภาษาการเขียนโปรแกรมแบบไดนามิกเป็นคำที่ใช้กันอย่างแพร่หลายในวิทยาการคอมพิวเตอร์เพื่ออธิบายระดับของภาษาการเขียนโปรแกรมระดับสูงที่ดำเนินการที่รันไทม์พฤติกรรมทั่วไปหลายอย่างที่ภาษาอื่น ๆ อาจดำเนินการในระหว่างการรวบรวมถ้าเลย พฤติกรรมเหล่านี้อาจรวมถึงการขยายของโปรแกรมโดยการเพิ่มรหัสใหม่โดยการขยายวัตถุและคำจำกัดความหรือโดยการปรับเปลี่ยนระบบประเภททั้งหมดในระหว่างการดำเนินการโปรแกรม
และพิมพ์แบบไดนามิก4 :
ภาษาการเขียนโปรแกรมถูกกล่าวถึงว่าพิมพ์แบบไดนามิกเมื่อการตรวจสอบชนิดส่วนใหญ่ดำเนินการในเวลาทำงานซึ่งต่างจากการรวบรวมเวลา
และ Java ถูกพิมพ์แบบสแตติก :
ภาษาการเขียนโปรแกรมใช้การพิมพ์แบบสแตติกเมื่อทำการตรวจสอบชนิดในระหว่างการคอมไพล์เวลาซึ่งต่างจากเวลาทำงาน
หมายความว่าใน Java คุณต้องประกาศชนิดของตัวแปรและวิธีการก่อนที่จะใช้ มีความแตกต่างอื่น ๆ แต่ฉันไม่ต้องการที่จะทำให้เสียความสนุกในการค้นพบพวกเขาด้วยตัวเอง :)
และในที่สุดก็มีความแตกต่างที่สำคัญอย่างหนึ่ง: Java เป็นภาษาที่รักของสถาบันการศึกษา5 และโลกธุรกิจในขณะที่คุณจะไม่ค่อยพบ Perl ในสภาพแวดล้อมทางวิชาการอีกต่อไป (ที่ฉันพบเธอครั้งแรก) และมุมมองด้านอาชีพ (ยังมีงานไม่มากนัก แต่ไม่มีที่ไหนใกล้เคียงกับภาษา Java, .Net หรือ PHP) ฉันจะไม่แสดงความคิดเห็นเกี่ยวกับเหตุผลฉันเพียงแค่ระบุ (เศร้า) ข้อเท็จจริง เนื่องจากคุณยังเด็กมากการเรียนรู้ Java คุณจะมีความพร้อมมากขึ้นสำหรับปริญญาวิทยาศาสตร์คอมพิวเตอร์ถ้าคุณเลือกที่จะทำตามเส้นทางนั้น
อย่ายอมแพ้กับ Perl แน่นอน แต่อย่าสำรวจ Java ความจริงที่ว่าพวกเขาแตกต่างจากที่คล้ายกันก็หมายความว่าคุณจะได้เรียนรู้วิธีที่แตกต่างกันมากและการเขียนโปรแกรม mentallities มันเป็นเส้นทางที่ยาก แต่ในที่สุดจะทำให้คุณเป็นโปรแกรมเมอร์ที่ดีขึ้น
2ชุมชน Perl เป็นอย่างแข็งขันสำรวจ possibillity ของเครื่องเสมือน Perl ผ่านนกแก้ว
3แบบไดนามิกไม่ได้หมายถึงการพิมพ์แบบไดนามิกเสมอไป
4 Perl ถูกพิมพ์แบบไดนามิกสำหรับประเภทที่ผู้ใช้กำหนด, พิมพ์แบบคงที่เกี่ยวกับการจำแนกอาร์เรย์, แฮช, สเกลาร์, และรูทีนย่อยและพิมพ์อย่างรุนแรงผ่านทางuse strict
ดังนั้นโดยพื้นฐานแล้วมันเป็นภาษาของระบบตัวแปรชนิดต่างๆ พิมพ์
5ไปยังจุดของการละเมิดที่เป็นโจ Spolsky เขียนในมีดหมอ JavaSchools
พวกเขาทั้งคู่ใช้ C เช่นไวยากรณ์ - อัฒภาค, เครื่องหมายปีกกาและสิ่งที่คล้ายกัน โดยส่วนตัวเมื่อฉันพยายามเปลี่ยนจาก Perl เป็น Java เมื่อหลายปีก่อนสิ่งที่ยิ่งใหญ่ที่สุดที่ทำให้ฉันสะดุดคือการเขียนโปรแกรมเชิงวัตถุ ฉันพัฒนาวัตถุบางอย่างใน Perl แต่มันทำให้ฉันปวดหัวเพื่อลองจินตนาการถึงชีวิตในราชอาณาจักรคำนาม
การแทงด้วยคำตอบอื่นเนื่องจากคำตอบที่เลือกไว้ในปัจจุบันดูเหมือนจะเน้นไปที่ความแตกต่างระหว่างทั้งสอง (จริง ๆ แล้วไม่มีความคล้ายคลึงกันระหว่าง Perl และ Java)
หากโค้ด Perl ของคุณเข้มงวดมากและเป็นมุมฉาก (ทดสอบอย่างดีมีเอกสารดีใช้มูเซ่หรือการวางแนววัตถุอย่างเข้มงวด) แนวคิดเหล่านั้นจะนำไปสู่ Java ได้เป็นอย่างดีเนื่องจาก Java นั้นมีมุมฉากสูงและไม่แสดงออกอย่างชัดเจน