R vs Python สำหรับการวิเคราะห์ข้อมูล [ปิด]


60

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

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

- ฉันควรพูดถึงว่าฉันใช้ C # ในโรงเรียน แต่ฉันคุ้นเคยกับ Python ผ่านการศึกษาด้วยตนเอง


นี่อาจเป็นลิงค์ที่น่าสนใจ: coursera.org/course/compdata
Giorgio

คำตอบ:


39

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

ในแง่ของการดำเนินงานขั้นพื้นฐานพูดว่าการดำเนินการในอาร์เรย์และการเรียงลำดับ R และ Python + จำนวนมากเทียบเคียงได้ มันอยู่ในไลบรารีขนาดใหญ่ของฟังก์ชันทางสถิติที่ R มีความได้เปรียบ นอกจากนี้ matplotlib ดูเหมือนจะไม่ดีเท่า ggplot2 แต่ฉันไม่ได้ใช้ matplotlib มากขนาดนั้น นอกจากนี้ฉันจะให้ความสำคัญกับภาษาหนึ่งเป็นพิเศษ ดูเหมือนว่าคุณสนใจในการวิเคราะห์ข้อมูลเป็นหลักไม่ใช่วิศวกรรมซอฟต์แวร์ ฉันจะเลือก R และยึดติดกับสิ่งนั้น ที่กล่าวว่าฉันคิดว่าการเลือกสำหรับ Python + numpy + scipy + scikit นั้นเป็นทางเลือกที่ดีและยอดเยี่ยมมันเป็นเพียงที่ฉันรู้สึกว่า R นั้นยอดเยี่ยมขึ้นอีกเล็กน้อย

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

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

ps: ลิงก์นี้อาจน่าสนใจ: http://seanjtaylor.com/post/39573264781/the-statistics-software-signal

pps: หรืออ้างจากโพสต์นี้ :

ฉันใช้ R และ Python สำหรับการวิจัยทั้งหมดของฉัน (ด้วย Rcpp หรือ Cython ตามต้องการ) แต่ฉันอยากจะหลีกเลี่ยงการเขียนใน C หรือ C ++ ถ้าฉันสามารถหลีกเลี่ยงได้ R เป็นภาษาที่ยอดเยี่ยมส่วนใหญ่เป็นเพราะชุมชนผู้ใช้ที่ไม่น่าเชื่อ มันถูกสร้างขึ้นโดยนักสถิติซึ่งหมายความว่าการวิเคราะห์ข้อมูลอยู่ในใจกลางของภาษา ฉันคิดว่านี่เป็นคุณสมบัติที่สำคัญของภาษาและเป็นเหตุผลใหญ่ว่าทำไมมันจะไม่ถูกแทนที่ในเวลาไม่นาน โดยทั่วไปแล้ว Python เป็นภาษาโดยรวมที่ดีกว่าโดยเฉพาะอย่างยิ่งเมื่อคุณพิจารณาถึงการผสมผสานการทำงานของโปรแกรมกับการวางแนววัตถุ เมื่อรวมกับ Scipy / Numpy, Pandas และ statsmodels สิ่งนี้จะเป็นการรวมกันที่ทรงพลัง แต่ Python ยังขาดชุมชนนักสถิติ / นักคณิตศาสตร์ที่จริงจัง


3
ถ้าบอกว่า R แข็งแกร่งกว่า Python คุณหมายถึง Python + numpy / blaze + scipyหรือ Python ธรรมดาหรือไม่?
9000

5
ฉันหมายถึง Python + ไม่มีใช่มิฉะนั้นตัวเลือกจะง่ายยิ่งขึ้น ฉันคิดว่าในแง่ของการดำเนินงานขั้นพื้นฐานพูดว่าการดำเนินการในอาร์เรย์และการเรียงลำดับ R และ Python + จำนวนมากเทียบเคียงได้ มันอยู่ในไลบรารีขนาดใหญ่ของฟังก์ชันทางสถิติที่ R มีความได้เปรียบ นอกจากนี้ matplotlib ดูเหมือนจะไม่ดีเท่า ggplot2 แต่ฉันไม่ได้ใช้ matplotlib มากขนาดนั้น
พอล Hiemstra

