JavaRush /จาวาบล็อก /Random-TH /ระดับของภาษาโปรแกรม
Marat Sadykov
ระดับ

ระดับของภาษาโปรแกรม

เผยแพร่ในกลุ่ม

การแนะนำ

ภาษาโปรแกรมที่แตกต่างกันคืออะไร? มีแนวคิดอะไรบ้างที่ฝังอยู่ในนั้น? พวกเขาพัฒนาได้อย่างไร? ในบทความนี้ เราจะดูประเภทของภาษาการเขียนโปรแกรมตามระดับที่เรียกว่า ตั้งแต่รหัสเครื่อง (ระดับต่ำ ใกล้กับฮาร์ดแวร์คอมพิวเตอร์) ไปจนถึงภาษาต่างๆ เช่น Java หรือ C# (ระดับสูง) ยิ่งการเปลี่ยนแปลงรายการข้อความของโปรแกรมดำเนินการไปพร้อมๆ กับการเปลี่ยนเป็นชุดเลขศูนย์และเลขจำนวนน้อย ระดับก็จะยิ่งต่ำลง
ระดับของภาษาโปรแกรม - 1
ต่อไปเราจะดูที่:
  1. ภาษาระดับต่ำ (รหัสเครื่องและชุดประกอบ)
  2. ระดับกลาง (C, Fortran….)
  3. ระดับสูง (C++, Java, Python, Ruby, JavaScript...)
ระดับยังระบุรายละเอียดว่ารายการโปรแกรมในอนาคตต้องมีรายละเอียดมากน้อยเพียงใดเพื่อดำเนินการใช้งาน กระบวนการนี้ง่ายแค่ไหนสำหรับมนุษย์? ระดับของภาษาไม่ควรถือเป็นตัวบ่งชี้ความสามารถที่ชัดเจน ภาษาโปรแกรมเป็นเครื่องมือที่มีประสิทธิภาพในด้านหนึ่งแต่มีประโยชน์น้อยในด้านอื่นๆ ทั้งช่างไม้และช่างไม้ต่างก็ทำงานกับไม้ อันแรกมีเครื่องมือหลัก - ชุดสิ่วอันที่สอง - ขวาน อย่างไรก็ตาม ช่างไม้จะทำให้ตู้แกะสลักดูหรูหรายิ่งขึ้น และช่างไม้จะสร้างบ้านได้เร็วขึ้น แม้ว่าแต่ละคนจะสามารถทำงานของกันและกันได้ แต่พวกเขาก็จะทำงานได้อย่างมีประสิทธิภาพน้อยลงมาก ข้อมูลต่างๆ ในคอมพิวเตอร์จะแสดงเป็นชุดของศูนย์และชุด คำสั่งควบคุมสำหรับการประมวลผลเป็นข้อมูลเดียวกันที่มีคำแนะนำที่กำหนดตำแหน่งของข้อมูลที่จำเป็นและวิธีการแก้ไข

ภาษาเครื่อง (ระดับต่ำสุด)

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

โลกภายในของโปรเซสเซอร์

