ค้นหาเว็บไซต์

เจาะลึกการอภิปราย Python กับ Perl - ฉันควรเรียนรู้ Python หรือ Perl อย่างไร


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

ตัวอย่างมากมายของกรณีดังกล่าวสามารถหยิบยกและตรวจสอบได้จากอดีต รวมถึงข้อถกเถียงระหว่าง Java และ C#, C++, ฯลฯ กรณีหนึ่งที่ดึงดูดความสนใจเป็นจำนวนมากคือการอภิปรายระหว่างสองภาษาซึ่งเกิดขึ้นติดต่อกันในช่วงเวลาสั้นๆ นั่นคือ Python และ Perl

ในขณะที่ Python ได้รับการประดิษฐ์ขึ้นในตอนแรกในฐานะผู้สืบทอดภาษา ABC เพียงเพื่อเป็นโครงการการเขียนโปรแกรม “งานอดิเรก ” (ซึ่งจะดึงดูดแฮกเกอร์ Unix/C) สำหรับผู้แต่งที่ตั้งชื่อตาม ซีรีส์ดาราที่ยิ่งใหญ่ที่สุดของเขา Monty Python

การอ่านที่แนะนำ: เริ่มต้นใช้งานการเขียนโปรแกรม Python และการเขียนสคริปต์ใน Linux

Perl เกิดขึ้นเมื่อประมาณ 2 ปีก่อนหน้านี้ในฐานะภาษาสคริปต์ Unix ซึ่งมีจุดประสงค์เพื่อทำให้การประมวลผลรายงานง่ายขึ้น เป็นการผสมผสานระหว่างภาษาต่างๆ มากมาย เช่น C, awk, sed และเชลล์สคริปต์

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

  1. ทั้งระบบปฏิบัติการ Unix ที่กำหนดเป้าหมายหนึ่งระบบสำหรับแฮกเกอร์และอื่น ๆ เพื่อประมวลผลรายงาน
  2. ทั้งสองเป็นแบบเชิงวัตถุ (Python เป็นมากกว่า) และถูกตีความ โดยอันหนึ่งถูกพิมพ์อย่างชัดเจนและชัดเจนเมื่อพูดถึงการเขียนโค้ด เช่น Python และอื่น ๆ ที่อนุญาตให้พิมพ์น่าเกลียดด้วยเครื่องหมายปีกกาเพื่อแสดงบล็อกเช่น Perl
  3. ทั้งสองมีหลักการที่ตรงกันข้ามเมื่อเราพูดว่า Perl มีวิธีมากมายในการทำงานเดียว ในขณะที่ python มุ่งเน้นไปที่วิธีเดียวในการทำสิ่งต่าง ๆ

Python กับ Perl – เปรียบเทียบคุณสมบัติ

มาเจาะลึกการอภิปรายนี้และพยายามค้นหาแง่มุมโดยรวมที่ทั้งสองภาษามีความแตกต่างกัน นอกจากนี้ เรามาลองค้นหาแหล่งที่มาของความจริงสำหรับถ้อยคำที่ซ้ำซากจำเจซึ่งสามารถได้ยินในอุตสาหกรรมว่า “Python คือ Perl ที่มีวงล้อฝึกฝน ” หรือ “Python คล้ายกับ Perl แต่แตกต่าง ” เพื่อที่เราจะได้ลองสรุปด้วยวิธีแก้ปัญหาที่ถูกต้องสำหรับการอภิปรายที่ไม่มีที่สิ้นสุดนี้

1. ไวยากรณ์ที่ซับซ้อนของ Python Clean vs Perl

Python ได้รับประโยชน์อย่างมากจาก Perl ในเรื่องความสามารถในการอ่านโค้ด โค้ดของ Python นั้นเข้าใจได้ชัดเจนกว่าโค้ดของ Perl มาก แม้ว่าจะอ่านโค้ดหลังจากผ่านไปหลายปีก็ตาม

ด้วยการเยื้องที่แสดงถึงบล็อกของโค้ด และการจัดโครงสร้างที่เหมาะสม โค้ดของ Python จึงสะอาดกว่ามาก ในทางกลับกัน Perl ยืมไวยากรณ์จากภาษาการเขียนโปรแกรมต่างๆ เช่น C, เชลล์สคริปต์ และแม้แต่ตัวกรอง awk และ sed เมื่อพูดถึงนิพจน์ทั่วไป

แนะนำให้อ่าน: 15 คำสั่ง 'sed' ที่เป็นประโยชน์สำหรับงานการดูแลระบบ Linux รายวัน

นอกจากนี้ เมื่อ '{' และ '}' แสดงถึงบล็อกของโค้ดและการเติม ';' โดยไม่จำเป็นที่ท้ายแต่ละบรรทัด โค้ดใน Perl อาจกลายเป็น ปัญหาที่ต้องทำความเข้าใจหากคุณอ่านมันหลังจากผ่านไปหลายเดือนหรือหลายปี เนื่องจากมีสคริปต์ที่น่าเกลียด

2. Regex บุคคลที่สามและการสนับสนุนการดำเนินงานระบบปฏิบัติการในตัวของ Perl เทียบกับ Python

ภาษา Perl ยืมไวยากรณ์มาจาก C และคำสั่ง UNIX อื่นๆ เช่น sed, awk, ฯลฯ เนื่องจากมีการสนับสนุน regex ในตัวที่ทรงพลังและไม่ต้องนำเข้าโมดูลของบุคคลที่สามใด ๆ

นอกจากนี้ Perl ยังสามารถจัดการการทำงานของระบบปฏิบัติการโดยใช้ฟังก์ชันในตัวได้อีกด้วย ในทางกลับกัน Python มีไลบรารีบุคคลที่สามสำหรับทั้งการดำเนินการ เช่น re สำหรับ regex และ os, sys สำหรับการดำเนินการ os ซึ่งจำเป็นต้อง ให้มั่นใจก่อนดำเนินการดังกล่าว

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

ตัวอย่าง: พิจารณาโปรแกรมเพื่อค้นหาตัวเลขในสตริง ในภาษา Perl และ Python

Import re
str = ‘hello0909there’
result = re.findall(‘\d+’,str)
print result
$string =  ‘hello0909there’;
$string =~ m/(\d+)/;
print “$& \n”

คุณจะเห็นว่าไวยากรณ์ของ Perl นั้นง่ายดายและได้รับแรงบันดาลใจจากคำสั่ง sed ซึ่งใช้ประโยชน์จากไวยากรณ์ของ Python ซึ่งนำเข้าโมดูลของบุคคลที่สาม 're'

3. การเขียนโปรแกรม OO ขั้นสูงของ Python เทียบกับ One-Liners ของ Perl

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

แนะนำให้อ่าน: เริ่มต้นใช้งาน Python Django Web Framework

นอกจากนี้ การเขียนโค้ด OO ใน Perl จะเพิ่มความซับซ้อนให้กับโค้ดมากขึ้น ซึ่งท้ายที่สุดแล้วจะทำให้โค้ดเข้าใจยาก แม้แต่รูทีนย่อยใน Perl ก็เขียนโปรแกรมยากมากและในที่สุดก็เข้าใจยากในภายหลัง

ในทางกลับกัน Perl นั้นดีที่สุดสำหรับ one-liner ซึ่งสามารถใช้ในบรรทัดคำสั่งเพื่อดำเนินการงานต่างๆ นอกจากนี้ โค้ด Perl ยังสามารถทำงานต่างๆ ได้โดยใช้โค้ดน้อยกว่า Python ในที่สุด

ตัวอย่างรหัสย่อของทั้งสองภาษาซึ่งเน้นความสามารถของ Perl ในการทำงานมากขึ้นใน LOC ที่น้อยลง:

try:
with open(“data.csv”) as f:
for line in f:
print line,
except Exception as e:
print "Can't open file - %s"%e
open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
while(<FILE>) {
print “$_”; } 

ข้อดีและข้อเสีย – Python กับ Perl

ในส่วนนี้ เราจะพูดถึงข้อดีข้อเสียของ Python และ Perl

ข้อดีหลาม:

  1. มีไวยากรณ์ที่สะอาดตาและสวยงามซึ่งทำให้ภาษานี้เป็นตัวเลือกที่ยอดเยี่ยมในฐานะภาษาการเขียนโปรแกรมแรกสำหรับมือใหม่ที่ต้องการฝึกฝนภาษาการเขียนโปรแกรมใดๆ
  2. มีการเขียนโปรแกรม OO ขั้นสูงและโดยธรรมชาติ อีกทั้งการเขียนโปรแกรมเธรดใน Python ก็ดีกว่า Perl มาก
  3. มีขอบเขตการใช้งานมากมายที่ Python เป็นที่ต้องการและยังมีประสิทธิภาพเหนือกว่า Perl อีกด้วย ชอบ: Perl เป็นที่นิยมสำหรับการเขียนสคริปต์ CGI แต่ในปัจจุบัน Django ของ Python และ web2py เช่น ภาษาการเขียนสคริปต์เว็บ กำลังได้รับความนิยมมากขึ้น และได้รับความสนใจอย่างมากจากอุตสาหกรรมนี้
  4. มี Wrapper SWIG หลายตัวสำหรับภาษาโปรแกรมต่างๆ เช่น CPython, IronPython และ Jython และการพัฒนาสิ่งเหล่านี้มีมาก่อนการพัฒนา ของตัวห่อ SWIG สำหรับ Perl
  5. โค้ด Python จะมีการเยื้องไว้อย่างดีเสมอ และอ่านและเข้าใจได้ง่าย แม้ว่าคุณจะอ่านโค้ดของคนอื่น หรือแม้แต่โค้ดของคุณหลังจากผ่านไปหลายปีก็ตาม
  6. Python เหมาะสำหรับแอปพลิเคชันต่างๆ เช่น Big Data, Infra Automation, Machine Learning, NLP, ฯลฯ การสนับสนุนอย่างมากจากชุมชนที่ใช้งานอยู่เนื่องจากการเป็นโอเพ่นซอร์ส

หลามข้อเสีย:

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

ข้อดีเพิร์ล:

  1. Perl มี one-liners ที่ทรงพลังและยังรับประกันการวางท่อ UNIX เหมือนไวยากรณ์ซึ่งสามารถใช้ในบรรทัดคำสั่งเพื่อทำงานต่างๆ ได้ นอกจากนี้ Perl ยังได้รับอิทธิพลจาก Unix และการเขียนโปรแกรมบรรทัดคำสั่ง ดังนั้นจึงรวมคำสั่งที่ได้รับอิทธิพลจาก UNIX จำนวนมากไว้ในการเขียนโค้ด
  2. Perl เป็นที่รู้จักในด้าน regex และการเปรียบเทียบสตริงอันทรงพลัง เนื่องจากได้รับอิทธิพลจาก sed และ awk เช่นเดียวกับเครื่องมือ UNIX อันทรงพลัง ในกรณีของการดำเนินการ regex และสตริง เช่น การทดแทน, การจับคู่, การแทนที่ Perl มีประสิทธิภาพเหนือกว่า python ซึ่งต้องใช้โค้ดสองสามบรรทัดเพื่อให้บรรลุ เดียวกัน. นอกจากนี้ยังมีการดำเนินการ I/O ไฟล์จำนวนมาก การจัดการข้อยกเว้นทำได้เร็วกว่าบน Perl
  3. เมื่อพูดถึงภาษาสำหรับการสร้างรายงาน Perl มีชื่อเสียงมาโดยตลอดนับตั้งแต่มีการเปิดตัว เนื่องจากหนึ่งในเหตุผลหลักที่ทำให้ผู้เขียนพัฒนาภาษาเหมือนกับ Perl คือสำหรับการสร้างรายงาน
  4. แอปพลิเคชันจำนวนมากที่ Perl พบว่ามีการใช้งานได้แก่ การเขียนโปรแกรมเครือข่าย, การดูแลระบบ, การเขียนสคริปต์ CGI (ในที่นี้ Python กำลังเอาชนะ Perl ด้วย Django และ web2py) ฯลฯ
  5. ง่ายต่อการระบุประเภทของตัวแปรด้วยสัญลักษณ์ที่ Perl ใช้ก่อนหน้า เช่น: '@' ระบุอาร์เรย์ และ '%' ระบุแฮช

ข้อเสียของเพิร์ล:

  1. Perl มีโค้ดที่ซับซ้อนมากซึ่งทำให้มือใหม่เข้าใจได้ยาก รูทีนย่อยและแม้แต่สัญลักษณ์อื่นๆ เช่น '$`', '$&' ฯลฯ เป็นเรื่องยากที่จะเข้าใจและตั้งโปรแกรมสำหรับโปรแกรมเมอร์ที่มีประสบการณ์น้อย นอกจากนี้ โค้ด Perl เมื่ออ่านอาจเป็นเรื่องยากและซับซ้อนในการทำความเข้าใจ เว้นแต่คุณจะมีประสบการณ์ที่มีคุณภาพ
  2. OO การเขียนโปรแกรมใน Perl นั้นค่อนข้างล้าสมัย เนื่องจากไม่เคยมีใครรู้จักในการเขียนโปรแกรม OO และการทำงานหลายอย่าง เช่น เธรดก็เด่นชัดน้อยกว่าใน Perl เช่นกัน

บทสรุป

ดังที่เห็นข้างต้นว่าทั้งสองภาษานั้นดีในแง่ของแอปพลิเคชันที่พวกเขากำหนดเป้าหมาย Python ใช้ประโยชน์จาก Perl เล็กน้อยเป็นตัวเลือกแรกสำหรับมือใหม่เนื่องจาก โค้ดที่สะอาดและเข้าใจง่าย ในขณะที่ Perl มีประสิทธิภาพเหนือกว่า Python ในด้านการดำเนินการจัดการสตริงและ one-liners ขั้นสูงบางส่วนสำหรับ UNIX เช่น OS และการดำเนินการอื่นๆ อีกมากมายที่เป็นที่รู้จัก

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