ที่กล่าวว่าฉันคิดว่าการเลือกสำหรับ Python + numpy + scipy + scikit นั้นเป็นทางเลือกที่ดีและยอดเยี่ยมมันเป็นเพียงที่ฉันรู้สึกว่า R นั้นยอดเยี่ยมขึ้นอีกเล็กน้อย
พอล Hiemstra

@PaulHiemstra - คุณทำคะแนนได้ดีในความคิดเห็นของคุณซึ่งอาจช่วยปรับปรุงคำตอบของคุณ - หากคำถามถูกเปิดใหม่และคุณมีโอกาสนั้น
psr

@psr ฉันแก้ไขในความคิดเห็นของฉันเห็นได้ชัดว่าไม่จำเป็นต้องเปิดคำถามหากฉันต้องการแก้ไข (บางทีฉันเท่านั้นที่สามารถแก้ไขได้ ... )
พอล Hiemstra

36

แบ็คกราวน์: ฉันเป็นนักวิทยาศาสตร์ข้อมูลที่เริ่มต้นทำงานที่ออสตินและฉันมาจากบัณฑิตวิทยาลัย (ฟิสิกส์) ฉันใช้ Python แบบวันต่อวันสำหรับการวิเคราะห์ข้อมูล แต่ใช้ R บิต ฉันยังใช้ C # /. NET และ Java (เกือบทุกวัน) ฉันใช้ C ++ อย่างมากในโรงเรียนระดับบัณฑิตศึกษา

ฉันคิดว่าปัญหาหลักของการใช้ Python สำหรับตัวเลข (สูงกว่า R) คือขนาดของชุมชนผู้ใช้ เนื่องจากภาษามีมาอย่างยาวนานผู้คนจำนวนมากได้ทำสิ่งต่าง ๆ ที่คุณน่าจะอยากทำ ซึ่งหมายความว่าเมื่อประสบกับปัญหาที่ยากคุณสามารถดาวน์โหลดแพ็คเกจและใช้งานได้ และ R "ใช้งานได้": คุณให้ชุดข้อมูลและรู้ว่าสถิติสรุปใดที่มีประโยชน์ คุณให้ผลลัพธ์บางอย่างและรู้ว่าคุณต้องการแปลงอะไร แผนการทั่วไปทั้งหมดที่คุณต้องการจะทำอยู่ที่นั่นแม้กระทั่งปริศนาลึกลับที่คุณต้องค้นหาบนวิกิพีเดีย เช่นเดียวกับ scipy / numpy / pandas / statsmodels / ฯลฯ สำหรับ Python มันไม่ได้อยู่ในระดับมาตรฐานไลบรารี R

ข้อได้เปรียบหลักของ Python over R คือมันเป็นภาษาการเขียนโปรแกรมจริงในตระกูล C มันปรับขนาดได้อย่างง่ายดายดังนั้นจึงเป็นไปได้ว่าทุกอย่างที่คุณมีในกล่องทรายของคุณสามารถนำไปใช้ในการผลิตได้ Python มีการจัดวางวัตถุในอบซึ่งตรงข้ามกับ R ที่มันให้ความรู้สึกเหมือนเป็นชนิดของภายหลัง (เพราะมันเป็น) มีสิ่งอื่น ๆ ที่ Python ก็ทำได้ดีเช่นกันการทำเกลียวและการประมวลผลแบบขนานนั้นค่อนข้างง่ายและฉันก็ไม่แน่ใจว่าเป็นเช่นนั้นในอาร์หรือไม่และการเรียนรู้ของ Python ก็มีเครื่องมือการเขียนสคริปต์ที่ทรงพลังเช่นกัน นอกจากนี้ยังมี IDE ที่ดี (ฟรี) สำหรับ Python ที่ดีกว่าถ้าคุณยินดีจ่าย (น้อยกว่า $ 100) และฉันไม่แน่ใจว่านี่คือกรณีของ R - R IDE เดียวที่ฉันรู้จักคือ R Studio ซึ่งค่อนข้างดี แต่ไม่ดีเท่า PyDev + Eclipse ในประสบการณ์ของฉัน

ฉันจะเพิ่มสิ่งนี้เป็นนักเตะ: เนื่องจากคุณยังอยู่ในโรงเรียนคุณควรคิดถึงงาน คุณจะพบการโพสต์งานเพิ่มเติมสำหรับ devs Python ที่มีทักษะสูงกว่าที่คุณต้องการสำหรับ R dev ที่มีทักษะสูง ในออสตินงานของ Django devs นั้นตกลงมาจากท้องฟ้า หากคุณรู้จัก R ดีจริงๆมีอยู่ไม่กี่ที่ที่คุณจะสามารถใช้ประโยชน์จากทักษะนั้น (ตัวอย่างเช่น Analytics Analytics) แต่ร้านค้าจำนวนมากดูเหมือนจะใช้ Python แม้ในสาขาการวิเคราะห์ข้อมูล / วิทยาศาสตร์ข้อมูลผู้คนจำนวนมากดูเหมือนจะหันไปใช้ Python

และอย่าดูถูกดูแคลนว่าคุณอาจทำงานร่วมกับ / สำหรับคนที่รู้เท่านั้น (พูด) Java คนเหล่านั้นจะสามารถอ่านรหัส Python ของคุณได้อย่างง่ายดาย กรณีนี้ไม่จำเป็นเลยถ้าคุณทำงานทั้งหมดใน R. (มาจากประสบการณ์)

ในที่สุดสิ่งนี้อาจฟังดูผิวเผิน แต่ฉันคิดว่าเอกสาร Python และการตั้งชื่อแบบแผน (ซึ่งปฏิบัติตามอย่างเคร่งครัดในศาสนาปรากฏออกมา) เป็นเรื่องที่ดีกว่าเอกสาร R ของผู้ใช้ นี่จะถูกถกเถียงกันอย่างถึงพริกถึงขิงฉันแน่ใจ แต่การเน้นใน Python นั้นสามารถอ่านได้ นั่นหมายความว่าอาร์กิวเมนต์ของฟังก์ชัน Python มีชื่อที่คุณสามารถอ่านได้และนั่นหมายถึงบางสิ่ง ใน R ชื่ออาร์กิวเมนต์มักถูกตัดทอน --- ฉันพบสิ่งนี้น้อยกว่าจริงใน Python นี่อาจฟังดูเพ้อเจ้อ แต่มันทำให้ฉันถั่วเขียนสิ่งต่าง ๆ เช่น 'xlab' เมื่อคุณสามารถตั้งชื่ออาร์กิวเมนต์ 'x_label' (ตัวอย่างเดียว) ได้อย่างง่ายดาย --- นี่มีผลอย่างมากเมื่อคุณพยายามเรียนรู้ API โมดูล / แพ็กเกจใหม่ การอ่าน R doc เปรียบเสมือนการอ่านหน้า man ของลินุกซ์ --- ถ้านั่นคือสิ่งที่ลอยอยู่บนเรือของคุณ

จากทั้งหมดที่กล่าวมาฉันขอแนะนำสิ่งต่อไปนี้ (ซึ่งเป็นขั้นตอนการทำงานโดยทั่วไปของฉันด้วย) เนื่องจากคุณรู้จัก Python ให้ใช้มันเป็นเครื่องมือแรกของคุณ เมื่อคุณพบว่า Python ขาดเรียนรู้ R เพียงพอที่จะทำสิ่งที่คุณต้องการจากนั้น:

  1. เขียนสคริปต์ใน R และเรียกใช้จาก Python โดยใช้โมดูล subprocess หรือ
  2. ติดตั้งโมดูล RPy

ใช้ Python สำหรับ Python ที่ดีและเติมในช่องว่างด้วยวิธีใดวิธีหนึ่งข้างต้น นี่เป็นขั้นตอนการทำงานปกติของฉัน --- ฉันมักจะใช้ R เพื่อวางแผนสิ่งต่างๆและ Python สำหรับการยกของหนัก

ดังนั้นเพื่อสรุป: เนื่องจาก Python ให้ความสำคัญกับความสามารถในการอ่าน (ค้นหา gooogle สำหรับ "Pythonic") ความพร้อมใช้งานของ IDE ที่ดีและฟรีความจริงที่ว่ามันอยู่ในตระกูลภาษา C ความเป็นไปได้ที่คุณจะสามารถใช้ประโยชน์ได้มากขึ้น ชุดทักษะและรูปแบบเอกสารที่ดีขึ้นของภาษาฉันขอแนะนำให้คุณใช้ Python ในการไปและใช้ R เมื่อจำเป็นเท่านั้น


ตกลงนี่คือคำตอบที่ได้รับความนิยมสูงสุดของฉันในไซต์สแต็กและไม่แม้แต่อันดับที่ 1 :) ฉันหวังว่านี่จะช่วยคนไม่กี่คนตามเส้นทาง

อย่างไรก็ตามฉันได้ข้อสรุปดังต่อไปนี้หลังจากผ่านไปหลายปีในสาขา:

นี่อาจเป็นคำถามที่ผิดที่จะถาม

ถาม "ฉันควรเรียนรู้เทคโนโลยีนี้โดยเฉพาะ" เป็นคำถามที่ไม่ดี ทำไม?

  1. การเปลี่ยนแปลงทางเทคโนโลยี คุณจะต้องเรียนรู้เทคโนโลยีอื่นเสมอ ถ้าคุณไปทำงานที่ Twitter พวกเขาเรียกใช้สกาล่า สถานที่บางแห่งเป็นร้านค้า Python บางแห่งไม่สนใจ คุณจะไม่ได้รับการว่าจ้างเพราะคุณรู้จักหรือไม่รู้จักเทคโนโลยีบางอย่าง - หากคุณไม่สามารถเรียนรู้เทคโนโลยีใหม่คุณสามารถไล่ (และควร) ได้ ถ้าประแจท่อตัวใหม่ออกมาและคุณเป็นช่างประปาและคุณไม่สามารถเข้าใจได้ว่าประแจท่อตัวใหม่ทำงานอย่างไรคุณอาจเป็นช่างประปาที่น่ารัก
  2. ด้วยตัวเลือก "ฉันเรียนรู้เทคโนโลยีนี้" หรือ "ฉันใช้เวลาในการแก้ปัญหาจริงมากขึ้น" คุณควรเลือกอย่างหลังโดยไม่มีข้อยกเว้น

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

[Talk title = "การเรียนรู้อย่างลึกล้ำที่ Cool New Startup"] ... [45 นาทีของไดอะแกรมและเทคโนบาเบลระหว่างที่ฉันแยกตัวและตรวจสอบโทรศัพท์ของฉัน] ... และหลังจากใช้คลัสเตอร์ Hadoop ของเราและ [โซน Ben ออกมา อีกครั้ง] เราสามารถเรียกใช้รูทีนการเรียนรู้ลึกของเรา [ตื่นขึ้น: นี่คือสาเหตุที่ฉันมา!] รายละเอียดที่เป็นกรรมสิทธิ์ คำถาม?

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

Paco Nathan อยู่ที่ Austin เมื่อไม่กี่เดือนที่ผ่านมาในการประชุม "ข้อมูลขนาดใหญ่" นานวันและกล่าวว่า "เคมีไม่ได้เกี่ยวกับหลอดทดลอง" ผลรวมนั้นค่อนข้างมาก - วิทยาศาสตร์ข้อมูลไม่ได้เกี่ยวกับ Scala หรือ Hadoop หรือ Spark หรือสิ่งอื่นใดที่มีเทคโนโลยี-du-jour ปรากฏขึ้น ในตอนท้ายของวันฉันต้องการจ้างคนที่คิดว่าไม่ใช่คนที่มีความเชี่ยวชาญในการใช้ Stack Overflow เพื่อเรียนรู้ชุดเครื่องมือ

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

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


3
ฉันจะบอกว่าถ้าฉันทำงานบนพื้นการซื้อขายและผู้ค้าหัวมาหาฉันด้วยตัวเลือก csv ของราคาตัวเลือกและต้องการให้ฉันพอดีกับพวกเขาด้วยการกระจายเชิงเส้นและกลับค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐาน ฉันจะไม่พิจารณา Python ด้วยซ้ำ ฉันคิดว่ามันเป็นเหมือนรหัสสามบรรทัดที่จะทำสิ่งนี้ใน R.
BenDundee

12

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

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

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

ฉันเดาฉันจะดูเอกสารก่อนและดูว่าพวกเขาโพสต์รหัสภาษาใด ถ้ามันไม่ได้อยู่ใน R อย่าใช้มัน


1
ขอบคุณมาก. ฉันสนใจสิ่งต่าง ๆ ของ ML มากขึ้นอย่างแน่นอน
The_Cthulhu_Kid

1
เพียงแค่ภาคผนวกเล็กน้อย: ฉันแน่ใจว่า R สามารถทำสิ่งนี้ได้ในบางรูปแบบเช่นกัน แต่ Python เป็นที่รู้จักกันดีในเรื่องความสามารถในการโทรหา C หรือรวบรวมฟังก์ชั่นเป็น C โดยใช้ Cython ด้วยค่าใช้จ่ายน้อยที่สุด ดังนั้นโดยทั่วไปคุณสามารถทำงานได้เร็วขึ้นโดยใช้ความพยายามน้อยลงซึ่งเป็นข้อพิจารณาที่สำคัญสำหรับการดูข้อมูลจริง ข้อสังเกตแปลกใหม่ (สุดท้าย): Java มีห้องสมุดการเรียนรู้ด้วยเครื่องที่ดีจริงๆ (เช่น WEKA) อย่างไรก็ตามสิ่งที่เจ๋งคือคุณสามารถเรียกสิ่งเหล่านี้ได้เช่นกันจาก Python โดยใช้ Jython :-)
Nir Friedman

7

ในฐานะนักวิทยาศาสตร์โรงเรียนเก่า (อายุมากกว่า 50) ที่มีและใช้เครื่องมือเหล่านี้ต่อไปฉันจะเพิ่มสองเซ็นต์ ฉันได้ทำงานกับเพื่อนร่วมงานที่ยังคงเขียนโค้ดทุกชิ้นใน Fortran ตั้งแต่งานวิเคราะห์ข้อมูลแบบครั้งเดียวไปจนถึงรหัสที่ครอบงำซุปเปอร์คอมพิวเตอร์บางส่วนของโลก ภาษา Fortran ล่าสุด (F90, F95, F2003, F2008) เป็น IMHO ซึ่งเป็นภาษาที่ได้รับการออกแบบมาอย่างดีที่สุด ทศวรรษของประสบการณ์กับการใช้คอมพิวเตอร์ประสิทธิภาพสูงนำไปสู่การพัฒนาภาษาที่ค่อนข้างน่าประทับใจ

ฉันเคยใช้ Python ในบางครั้งเท่านั้นและจะทบทวนอีกครั้ง (ส่วนใหญ่เป็นเพราะ Sage) แต่ฉันใช้ชุดทดสอบภาษาที่ใช้งานได้ดีสำหรับฉัน Fortran, C, Perl, R และ Scheme (ด้วย tcl สำหรับการเขียนสคริปต์ VMD) ฉันพบว่าการรวมกันของ R และ Fortran และ C ให้ความสะดวกสบายมาก ตรงกันข้ามกับความคิดเห็นอื่น ๆ ที่ทำเกี่ยวกับโมเดลวัตถุใน R มันเป็นโมเดลวัตถุที่ดีสำหรับการทำงานแบบโต้ตอบตามแนวคิด CLOS ของฟังก์ชั่นทั่วไปและวิธีการจัดส่ง เมื่อทำงานกับแพคเกจใหม่คุณสามารถพึ่งพาฟังก์ชั่นทั่วไปเช่น "พิมพ์" และ "พล็อต" เพื่อทำสิ่งที่มีประสิทธิผล

API ไปยัง Fortran และ C นั้นใช้งานง่ายมาก หากคุณเคยทำงานใน Fortran และ C สำหรับการสร้างแบบจำลองและการวิเคราะห์ข้อมูลนี่เป็นข้อดีอย่างมาก ความสามารถในการสร้างรหัส R แบบไดนามิกและประเมินผลในขณะที่ไม่เกือบสะอาดเท่ากับระบบมาโครใน Lisp และ C มีประโยชน์มากเมื่อทำงานกับชุดข้อมูลแบบไดนามิก

ข้อ จำกัด บางประการของ R สำหรับข้อมูลจริงรวมถึงการเรียกโดยใช้วิธีการที่คุ้ม ในขณะที่มีเหตุผล CS สำหรับการโทรตามค่าการเขียนโปรแกรมในโลกแห่งความเป็นจริงที่มีข้อมูลตัวเลขขนาดใหญ่ต้องการรูปแบบของการโทรโดยการอ้างอิง (โปรดสังเกตความสำคัญของบล็อกทั่วไป Fortran ในรหัสเก่าหรือข้อมูลโมดูลในรหัสที่ใหม่กว่า) วิธีการที่นำมาใช้โดย PDL (Perl Data Language) นั้นงดงามเป็นพิเศษในเรื่องนี้ (Pdls เป็นการโทรโดยการอ้างอิงเป็นหลักเว้นแต่คุณจะขอสำเนาการอ้างอิงของ Sub-pdl คือส่วนย่อยของ parent pdl ในรูปแบบไวยากรณ์ที่สะอาดกว่าฟอร์แทรนหรือ C)

เป็นการดีที่จะเรียนรู้หลายภาษา Python เป็นภาษาที่สำคัญอย่างไม่ต้องสงสัย แต่ R ก็อยู่ในโดเมนเช่นกัน แต่เมื่อยางต้องการพบถนนในวิทยาศาสตร์ Fortran และ C (และ C ++ สำหรับบางคน) จะยากที่จะกำจัด


1

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

Python ไม่มีระบบจัดการแพคเกจ ไม่มีเครือข่ายเก็บถาวร R แบบครอบคลุมของ R ( http://cran.r-project.org ) และไม่มีเทียบเท่าโดยตรงกับมุมมองภารกิจ R ( http://cran.csiro.au/web/views/ ) ดังนั้นในระดับที่ไม่ใช่กรณีของ R เครื่องมือสำหรับโปรแกรมเมอร์ที่ทำงานด้วยตัวเองค่อนข้างดีแทนที่จะเป็นส่วนหนึ่งของความพยายามของชุมชนในการสร้างสิ่งที่มีอยู่แล้ว

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


3
Python มีระบบการจัดการแพคเกจที่เรียกว่า pip มันไม่ได้เป็นส่วนหนึ่งของไลบรารีมาตรฐาน แต่จะมาพร้อมกับ Python มาตรฐานที่เริ่มต้นด้วย Python 3.4 ซึ่งจะวางจำหน่ายในเดือนหน้า (มีนาคม 2014)
Cody Piersall

2
เทียบเท่าหลามของครอบคลุม R Archive เครือข่ายเป็น PyPI: pypi.python.org/pypi
วิลเฟรดฮิวจ์
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.