JavaRush /จาวาบล็อก /Random-TH /การเลือกภาษาการเขียนโปรแกรม
Алексей Дмитревский
ระดับ
Москва

การเลือกภาษาการเขียนโปรแกรม

เผยแพร่ในกลุ่ม
ฉันเจอการเขียนโปรแกรมครั้งแรกที่โรงเรียน ในชั้นเรียนวิทยาการคอมพิวเตอร์ นี่เป็นคำอธิบายที่น่าเบื่อเกี่ยวกับหลักการของระบบจำนวน n-ary เพื่อเป็นการทดสอบ ฉันต้องเขียนเว็บไซต์ของตัวเอง สำหรับฉันแล้วดูเหมือนว่าไม่มีกิจกรรมที่น่าเบื่อในโลกอีกต่อไป ฉันผิดแค่ไหน! น่าเสียดายที่หลักสูตรวิทยาการคอมพิวเตอร์ของโรงเรียนไม่ได้ให้ภาพรวมที่สมบูรณ์ของงานด้านไอที และยังไม่ชัดเจนว่าจะเลือกภาษาการเขียนโปรแกรมอย่างไร การเลือกภาษาการเขียนโปรแกรม - 1ก่อนที่จะถามคำถาม “ภาษาโปรแกรมใดที่ควรเลือกเรียนรู้” ผู้เริ่มต้นควรทำความคุ้นเคยกับภาษาที่มีอยู่และความแตกต่างของพวกเขาคืออะไร

เกณฑ์รายการ: สูง, ต่ำ, ปานกลาง

ในบรรดาโปรแกรมเมอร์ คุณมักจะได้ยินเกี่ยวกับ "เกณฑ์การเข้าสู่" ซึ่งเป็นแนวคิดที่สะท้อนถึงปริมาณความพยายามที่จำเป็นสำหรับ "รุ่นน้อง" แต่ละคนในการเรียนรู้ภาษาการเขียนโปรแกรมในระดับที่เพียงพอในการเขียนโปรแกรมจริงจังครั้งแรกและหางานทำ “เกณฑ์การเข้า” ประกอบด้วยความรู้:
  • คุณสมบัติของไวยากรณ์และความแตกต่างของภาษา
  • ห้องสมุด;
  • อัลกอริธึมและโครงสร้างข้อมูล
ที่จริงแล้วแม้แต่การทำงานใน Excel ก็เรียกได้ว่าเป็นการเขียนโปรแกรมประเภทหนึ่ง อย่างไรก็ตาม โปรแกรมสำนักงานที่คุ้นเคยนี้ไม่ง่ายอย่างที่คิด ประการแรกเกณฑ์สำหรับการเข้าร่วมคือความสามารถในการสร้างตารางและอีกประการหนึ่งคือความรู้เกี่ยวกับสูตรและมาโครที่ซับซ้อน ไม่ว่าในกรณีใด เกณฑ์นี้มีน้อย ถัดมาเป็นกึ่งภาษา: ตัวอย่างเช่นการเขียนโปรแกรม1C จากนั้น - ภาษาที่ง่ายที่สุดในการเรียนรู้: ตัวอย่างเช่นPHP . ถัดไปคือภาษาที่มีไวยากรณ์ดั้งเดิม (มักจะมาจากภาษาอังกฤษ) ซึ่งไม่ต้องการการโต้ตอบกับหน่วยความจำด้วยตนเอง: ตัวอย่างเช่นJava , JS . มีภาษาต่างๆ ที่ต้องจัดการหน่วยความจำ โครงสร้างข้อมูล และอัลกอริธึมอย่างระมัดระวังอย่างยิ่ง เช่นC , C++ . ภาษาที่มีหลายกระบวนทัศน์รุ่นเยาว์อาจเป็นอุปสรรคสูงสุดในการเข้าสู่ เนื่องจากเพื่อที่จะเชี่ยวชาญภาษาเหล่านี้ คุณต้องกินสุนัขมากกว่าหนึ่งตัวในภาษาโปรแกรมอื่น เช่นสกาล่า แต่ก่อนอื่น เมื่อเลือกภาษา คุณควรตัดสินใจว่าต้องการทำอะไรต่อไป: พัฒนาเว็บ องค์กร เดสก์ท็อป หรือแอปพลิเคชัน มือถือ

เว็บหรือไม่เว็บ?

เว็บ

โปรแกรมเมอร์เว็บสามารถแบ่งออกเป็น นัก พัฒนาFrontendและBackend มันคุ้มค่าที่จะเข้าใจว่าคำเหล่านี้หมายถึงอะไร นักพัฒนา "ส่วนหน้า" จัดการกับสิ่งที่เรียกว่าฝั่งไคลเอ็นต์ - สิ่งที่ผู้ใช้จะเห็น “แบ็กเอนด์” คือส่วนซอฟต์แวร์และฮาร์ดแวร์ของบริการ ซึ่งทำงานบนเซิร์ฟเวอร์ สำหรับ นักพัฒนา ส่วนหน้าที่กำลังตัดสินใจว่าจะเลือกภาษาการเขียนโปรแกรมใด สิ่งที่ต้องมีคือJavaScriptและเฟรมเวิร์ก: Angular JS, React และอื่นๆ ภาษา JS ไม่ได้รับความนิยมเท่ากับภาษาแม่ แต่ก็มีประโยชน์เช่นกัน: CoffeeScript, TypeScript นอกจากนี้ ยัง มี flash AS ก่อนที่จะมี JScript และ VBScript แต่มีเพียงไดโนเสาร์เท่านั้นที่จำได้ =) นอกจากนี้คุณต้องเข้าใจHTMLและCSS
การเลือกภาษาการเขียนโปรแกรม - 2
ผู้เริ่มต้นหลายคนคิดว่า JavaScript และ Java เกือบจะเป็นสิ่งเดียวกัน ไม่ควรสับสนภาษาเหล่านี้ JS เคยถูกเรียกว่า “LiveScript” และได้รับชื่อปัจจุบันอย่างแม่นยำเนื่องจากความนิยมของคำว่า “Java” PHP, Python, Ruby, Pearl, Java เหมาะสำหรับเว็บแบ็กเอนด์ ที่นี่ฉันต้องการดึงความสนใจไปที่PHP - เราจะพูดถึงภาษาอื่นในภายหลัง - หนึ่งในภาษาที่ง่ายที่สุดในการเรียนรู้ซึ่งมีเกณฑ์การเข้าร่วมต่ำ Ruby ตัดสินโดยการสำรวจของนักพัฒนาเว็บที่คุ้นเคย กำลังได้รับความนิยมอย่างช้าๆ แต่แน่นอน: เป็นที่ชื่นชอบในเรื่องความกะทัดรัดและความสวยงาม

ไม่ใช่เว็บ (องค์กร, เดสก์ท็อป, อุปกรณ์เคลื่อนที่)

ฉันจัดกลุ่มภาษาโปรแกรมเหล่านี้โดยเฉพาะเป็นหมวดหมู่ที่มีชื่อแปลกเช่นนี้ ส่วนใหญ่สามารถใช้เพื่อเขียนแอปพลิเคชันระดับองค์กร เดสก์ท็อป และแม้แต่แอปพลิเคชันมือถือ Pythonซึ่งเป็น OOLP ที่เข้าใจง่าย ได้รับความนิยมอย่างไม่น่าเชื่อเมื่อเร็ว ๆ นี้เนื่องจากการพัฒนาMachine Learning : ผู้ที่ใช้ Python กันอย่างแพร่หลาย ML เป็นสาขาที่ค่อนข้างใหม่ในด้านไอที และถึงแม้ผลแรกๆ จะได้รับแล้ว แต่ฉันก็ไม่รีบเร่งที่จะเจาะลึกในอุตสาหกรรมนี้เมื่อเลือกภาษาการเขียนโปรแกรม ก่อนอื่นคุณต้องเก่งคณิตมาก ประการที่สอง คลื่นความนิยมอาจไปในลักษณะเดียวกับ “บล็อกเชน” หรือ “นาโนเทคโนโลยี” นอกจากนี้ อย่างที่คุณจำได้ Python ยังใช้ในการพัฒนาเว็บอีกด้วย C++ : คลาสสิค ทุกอย่างถูกสร้างขึ้นบนพื้นฐานของ "ข้อดี" ภาษานี้เป็นต้นกำเนิดของ OOLP ยอดนิยมทั้งหมด และผู้เริ่มต้นควรให้ความสนใจกับภาษานี้อย่างแน่นอน แอปพลิเคชั่นยอดนิยมมากมายมีพื้นฐานมาจากมัน แต่ความเป็นไปได้สูงที่จะ "ยิงตัวเองตาย" และไวยากรณ์ที่เข้าใจยากจะลบล้างความเป็นไปได้ที่ผู้เริ่มต้นจะเชี่ยวชาญการเขียนโปรแกรมมาสโตดอนนี้ Kotlin - Java สำหรับฮิปสเตอร์ - การผสมผสานระหว่าง OOP และการเขียนโปรแกรมเชิงฟังก์ชันอย่างบ้าคลั่ง เมื่อเร็ว ๆ นี้ได้รับความนิยมเนื่องจากการที่นักพัฒนาที่มีประสบการณ์ซึ่งเปลี่ยนจาก Java เป็น Kotlin ช่วยเพิ่มประสิทธิภาพการทำงานของเขาได้อย่างมาก นักพัฒนาที่มีประสบการณ์จะคุ้นเคยกับภาษานี้อย่างรวดเร็ว อย่างไรก็ตาม เช่นเดียวกับ Scala แต่ Kotlin ได้รับความนิยมใน Android Javaเป็นเรื่องง่ายสำหรับผู้เริ่มต้นในการเรียนรู้ รวมถึงต้องขอบคุณJavaRush : ที่นี่ทำให้ฉันเข้าใจวิธีเลือกภาษาการเขียนโปรแกรม =) ไวยากรณ์ Java มีความชัดเจน มีความเป็นไปได้ที่จะ "ยิงตัวเองตาย" แต่ไม่สำคัญ

อ๊ะหรือป๊อป?

แนวทางขั้นตอน

แนวทางเชิงขั้นตอนเกี่ยวข้องกับการเขียนโปรแกรมที่ประกอบด้วยข้อความสั่งตามลำดับที่สามารถประกอบเป็นทั้งหมดเดียวเพื่อแก้ไขปัญหาเฉพาะช่วงได้อย่างมีประสิทธิภาพ ภาษาเหล่านี้ ได้แก่: C , PureBasicและPascal . สิ่งเดียวกันที่นำความสิ้นหวังมาสู่นักเรียนมัธยมปลายและนักเรียนรุ่นน้อง นอกจากนี้ยังมีGO ที่ค่อนข้าง ใหม่ อย่างไรก็ตาม ความคุ้นเคยกับภาษาขั้นตอนมีประโยชน์มากสำหรับนักพัฒนาที่มีศักยภาพ สำหรับฉัน การแช่ในภาษาขั้นตอนมีความเกี่ยวข้องกับระบบ Mathematica (Wolfram) และกิจกรรมการวิจัยของมหาวิทยาลัย ด้วยวิธีอัลกอริธึมที่ถูกต้องและขั้นตอนง่าย ๆ การเคลื่อนที่เชิงเส้นตรงจากจุดเริ่มต้นของโปรแกรมไปยังจุดสิ้นสุด ฉันจึงสามารถคำนวณค่าที่เกี่ยวข้องกับฟิสิกส์เชิงทฤษฎีสมัยใหม่ได้ ต้องขอบคุณภาษา "ต่อเนื่อง" เหล่านี้ที่คุณเริ่มเข้าใจว่าบางครั้งการเขียนโค้ดง่ายกว่าการนับด้วยตัวเอง การศึกษา PPP ให้การฝึกอบรมอัลกอริทึมที่ดี ซึ่งนายจ้างมักต้องการเห็นผู้สมัครงานเมื่อจ้างงาน รากฐานของทุกสิ่งและทุกคนในไอทีถูกสร้างขึ้นจากภาษาขั้นตอน ดังนั้นอย่าประมาทพวกเขา อย่างไรก็ตาม ผู้เริ่มต้นที่ตัดสินใจว่าจะเลือกภาษาการเขียนโปรแกรมใดในการเรียนรู้ มักจะคิดว่ามัลติเธรดเป็นสิทธิพิเศษของ OOP นี่เป็นสิ่งที่ผิด ภาษาโปรแกรมขั้นตอนยังช่วยให้คุณสามารถคำนวณแบบขนานได้
การเลือกภาษาการเขียนโปรแกรม - 3

แนวทางเชิงวัตถุ

ผู้ที่เริ่มต้นด้วยภาษาขั้นตอนมักมีความรู้ด้านคณิตศาสตร์อัลกอริทึมและโครงสร้างข้อมูลเป็นอย่างดี (เนื่องจากการเน้นความรู้ด้านเหล่านี้ในมหาวิทยาลัยเทคนิค) อย่างไรก็ตาม ในความเป็นจริงสมัยใหม่ โปรแกรมเมอร์ที่ประสบความสำเร็จมักจะเป็นคนที่เชี่ยวชาญวิธีการเขียนโปรแกรมอื่นเป็นอย่างดี - เชิงวัตถุ อุดมการณ์ OOP ทำให้สามารถสร้างระบบที่เป็นสากลได้อย่างแท้จริง ลักษณะเฉพาะของแนวทางนี้คือความคล้ายคลึงกับโลกแห่งความเป็นจริง:
  • วัตถุต่าง ๆ มีปฏิสัมพันธ์ซึ่งกันและกันและดำรงอยู่อย่างเป็นอิสระจากกัน
  • วัตถุมีลำดับชั้นและสามารถนำไปใช้หรือเปลี่ยนแปลงพฤติกรรมของบรรพบุรุษได้
  • คุณสามารถดำเนินการด้วยแนวคิดเชิงนามธรรมได้ แต่เฉพาะวัตถุที่มีอยู่จริงเท่านั้นที่สามารถโต้ตอบได้

ตัวอย่าง

ภาษาเชิงขั้นตอนเป็นเครื่องมือในการแก้ปัญหาเฉพาะด้าน และหากงานของคุณมีการเปลี่ยนแปลง แม้แต่งานเล็กๆ น้อยๆ คุณมักจะต้องใช้เวลาและความพยายามในการเขียนอัลกอริธึมทั้งหมดใหม่

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    ฐานเอกสารที่กว้างที่สุด: เอกสารอย่างเป็นทางการของ Oracle, พอร์ทัลการฝึกอบรม, ชุมชนที่มีการพัฒนาอย่างต่อเนื่อง คำตอบสำหรับคำถามส่วนใหญ่ที่เกิดขึ้นระหว่างการพัฒนาสามารถพบได้ภายในไม่กี่นาที สิ่งสำคัญคือต้องเข้าใจว่าจะพิมพ์อะไรลงในเครื่องมือค้นหา =)

  3. ความนิยม.

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

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

    สำหรับฉัน lambdas ใน Java 8 ถือเป็นการปฏิวัติและการค้นพบ ไม่ต้องพูดถึงเวอร์ชันใหม่! ตอนนี้ฉันกำลังทำโปรเจ็กต์ "ถอยหลังเข้าคลอง" ดังนั้นฉันจึงไม่ได้เจาะลึกเกี่ยวกับนวัตกรรม แต่ความจริงที่ว่า Java ยังคงอยู่นั้นเป็นความจริง

    การเลือกภาษาการเขียนโปรแกรม - 4
  4. หุ่นยนต์

    Android ครองตลาดโทรศัพท์มือถือมากกว่า 80% อย่างมั่นใจในช่วง 4 ปีที่ผ่านมา ทีวี เครื่องเล่นสื่อ และแม้แต่ระบบสื่อในรถยนต์ทำงานภายใต้ระบบปฏิบัติการนี้ และการพัฒนาระบบปฏิบัติการนี้ดำเนินการด้วยภาษาจาวาเป็นหลัก ลองจินตนาการถึงสิ่งที่มีแนวโน้มจะเปิดขึ้น เมื่อฉันได้งานเป็นนักพัฒนา Android ฉันเริ่มสนใจ: ผลิตภัณฑ์ที่ฉันกำลังพัฒนาราคาเท่าไหร่? ปรากฎว่าราคาต่อปีอยู่ที่ประมาณ 5 ดอลลาร์ มีคำถามที่สมเหตุสมผลเกิดขึ้น: เงินสำหรับสำนักงานนี้ เงินเดือน คุกกี้ โต๊ะเทนนิส หุ่นยนต์ และ "สิ่งดีๆ" อื่น ๆ มาจากไหน? มันเป็นเรื่องของปริมาณ: แอปพลิเคชันของเรามีผู้ใช้ 20 ล้านคน

  5. เงินเดือน.

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

ความนิยมของภาษาโปรแกรม

เมื่อเลือกภาษาการเขียนโปรแกรม คุณต้องคำนึงถึงเป้าหมายสูงสุดของการเรียนรู้ นั่นคือการได้งานแรก เพื่อประเมินความนิยมของภาษาต่างๆ ฉันไปที่พอร์ทัล รับสมัครงานยอดนิยม และเริ่มดูจำนวนตำแหน่งงานว่างสำหรับคำขอต่างๆ ในมอสโก คุณสามารถดูผลลัพธ์ด้านล่าง
ชวา: 277
หลาม: 227
PHP: 188
ค#: 147
ค++: 131
ทับทิม: 40
สกาลา: 24
คอตลิน: 20
แม้แต่ Python ที่ได้รับความนิยมเมื่อเร็ว ๆ นี้ก็ยังไม่สามารถแซงหน้า Java ได้ แต่สิ่งเหล่านี้เป็นข้อมูลเชิงอัตวิสัย: เมืองใดเมืองหนึ่ง หรือวันใดวันหนึ่ง มีแหล่งข้อมูลอย่างเป็นทางการ มาดูกันดีกว่า ณ เดือนตุลาคม 2018 ตามข้อมูลของTIOBE Java อยู่ในอันดับแรก ใน การจัดอันดับ PYPLนั้น Java อยู่ในอันดับที่สอง เหนือกว่า JS และแข่งขันกับ Python ที่ "ทันสมัย"

ผลลัพธ์

สิ่งที่ผู้เริ่มต้นควรคำนึงถึงเมื่อเลือกภาษาการเขียนโปรแกรม:
  • ความนิยม (Java ครองตำแหน่งผู้นำอย่างต่อเนื่อง);
  • เกณฑ์ขั้นต่ำ (สำหรับ Java - ค่าเฉลี่ย: ช่วงของความสามารถที่นายจ้างต้องการนั้นค่อนข้างกว้าง)
  • วัสดุที่มีอยู่ (ไม่มีพอร์ทัลที่คล้ายกับ JavaRush ในภาษารัสเซียดังนั้นฝ่ามือไปเดาว่าใคร =));
  • ขอบเขตการใช้งาน: ยิ่งอุตสาหกรรมต่างๆ สามารถใช้ภาษาการเขียนโปรแกรมได้มากเท่าใด ก็ยิ่งจำเป็นต้องมีผู้เชี่ยวชาญในตลาดมากขึ้นเท่านั้น ฉันพูดคุยเกี่ยวกับข้ามแพลตฟอร์มแล้ว แต่ฉันจะไม่เบื่อที่จะทำซ้ำ
แน่นอนว่ามีข้อผิดพลาดอยู่ทุกหนทุกแห่ง แต่ผู้ที่เดินจะเชี่ยวชาญถนน: มีเพียงคุณเท่านั้นที่สามารถตัดสินใจได้ว่าจะเลือกภาษาการเขียนโปรแกรมใด ขอให้โชคดีในการศึกษาของคุณ!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION