ทับทิมหรืองูหลาม? [ปิด]


24

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

เรื่องสั้นเรื่องสั้น - ฉันรู้สึกเหนื่อยกับการแข่งหนูและเข้าร่วมพิธีแต่งเพลงด้วยตัวเองในปีนี้ ส่วนมากจะหยุดพักจากการบด บริษัท และเดินทางไปรอบ ๆ แต่ฉันก็อยากจะเล่นกับเทคโนโลยีใหม่ ๆ และทำโครงการเรียนรู้ด้วยตนเองเพื่อให้ทันกับความเร็วในการเขียนโปรแกรมและฉันก็ชอบที่จะแก้ไข การเขียนโปรแกรมเมื่อไม่มีแรงกดดัน!

นี่คือสิ่งที่: ฉันเป็นโปรแกรมเมอร์ C / C ++ / Java ตลอดชีวิต ฉันเป็นคนหยาบคายคร่าวๆคร่าวๆตั้งแต่ฉันทำงานกับครอบครัวของภาษานี้มาตลอดอาชีพการเขียนโปรแกรมของฉัน ดังนั้นฉันต้องการเรียนรู้ภาษาที่ไม่เกี่ยวข้องกับ syntactically กลุ่มนี้ สิ่งที่ฉันกำลังมองหาคือภาษาที่ค่อนข้างมีวัตถุประสงค์ทั่วไปสนุกกับการเรียนมีแนวคิดใหม่ที่แตกต่างจาก C ++ / Java และมีชุมชนที่ดี ข้อพิจารณารองคือมีกรอบการพัฒนาเว็บที่ดี ข้อพิจารณาในระดับอุดมศึกษาคือมันไม่ได้เป็นวิชาการทั้งหมด (อ่าน: มีงานในโลกแห่งความเป็นจริงที่ใช้

ฉัน จำกัด ให้แคบลงเป็น Ruby หรือ Python ความประทับใจของฉันเกี่ยวกับ Ruby คือมันเป็นเว็บที่มุ่งเน้นอย่างยิ่ง - สิ่งเดียวที่แท้จริงของแอปพลิเคชันคือเป็นภาษาสคริปต์ฝั่งเซิร์ฟเวอร์สำหรับการทำสิ่งต่างๆบนเว็บ (ส่วนใหญ่เป็น Ruby on Rails) ฉันไม่ค่อยประทับใจ Python เลยยกเว้นว่าดูเหมือนว่าจะมีแฟน ๆ ที่หลงใหลและดูเหมือนจะเป็นภาษาที่ค่อนข้างหลากหลาย

TL; DRและทำให้ชัดเจนที่สุดเท่าที่จะเป็นไปได้: สิ่งใดบ้างที่จะดีกว่าสำหรับ C ++ / Java guy ที่จะเรียนรู้ที่จะรับมุมมองใหม่ ๆ เกี่ยวกับการเขียนโปรแกรม และจุดประสงค์ทั่วไปแบบใดที่เปิดกว้างและใช้กับชุดแอพพลิเคชันที่กว้างขึ้นได้บ้าง ฉันกำลังโน้มตัวไปหา Ruby ในตอนนี้ แต่ฉันกังวลว่ามันจะดูเหมือนว่ามันถูกใช้เป็นภาษาเว็บฝั่งเซิร์ฟเวอร์


"สำหรับงูหลามฉันไม่แน่ใจ" ของอะไร? สิ่งนี้เกี่ยวข้องกันอย่างไร
S.Lott

คุณสามารถค้นหาเพิ่มเติมได้ที่ Ruby vs Python ใน StackOverflow ฉันประหลาดใจที่เลนนาร์ทเองยังไม่ได้แสดงความคิดเห็น regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
งาน

@ S.Lott: ขออภัยไม่ชัดเจน ebough แค่หมายความว่าฉันยังไม่มีความประทับใจอย่างละเอียดของ Python เลย ยกเว้นว่ามันอเนกประสงค์และมีฐานแฟนคลับที่แข็งแกร่ง
Bobby Tables

9
Perl แน่นอน
Bruce Alderman

สิ่งนี้ตรงกับ "เทคโนโลยีอะไรดีกว่า" หมวดหมู่ของคำถามซึ่งเป็นไปตามคำถามที่พบบ่อยถือว่าเป็นนอกหัวข้อ
ChrisF

คำตอบ:


35

อย่าปล่อยให้ความจริงที่ว่า Ruby เพิ่มขึ้นในการพูดจาทั่วไปส่วนใหญ่เป็นเพราะ Rails (เว็บแอ็พพลิเคชันเฟรมเวิร์ก) หลอกคุณ เป็นภาษาโปรแกรมทั่วไปและคุณสามารถใช้เพื่ออะไรก็ได้ที่คุณสามารถใช้ภาษาอื่นได้

เล่นกับ Ruby และดูว่าคุณตกหลุมรักกับมันหรือไม่ คุณจะทำหรือไม่ทำ มันเหมือนกับเพลงของ Grateful Dead คุณอาจรักหรือไม่สามารถยืนได้

ทับทิมจะยืดสมองของคุณ ในหลาย ๆ กรณีมันอยู่ไกลจาก C ++ / Java เท่าที่คุณจะได้รับ ฉันมาจากพื้นหลัง C และ C # และฉันพบว่าไดนามิกของ Ruby และพลังการเขียนโปรแกรมเมตาจะค่อนข้างมึนเมา

ที่ถูกกล่าวว่างูหลามเป็นภาษาที่โดดเด่นอย่างแน่นอนและมันจะทำให้คุณออกจากรอยหยักของคุณ

ทำไมไม่เรียนทั้งคู่ล่ะ ฉันใช้ทั้งสองอย่างสม่ำเสมอ: Ruby สำหรับการเขียนโปรแกรมด้วย Rails และ Python สำหรับการทำงานกับ Google AppEngine


2
+1 สำหรับการอ้างอิงที่ตายแล้ว,)
cschol

1
ขอบคุณ ฉันจะไปกับทับทิมก่อนและดูว่าฉันตกหลุมรักกับมันหรือไม่ :)
Bobby Tables

8
ฉันมาช้าไปงานปาร์ตี้ แต่trypython.orgและtryruby.orgเป็นเว็บไซต์ที่ยอดเยี่ยมในการลองใช้ภาษาต่างๆ
มิเชล Tilley

17

ฉันใช้ทับทิมไม่ค่อยเป็นที่ยอมรับ แต่นี่คือความประทับใจของฉันใน Python:

  • เมื่อฉันเขียน pseudocode เพื่อดึงฟังก์ชั่นออกมาฉันพบว่าสิ่งที่ฉันเขียนในทางปฏิบัติคือ Python และบางครั้งการเขียนเล็ก ๆ น้อย ๆ ที่น่าสังเกตก็เป็นสิ่งจำเป็นเพื่อทำให้เป็นรหัสจริง คุณอาจข้าม pseudocode ทั้งหมดเข้าด้วยกันและแสดงความคิดของคุณโดยตรงใน Python
  • เมื่อฉันต้องทำอะไรบางอย่างที่ดูเหมือนว่าเป็นงานทั่วไป Python มักจะมีฟังก์ชั่นที่จำเป็น (ในระดับสูง) ติดตั้งอยู่ในไลบรารีมาตรฐาน ตัวอย่างเช่นก่อนหน้านี้เมื่อฉันต้องการเปิดไฟล์และสแกนทีละบรรทัดคำตอบนั้นง่ายเหมือน 'หาบรรทัดใน myFile: dostuff (lines)' ฉันเชื่อว่าพวกเขาเรียกวิธีการ 'รวมแบตเตอรี่' และมันแตกต่างจากภาษาอื่น ๆ ที่ฉันเคยใช้ซึ่งการทำงานประจำวันมีความยุ่งเหยิงมากขึ้น

สองสิ่งที่โดดเด่นสำหรับฉัน


ฉันคิดว่านั่นเป็นเหตุผลที่ฉันชอบ Ruby Ruby เป็น OO มากขึ้นและมีคำหลักน้อยลง เช่นในทับทิม "[1,3,5] .length ()" และ "[1..10] .each () ... " vs Python "len ([1,3,5])" และ "for i อยู่ในช่วง (1,11) "
LennyProgrammers

6
@Lenny - Ruby มีคำหลักมากกว่านี้: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - สำหรับ Python 2.6 นั่นคือ 31 คำสำคัญสำหรับ Ruby 38 นอกจากนี้ 'เพิ่มเติม OO' ใช้ค่อนข้างเป็นอัตนัยที่นี่เนื่องจากในทั้งสองภาษา "ทุกอย่างเป็นวัตถุ" ใช้ (และยิ่งกว่านั้นด้วย Python 3.x เหมือน subclasses ทุกอย่างจากobject) นอกจากนี้ยังlen(obj)เป็นทางลัดสำหรับการโทรobj.__len__()และfor i in rangeยังสรุปรายละเอียดการทำงานของวัตถุตัวกำเนิดการทำงาน ฉันคิดว่า / เทียบเท่า แต่แตกต่าง / ถูกต้องกว่า
Wayne Werner

ฉันรู้สึกว่าเลนนี่หมายความว่าคุณใช้คำหลักที่น้อยลงในข้อความทั่วไปของคุณตัวอย่างเช่น 'สำหรับฉันในช่วง (1,11) มีคำหลัก 3 คำ (สำหรับ, ใน, ช่วง) แน่นอนว่าบางครั้งคำพูดก็ดีกว่า
Andrew M

5
range ไม่ใช่คำหลักมันเป็นฟังก์ชั่น
Kugel

9

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


+1 ทั้งคู่ดูเหมือนง่ายดี ในทางกลับกัน Clojure ... มันสนุกมาก แต่ก็ยากกว่าเช่นกัน
งาน

7

IMO คุณควรไปกับ Python เหตุผลก็คือมันมีความหลากหลายมากขึ้นคุณสามารถใช้มันได้เกือบทุกอย่าง Ruby ดังที่คุณสังเกตเห็นว่ามีการใช้งานมากขึ้นในการพัฒนาเว็บเนื่องจากกรอบงานของเว็บ ซึ่งแตกต่างจาก Python Ruby ไม่ดีสำหรับการพัฒนาแอปพลิเคชัน gui เดสก์ท็อปตัวเลขการประมวลผลทางสถิติหรือโปรแกรมประมวลผลภาพ


1
คุณช่วยชี้ให้เห็นสิ่งที่ทำให้รูบี "ไม่ดีสำหรับการพัฒนาแอปพลิเคชั่น gui เดสก์ท็อป, ตัวเลข, สถิติหรือโปรแกรมประมวลผลภาพ"? เมื่อฉันเขียนโปรแกรมใน Ruby ในปี 2001/2002 ฉันก็ทำสิ่งเหล่านั้นอย่างมีความสุข
LennyProgrammers

7
@ Lenny222 ใน Ruby ไม่มีไลบรารีเช่น numpy, scipy, sympy, PIL, matplotlib ไม่ว่าจะเป็นห้องสมุดที่เป็นตัวเลขพวกเขาอยู่ห่างจาก Python มาก เช่นเดียวกับเอกสารและห้องสมุดสำหรับการพัฒนาแอปพลิเคชั่น gui
Marcin

1
คุณบอกว่า Python มีความหลากหลายมากกว่าและชี้ไปที่ไลบรารี่ว่าทำไม ฉันจะให้คุณว่ามันไม่ใช่เรื่องง่ายที่จะทำบางสิ่งใน Ruby เพราะไม่มีห้องสมุดที่ดี แต่นั่นไม่ได้หมายความว่า Ruby เองจะมีความหลากหลายน้อยกว่า
Twisol

@Twisol นั่นคือสาเหตุที่แท้จริง: Python นั้นเรียบง่ายมาก (และสอดคล้องกัน) เป็นสาเหตุที่ทำให้มันมีความหลากหลายและทำไมจึงมีไลบรารีที่มีประโยชน์มากมาย (IMO)
Nadir Sampaoli

6

ทับทิมนั้นมีความยาวมากกว่ารางราวมากดังนั้นขอให้ฉันใส่มันลงไปในโลกRuby != webนี้แม้ว่ามันจะทำได้ดีมาก มีโฮสต์ของระบบที่เกี่ยวข้องกับสิ่งที่สามารถทำได้ ดูเหมือนว่ากรอบ Rails ทั้งหมดกลืนส่วนที่เหลือของโลกทับทิม และใช่ฉันเป็นแฟนทับทิม

ในทางกลับกัน Python มีจำนวนมากและมันได้รวมเข้ากับเกือบทุกอย่างบน Linux ที่บอกฉันมันอาจจะค่อนข้างง่ายที่จะรวมเป็นโปรแกรมขนาดใหญ่ (เทียบกับ Ruby, Java, ฯลฯ ) มีโครงสร้างพื้นฐาน Ubuntu Linux ที่เขียนด้วย Python จำนวนพอใช้ซึ่งบอกฉันว่า Python มีแอปพลิเคชันในการเขียนโปรแกรมระบบ ฉันได้ยินว่ามันเป็นเว็บที่ดีมาก ๆ ฉันยังไม่ได้เล่นเลย

ที่กล่าวว่าทั้ง Ruby และ Python เป็นภาษาที่มีความสามารถเท่าเทียมกันและคุณจะพบว่ามันทำให้ชีวิตของคุณง่ายขึ้นมาก Ruby มีหัวเว็บมากขึ้นในชุมชน แต่นั่นไม่ใช่ทั้งหมดของชุมชน ฉันเคยใช้มันในโครงการโครงสร้างพื้นฐานจำนวนหนึ่งเช่นกัน


5

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

ฉันรู้ว่าคุณบอกว่าคุณ จำกัด ให้แคบลงเป็น Ruby และ Python แต่ฉันขอแนะนำให้คุณเริ่มต้นด้วย Racket (Scheme ยอดนิยม) มันถูกสร้างขึ้นเพื่อการเรียนรู้และมันจะยืดสมองของคุณไปสู่การเขียนโปรแกรมที่ใช้งานได้การเขียนโปรแกรมเชิงโต้ตอบและการพิมพ์แบบไดนามิก ไม่มีงาน (ตัวอักษรเป็นศูนย์), ชุมชนขนาดเล็กมากที่แยกส่วนและไม่มีกรอบงานเว็บที่สำคัญซึ่งเป็นเหตุผลว่าทำไมคุณไม่ติดอยู่กับมัน ทอดสมองของคุณสักครู่แล้วเดินหน้าต่อไป

ประการที่สองคุณต้องการเรียนรู้ Ruby หรือ Python สำหรับงานที่เป็นไปได้ ฉันขอแนะนำให้คุณเรียนรู้ทั้งสอง การเรียนรู้หนึ่งในสองของทั้งสองจะง่ายกว่าครั้งแรกแม้จะมีความแตกต่างของพวกเขา สำหรับงานที่เป็นไปได้ความรู้สึกของฉันคือว่ามีงานทับทิมมากกว่าเพราะ Rails แต่ฉันรู้ว่ายังมีงานของ Zope อยู่ในบริเวณนี้ ลงทุนอย่างน้อยหนึ่งตัว แต่ลองดูอีกอันอย่างน้อยก็นานพอที่จะสร้างสิ่งเล็ก ๆ

สุจริตคุณอาจจะเรียนรู้เพิ่มเติมเกี่ยวกับงานสัปดาห์แรกกับพวกเขาทั้งสองกว่าที่คุณเคยเรียนรู้ด้วยตัวเอง; พวกเขาทั้งคู่มีระบบนิเวศขนาดใหญ่ที่มีเครื่องมือและวัฒนธรรมและสำนวนมากมาย

tl; dr: ทั้งสองและ Scheme


1
+1 ทั้งหมดที่ฉันเห็นคือ "ภาษาที่สมบูรณ์แบบ" และ "โครงร่าง" :)
dietbuddha

1

ฉันก็มาจากพื้นหลังของ Java / C ++ และได้เขียนโปรแกรมใน Python ด้วยกรอบ Django ในช่วง 4 เดือนที่ผ่านมาและมันยอดเยี่ยมมาก เมื่อใดก็ตามที่ฉันมีปัญหาหรือคำถามฉันสามารถค้นหาคำอธิบายในโพสต์ที่มีอยู่ ฉันไม่สามารถรับรองทับทิมได้เนื่องจากฉันยังไม่ได้ใช้ แต่ฉันจะลองใช้เมื่อฉันมีเวลา

ฉันชอบวิธีที่คุณสามารถทำสิ่งต่างๆได้อย่างรวดเร็วด้วย Python เพราะมันมีฟังก์ชั่นที่มีประโยชน์มากมายในตัว


1

รหัสโหวตสำหรับ Ruby ฉันมาจากพื้นหลัง. Net และ C # ลอง Python ก่อน แต่ Ruby เพิ่งทำให้ฉันหลงเสน่ห์ =)
ฉันกำลังเขียนสิ่งต่าง ๆ ในระบบมากมายและ Rails ก็พัฒนาไปถึง มันมีความสามารถเหมือนกับ Python ในการเขียนโปรแกรมระบบและยอดเยี่ยมบนเว็บ และฉันก็รู้สึกขัดมันมากขึ้น ..

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