คำสั่งตัวประมวลผลทั้งหมดมาจากหน่วยความจำเพื่อดำเนินการในรูปแบบไบนารี รูปแบบ หมายเลข ชุดคำสั่งย่อยขึ้นอยู่กับสถาปัตยกรรม ส่วนใหญ่เข้ากันไม่ได้และมีอุดมการณ์ต่างกัน และประเภทของคำสั่งนั้นขึ้นอยู่กับโหมด (8/16/32... บิตความลึก) และแหล่งข้อมูล (หน่วยความจำ รีจิสเตอร์ สแต็ก...) ที่โปรเซสเซอร์ทำงาน การกระทำเดียวกันสามารถแสดงได้ด้วยคำแนะนำที่แตกต่างกัน โปรเซสเซอร์มีคำแนะนำในการเพิ่มตัวถูกดำเนินการสองตัว (ADD X,Y) และเพิ่มตัวถูกดำเนินการหนึ่งตัวให้กับตัวถูกดำเนินการที่ระบุ (INC X) การเพิ่มทริปเปิลให้กับตัวถูกดำเนินการสามารถทำได้โดยใช้ ADD X,3 หรือโดยการเรียก INC X สามครั้ง และสำหรับโปรเซสเซอร์ที่แตกต่างกันเป็นไปไม่ได้ที่จะคาดเดาว่าวิธีใดเหล่านี้จะเหมาะสมที่สุดในแง่ของความเร็วหรือพื้นที่หน่วยความจำ เพื่อความสะดวก ข้อมูลไบนารีจะถูกเขียนในรูปแบบเลขฐานสิบหก ลองพิจารณาส่วนหนึ่งของโปรแกรมที่คุ้นเคย (ภาษา C ซึ่งมีไวยากรณ์คล้ายกับ Java)
int func() {
    int i = getData("7") ;
    return ++i;
   ...
}
รหัสที่ใช้การกระทำเดียวกันในรูปแบบของลำดับคำสั่งสำหรับโปรเซสเซอร์: ... 48 83 ec 08 bf bc 05 20 00 31 c0 e8 e8 fe ff ff 48 83 c4 08 83 c0 01 ... นี่คือลักษณะของภาษาการเขียนโปรแกรมระดับต่ำสำหรับโปรเซสเซอร์ Intel ส่วนที่เรียกวิธีการที่มีอาร์กิวเมนต์และส่งกลับผลลัพธ์ที่เพิ่มขึ้นทีละหนึ่ง นี่คือภาษาเครื่อง (รหัส) ซึ่งถ่ายโอนโดยตรงไปยังโปรเซสเซอร์เพื่อดำเนินการโดยไม่มีการแปลงโดยไม่มีการแปลง ข้อดี:
  • เราเชี่ยวชาญสถานการณ์โดยสมบูรณ์ เรามีความเป็นไปได้ที่กว้างที่สุดในการใช้โปรเซสเซอร์และฮาร์ดแวร์คอมพิวเตอร์
  • เรามีทางเลือกทั้งหมดสำหรับการจัดระเบียบและเพิ่มประสิทธิภาพโค้ด
ข้อเสีย:
  • จำเป็นต้องมีความรู้กว้างขวางเกี่ยวกับการทำงานของโปรเซสเซอร์และคำนึงถึงปัจจัยด้านฮาร์ดแวร์จำนวนมากเมื่อรันโค้ด
  • การสร้างโปรแกรมที่ซับซ้อนกว่าตัวอย่างที่ให้มาเล็กน้อยทำให้ใช้เวลาในการเขียนโค้ดและแก้ไขจุดบกพร่องเพิ่มขึ้นอย่างมาก
  • การพึ่งพาแพลตฟอร์ม: โดยทั่วไปโปรแกรมที่สร้างขึ้นสำหรับโปรเซสเซอร์ตัวหนึ่งจะไม่ทำงานกับโปรเซสเซอร์ตัวอื่น เป็นไปได้ว่าสำหรับโปรเซสเซอร์นี้ ในโหมดการทำงานอื่น ๆ จำเป็นต้องแก้ไขโค้ด
รหัสเครื่องถูกนำมาใช้กันอย่างแพร่หลายในช่วงเริ่มต้นของคอมพิวเตอร์ ไม่มีวิธีอื่นในการเขียนโปรแกรมในยุคของผู้บุกเบิกคอมพิวเตอร์ ปัจจุบันวิศวกรในสาขาไมโครอิเล็กทรอนิกส์ใช้เป็นครั้งคราวเมื่อพัฒนาหรือทดสอบโปรเซสเซอร์ระดับต่ำ

ภาษาแอสเซมบลี (ระดับต่ำ)

คุณและฉันรับรู้ข้อมูลในรูปแบบข้อความ/ความหมายได้ดีกว่าคอมพิวเตอร์ ไม่เหมือนคอมพิวเตอร์ คุณสามารถตั้งชื่อผู้ติดต่อได้ห้าสิบชื่อบนสมาร์ทโฟนของคุณ แต่คุณไม่น่าจะสามารถเขียนหมายเลขโทรศัพท์ที่เกี่ยวข้องได้ มันเหมือนกันกับการเขียนโปรแกรม เราเลื่อนขั้นบันไดประเภทโดยดำเนินการสามขั้นตอนพื้นฐาน:
  • ให้เราเชื่อมโยงคำสั่งเชิงสัญลักษณ์หนึ่งคำสั่งกับกลุ่มคำสั่งตัวประมวลผลดิจิทัลที่ดำเนินการที่สอดคล้องกัน
  • เรามาเน้นข้อโต้แย้งของคำสั่งโปรเซสเซอร์แยกกัน
  • ขอแนะนำความสามารถในการตั้งชื่อพื้นที่หน่วยความจำ ตัวแปร และตำแหน่งของแต่ละคำสั่ง
ลองเปรียบเทียบส่วนของโปรแกรมก่อนหน้าในรหัสเครื่อง (กลาง) และในภาษาแอสเซมบลี (ขวา):
2004b0     48 83 ec 08      sub    $0x8,%rsp
2004b4     bf bc 05 20 00   mov    $0x2005bc,%edi
2004b9     31 c0            xor    %eax,%eax
2004bb     e8 e8 fe ff ff   callq  getData
2004c0     48 83 c4 08      add    $0x8,%rsp
2004c4     83 c0 01         add    $0x1,%eax
ดังที่คุณเห็น กระบวนการเขียนโปรแกรมมีความเรียบง่ายขึ้น: ไม่จำเป็นต้องใช้หนังสืออ้างอิงในการสร้างค่าคำสั่งดิจิทัล การคำนวณความยาวของการเปลี่ยนแปลง การกระจายข้อมูลในหน่วยความจำข้ามเซลล์ และคุณสมบัติอื่นๆ ของโปรเซสเซอร์ เราอธิบายการกระทำที่ต้องการจากชุดคำสั่งสัญลักษณ์และอาร์กิวเมนต์ที่จำเป็นสำหรับตรรกะของการดำเนินการจากนั้นโปรแกรมแปลจะแปลไฟล์ข้อความเป็นชุดของศูนย์และตัวประมวลผลที่เข้าใจได้ ข้อดี:
  • กระบวนการเขียนและแก้ไขโค้ดทำได้ง่ายขึ้น
  • การควบคุมทรัพยากรฮาร์ดแวร์ทั้งหมดยังคงอยู่
  • การย้ายโปรแกรมไปยังแพลตฟอร์มอื่นค่อนข้างง่ายกว่า แต่ต้องมีการปรับเปลี่ยนขึ้นอยู่กับความเข้ากันได้ของฮาร์ดแวร์
ข้อเสีย:
  • ภาษาแอสเซมบลีเป็นภาษาโปรแกรมระดับต่ำ การสร้างโค้ดแม้แต่ส่วนเล็กๆ ก็เป็นเรื่องยาก นอกจากนี้ยังจำเป็นต้องคำนึงถึงการทำงานเฉพาะของอุปกรณ์ด้วย
  • การพึ่งพาแพลตฟอร์ม
ตัวอย่างการสาธิต Java ที่ได้รับความนิยมมากที่สุด:
public static void main(String[] args) {
    System.out.println("Hello World!");
}
จะมีลักษณะ (ไวยากรณ์ NASM โดยใช้ Windows API และ kernel32.lib) ดังต่อไปนี้:
global _main
	extern  _GetStdHandle@4
	extern  _WriteFile@20
	extern  _ExitProcess@4

	section .text
_main:
	; DWORD  bytes;
	mov 	ebp, esp
	sub 	esp, 4

	; hStdOut = GetstdHandle( STD_OUTPUT_HANDLE)
	push	-11
	call	_GetStdHandle@4
	mov 	ebx, eax

	; WriteFile( hstdOut, message, length(message), &bytes, 0);
    push	0
	lea 	eax, [ebp-4]
	push	eax
	push	(message_end - message)
	push	message
	push	ebx
	call	_WriteFile@20

	; ExitProcess(0)
	push	0
	call	_ExitProcess@4

	; never here
	hlt
message:
	db  	'Hello, World', 10
message_end:
เช่นเดียวกับรหัสเครื่อง ภาษาแอสเซมบลีมักถูกใช้โดยวิศวกรและโปรแกรมเมอร์ระบบ มันถูกใช้เพื่อเขียนส่วนที่ขึ้นกับฮาร์ดแวร์ของเคอร์เนลระบบปฏิบัติการซึ่งมีเวลาวิกฤตหรือวิกฤตต่อคุณสมบัติการใช้งานไดรเวอร์สำหรับอุปกรณ์ต่อพ่วงต่างๆ แต่เมื่อเร็ว ๆ นี้พวกเขาหันมาใช้มันน้อยลงเนื่องจากการใช้งานช่วยลดความสะดวกในการพกพาโปรแกรมไปยังแพลตฟอร์มอื่นลงอย่างมาก บางครั้งพวกเขาใช้กระบวนการแยกชิ้นส่วน - พวกเขาสร้างรายการแอสเซมบลีของโปรแกรมจากรหัสดิจิทัลเพื่อแยกตรรกะของการดำเนินการส่วนย่อยขนาดเล็ก ในบางกรณีซึ่งเกิดขึ้นไม่บ่อยนัก หากไม่มีโค้ดระดับสูงดั้งเดิม: การวิเคราะห์ไวรัสเพื่อต่อสู้กับไวรัสหรือการสูญเสียซอร์สโค้ด ภาษาแอสเซมบลีถือเป็นรุ่นแรก/ที่สอง (เราจะไม่พิจารณารหัสเทียมแยกกันก่อนที่จะมีแอสเซมเบลอร์เกิดขึ้นและความแตกต่างจากคำสั่งสัญลักษณ์) ฉันอยากจะเน้นการใช้แอสเซมเบลอร์ใน Demo Scene: การผสมผสานระหว่างศิลปะ คณิตศาสตร์ และการเขียนโค้ดระดับต่ำ รวบรวมแนวคิดทางศิลปะของผู้สร้างไว้ในรูปแบบของโปรแกรมที่สร้างคลิปวิดีโอที่มีข้อจำกัดด้านทรัพยากร บ่อยครั้งที่ขนาดรวมของโปรแกรมและไฟล์ข้อมูลไม่ควรเกิน 256 ไบต์ (รูปแบบ 4/64 กิโลไบต์ก็เป็นที่นิยมเช่นกัน) นี่คือตัวอย่างโปรแกรมขนาด 4 KB:

ภาษากลุ่ม C/Fortran ​​(ระดับกลาง/ระดับสูง)

ด้วยการพัฒนาขีดความสามารถของเทคโนโลยีคอมพิวเตอร์ จำนวนฟังก์ชันและระยะเวลาในการใช้งานโค้ดในแอสเซมเบลอร์ไม่เป็นที่พอใจอีกต่อไป ค่าใช้จ่ายในการเขียน ทดสอบ และบำรุงรักษาโปรแกรมนั้นเพิ่มขึ้นอย่างรวดเร็วเกินกว่าความสามารถของพวกเขา จำเป็นต้องลดข้อกำหนดจากโปรแกรมเมอร์ในแง่ของความรู้เกี่ยวกับการทำงานของอุปกรณ์เพื่อให้มีเครื่องมือที่จะให้เขาเขียนในภาษาที่ใกล้เคียงกับตรรกะของมนุษย์ ย้ายไปยังระดับใหม่ของประเภทภาษาการเขียนโปรแกรม ให้ความสามารถในการแยกออกเป็นโมดูลต่างๆ ด้วยการเรียกตามลำดับเพิ่มเติม (กระบวนทัศน์การเขียนโปรแกรมตามขั้นตอน) ให้ข้อมูลประเภทต่างๆ พร้อมความสามารถในการสร้างข้อมูลเหล่านั้น ฯลฯ นอกจากนี้ มาตรการเหล่านี้ยังทำให้การพกพาโค้ดที่ดีขึ้นไปยังแพลตฟอร์มอื่น ๆ การจัดองค์กรที่สะดวกสบายยิ่งขึ้น การทำงานเป็นทีม หนึ่งในภาษาแรก ๆ ที่รองรับทั้งหมดข้างต้นคือ Fortran ซึ่งพัฒนาขึ้นในช่วงทศวรรษที่ 50 ของศตวรรษที่ผ่านมา. ความสามารถในการสร้างในรูปแบบข้อความพร้อมคำอธิบายตรรกะการดำเนินการโดยใช้ลูป สาขา รูทีนย่อย และการทำงานกับอาร์เรย์และการนำเสนอข้อมูลในรูปแบบของจำนวนจริง จำนวนเต็ม และจำนวนเชิงซ้อน สร้างความยินดีให้กับวิศวกรและนักวิทยาศาสตร์ ในช่วงเวลาสั้นๆ ก็มีการสร้าง “กรอบ” ทางวิทยาศาสตร์และห้องสมุดขึ้น ทั้งหมดนี้เป็นผลมาจากความจริงที่ว่า Fortran ยังคงมีความเกี่ยวข้องมาจนถึงทุกวันนี้แม้ว่าจะอยู่ในสภาพแวดล้อมทางวิทยาศาสตร์ที่แคบและกำลังพัฒนาเนื่องจากสัมภาระของการพัฒนามีขนาดใหญ่มาก ห้องสมุดIMSL เพียงอย่างเดียว ก็ได้รับการพัฒนาอย่างแข็งขันมาตั้งแต่ปี 1970 (!) อย่างไร คุณจำซอฟต์แวร์ที่เกี่ยวข้องที่คล้ายกันมากมายได้หรือไม่ -old-timers? การพัฒนาภาษาอีกแขนงหนึ่งในระดับนี้คือC. หาก Fortran กลายเป็นเครื่องมือสำหรับนักวิทยาศาสตร์ C ก็ถูกสร้างขึ้นเพื่อช่วยโปรแกรมเมอร์ในการสร้างซอฟต์แวร์แอปพลิเคชัน: ระบบปฏิบัติการ ไดรเวอร์ ฯลฯ ภาษานี้ช่วยให้คุณควบคุมการจัดสรรหน่วยความจำด้วยตนเองและให้การเข้าถึงทรัพยากรฮาร์ดแวร์โดยตรง โปรแกรมเมอร์ C ต้องควบคุมเอนทิตีระดับต่ำ หลายคนจึงเห็นว่า C เป็นภาษาแอสเซมบลีขั้นสูง และมักถูกเรียกว่าภาษา "ระดับกลาง" หลังจากแนะนำการพิมพ์ข้อมูลลงในแอสเซมเบลอร์องค์ประกอบของการเขียนโปรแกรมขั้นตอนและโมดูลาร์แล้วภาษา C ยังคงเป็นหนึ่งในภาษาหลักสำหรับการเขียนโปรแกรมระบบซึ่งได้รับการอำนวยความสะดวกด้วยการพัฒนาอย่างรวดเร็วของไมโครอิเล็กทรอนิกส์ในช่วงไม่กี่ปีที่ผ่านมา อุปกรณ์ ตัวควบคุม เครือข่าย และอุปกรณ์อื่นๆ ทุกประเภทจำเป็นต้องมีไดรเวอร์ การใช้โปรโตคอลสำหรับการทำงานร่วมกัน และซอฟต์แวร์ระดับต่ำอื่นๆ เพื่อใช้โต้ตอบกับอุปกรณ์ ทั้งหมดที่กล่าวมามีส่วนทำให้เกิดความต้องการภาษาในปัจจุบัน หลักการเชิงวัตถุและฟังก์ชันได้รับการพัฒนาเพิ่มเติมในรูปแบบของ C++, C#, Java โดยดึงเอาไวยากรณ์ C มาใช้อย่าง มาก
  • ลดความซับซ้อนของกระบวนการสร้างโค้ด: การแนะนำประเภท การแบ่งโมดูล การลดรายการโปรแกรม
  • Прозрачная логика заложенного алгоритма вследствие ухода от машинных codeов к более понятным для человека командам в семантически описательном стиле.
  • Переносимость. Стало достаточно перекомпorровать текст программы для выполнения на другой платформе (возможно, с небольшой модификацией).
  • Скорость откомпorрованных программ.
Минусы:
  • Отсутствие автоматического управления памятью и необходимость постоянного её контроля.
  • Отсутствие реализации концепций an objectно-ориентированного и функционального программирования.

Развитие языков высокого уровня

ภาษาโปรแกรมระดับสูงในแง่ของการสร้างซอฟต์แวร์ เริ่มที่จะห่างไกลจากรหัสเครื่องมากขึ้น และใช้กระบวนทัศน์การเขียนโปรแกรมต่างๆ นอกเหนือจากขั้นตอนปฏิบัติ ซึ่งรวมถึงการนำหลักการเชิงวัตถุไปใช้ด้วย C++, Java, Python, JavaScript, Ruby... - ช่วงของภาษาประเภทนี้เป็นที่นิยมมากที่สุดและเป็นที่ต้องการในปัจจุบัน พวกเขาให้โอกาสมากขึ้นในการใช้งานซอฟต์แวร์ที่หลากหลายและเป็นไปไม่ได้ที่จะระบุ "ความเชี่ยวชาญ" ของซอฟต์แวร์แต่ละรายการอย่างชัดเจน แต่ความนิยมของแอปพลิเคชันในพื้นที่ที่เกี่ยวข้องนั้นเนื่องมาจากไลบรารี/เฟรมเวิร์กสำหรับการทำงานร่วมกับพวกเขา เช่น JavaScript - ส่วนหน้า ภาษาได้รับการออกแบบสำหรับการโต้ตอบระหว่างเว็บเบราว์เซอร์ไคลเอนต์กับผู้ใช้และเซิร์ฟเวอร์ระยะไกล ไลบรารียอดนิยม ได้แก่ Angular, React และ VUE ปัจจุบันมีการใช้งานค่อนข้างมากบนเว็บและเซิร์ฟเวอร์อื่นๆ (แบ็กเอนด์) Node.js ได้รับความนิยมเป็นพิเศษ Ruby - แบ็กเอนด์ ใช้เพื่อสร้างสคริปต์ (ไฟล์บริการ) และบนเว็บเซิร์ฟเวอร์ เฟรมเวิร์กหลักคือ Ruby On Rails Pythonเป็นโดเมนทางวิทยาศาสตร์และวิศวกรรม (นอกเหนือจากโดเมนเว็บ) มันเป็นทางเลือกแทนแพ็คเกจการคำนวณและคณิตศาสตร์มาตรฐาน (Mathematica, Octave, MatLab...) แต่มีความหมายตามปกติของภาษาและมีไลบรารีจำนวนมาก มีแฟน ๆ มากมายในด้านระบบการเรียนรู้ของเครื่องจักร สถิติ และปัญญาประดิษฐ์ ไลบรารี่ที่ใช้บ่อย ได้แก่ django, numpy, pandas และ tensorflow C++ – การพัฒนาเชิงวิวัฒนาการแบบสากลของภาษา C มอบความสามารถด้านการเขียนโปรแกรมเชิงฟังก์ชันและเชิงวัตถุโดยไม่สูญเสียความสามารถในการโต้ตอบกับฮาร์ดแวร์ระดับต่ำ ด้วยเหตุนี้จึงทำให้เกิดประสิทธิภาพและความยืดหยุ่นเมื่อสร้างซอฟต์แวร์ แต่ราคาก็สอดคล้องกัน: อุปสรรคสูงในการเข้าสู่เนื่องจากข้อกำหนดที่ซับซ้อนของภาษา, ความจำเป็นในการควบคุมทรัพยากรอย่างอิสระเมื่อรันโปรแกรม ซอฟต์แวร์ผู้ใช้คนเดียวและซอฟต์แวร์ระบบจำนวนมากถูกเขียนโดยใช้: โมดูลระบบปฏิบัติการ (Windows, Symbian...), เกม, โปรแกรมแก้ไข (Adobe Photoshop, Autodesk Maya...), ฐานข้อมูล (MSSQL, Oracle...), ผู้เล่น ( WinAmp...) ฯลฯ ควรสังเกตว่าซอฟต์แวร์สมัยใหม่เป็นผลิตภัณฑ์ที่ซับซ้อนการพัฒนาซึ่งใช้ภาษาการเขียนโปรแกรมหลายภาษาพร้อมกันและอาจเป็นเรื่องยากมากที่จะกำหนดระดับการมีส่วนร่วมของแต่ละคนใน ผลลัพธ์โดยรวม

ความก้าวหน้าต่อไป

เมื่อเร็ว ๆ นี้การเขียนโปรแกรมประเภทอื่นได้รับความนิยม - ใช้งานได้จริง (การพัฒนาระดับภาษาเพิ่มเติม) . นี่คือสิ่งที่เป็นนามธรรมอีกประเภทหนึ่งสำหรับการคำนวณ - ฟังก์ชันที่รับชุดของฟังก์ชันเป็นอาร์กิวเมนต์และส่งกลับอีกอันหนึ่ง บทบาทของตัวแปรเล่นโดยฟังก์ชันเดียวกัน (ตัวแปรที่เราคุ้นเคยเป็นเพียงนิพจน์คงที่ คล้ายกับขั้นสุดท้ายก่อนการประกาศประเภทใน Java) ฟังก์ชั่นนั้นถูกปิดในขอบเขต ผลลัพธ์ของการดำเนินการขึ้นอยู่กับอาร์กิวเมนต์ที่ส่งผ่านเท่านั้น คุณสมบัติอันน่าทึ่งสองประการต่อจากนี้:
  • สำหรับการทดสอบ เราต้องการเพียงอาร์กิวเมนต์ของฟังก์ชันเท่านั้น (ผลลัพธ์ของงานไม่ได้ขึ้นอยู่กับตัวแปรภายนอก ฯลฯ)
  • โปรแกรมสไตล์ฟังก์ชันพร้อมทำงานพร้อมกันอย่างน่าอัศจรรย์: การเรียกใช้ฟังก์ชันตามลำดับสามารถออกได้ในเธรดข้างเคียง (เนื่องจากไม่ได้รับผลกระทบจากปัจจัยภายนอก) และไม่จำเป็นต้องล็อก (นั่นคือ ไม่มีปัญหาการซิงโครไนซ์) แรงจูงใจที่ดีในการอุทิศเวลาให้กับหัวข้อนี้เนื่องจากมีการนำโปรเซสเซอร์แบบมัลติคอร์มาใช้อย่างกว้างขวาง
อย่างไรก็ตาม เกณฑ์รายการสูงกว่า OOP: สำหรับโค้ดที่มีประสิทธิภาพ จำเป็นต้องสร้างโปรแกรม โดยอธิบายอัลกอริทึมการดำเนินการในรูปแบบของฟังก์ชัน แต่สำหรับรูปแบบการใช้งานที่บริสุทธิ์ด้วย คงจะดีถ้าได้รู้พื้นฐานของตรรกะและทฤษฎีหมวดหมู่ ความนิยมมากที่สุดคือ Haskell, Scala, F# แต่อย่ากลัวเลย องค์ประกอบของการเขียนโปรแกรมเชิงฟังก์ชันปรากฏใน Java (รวมถึงภาษารุ่นที่สามสมัยใหม่อื่น ๆ ) และสามารถรวมกับ OOP ได้ คุณจะได้ทราบรายละเอียดทั้งหมดเหล่านี้โดยละเอียดมากขึ้นที่การฝึกงานออนไลน์ JavaRush สาขาการเขียนโปรแกรมลอจิก (ภาษาระดับถัดไป)ยังไม่พบการใช้งานจริงที่กว้างขวางเนื่องจากมีความต้องการต่ำ โปรแกรมการสร้างต้องใช้ความรู้พื้นฐานของคณิตศาสตร์แยกส่วน ตรรกศาสตร์ภาคแสดง เครื่องมือจำกัด และสาขาอื่นๆ ของตรรกะทางคณิตศาสตร์ ภาษาที่ใช้งานมากที่สุดคือ Prolog

บทสรุป

ปัจจุบันภาษาที่ใช้กันมากที่สุดคือ OOP ตั้งแต่เริ่มก่อตั้ง Java Java อยู่ในอันดับต้นๆ เสมอ โดยมักจะอยู่ในสามอันดับแรกของภาษายอดนิยม นอกจาก OOP แล้ว ยังมีองค์ประกอบของการเขียนโปรแกรมเชิงฟังก์ชัน และคุณสามารถผสมผสานสไตล์การเขียนโปรแกรมที่แตกต่างกันได้ แอปพลิเคชันของ Java มีหลากหลายมาก - ได้แก่ งานทางธุรกิจ การใช้งานเว็บเซิร์ฟเวอร์ (แบ็กเอนด์) ภาษาหลักสำหรับการสร้างแอปพลิเคชัน Android สภาพแวดล้อมการเขียนโปรแกรมข้ามแพลตฟอร์มและสถานที่ทำงาน (IDE/AWM) และการสร้างแบบจำลอง และอื่นๆ อีกมากมาย . ตำแหน่งของ Java มีความแข็งแกร่งเป็นพิเศษในภาคองค์กร - ขอบเขตของซอฟต์แวร์องค์กรที่ต้องการโค้ดคุณภาพสูงและมีอายุการใช้งานยาวนานและการนำตรรกะทางธุรกิจที่ซับซ้อนที่สุดไปใช้
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION