Khác biệt giữa các bản “Phần mềm”

n
Đã lùi lại sửa đổi của Daipha (Thảo luận) quay về phiên bản cuối của Anewplayer
Thẻ: Sửa đổi di động Sửa đổi từ trang di động Đã được lùi sửa Xóa nội dung có nguồn mà không có tóm lược sửa đổi
n (Đã lùi lại sửa đổi của Daipha (Thảo luận) quay về phiên bản cuối của Anewplayer)
Thẻ: Lùi tất cả
{{1000 bài cơ bản}}
lh oz ph ph lh llh)*#*97l k m vmh
[[Tập tin:Operating_system_placement_(software).svg|nhỏ| Một sơ đồ cho thấy cách người dùng tương tác với [[phần mềm ứng dụng]] trên một [[máy tính để bàn]] thông thường. Lớp phần mềm ứng dụng giao tiếp với [[hệ điều hành]], lần lượt giao tiếp với [[phần cứng]]. Các mũi tên chỉ luồng thông tin. ]]
'''Phần mềm máy tính''', hay còn gọi đơn giản là '''phần mềm''', cũng được người Việt hải ngoại gọi là '''nhu liệu'''<ref>[http://www.tqlcvn.org/kythuat/kt-gochuviet-vpskeys.htm "Gõ chữ Việt bằng nhu liệu VPS..."]</ref> là tập hợp [[Dữ liệu (máy tính)|dữ liệu]] hoặc các câu lệnh hướng dẫn máy tính cho máy tính biết cách làm việc. Điều này trái ngược với [[Phần cứng|phần cứng vật lý]], từ đó hệ thống được xây dựng và thực sự thực hiện công việc. Trong [[khoa học máy tính]] và [[Công nghệ phần mềm|kỹ thuật phần mềm]], phần mềm máy tính là tất cả [[Thông tin|thông tin được]] xử lý bởi [[Máy tính|hệ thống máy tính]], [[Chương trình máy tính|chương trình]] và [[dữ liệu]]. Phần mềm [[Chương trình máy tính|máy tính]] bao gồm [[Chương trình máy tính|các chương trình máy tính]], [[Thư viện (máy tính)|thư viện]] và [[Dữ liệu (máy tính)|dữ liệu]] không thể thực thi liên quan, chẳng hạn như tài liệu trực tuyến hoặc phương tiện kỹ thuật số. Phần cứng và phần mềm máy tính yêu cầu lẫn nhau và không thể tự sử dụng một cách thực tế.
 
Ở cấp độ lập trình thấp nhất, [[mã thực thi]] bao gồm các hướng dẫn [[ngôn ngữ máy]] được hỗ trợ bởi một [[Vi xử lý|bộ xử lý]] riêng lẻ, có thể là [[Vi xử lý|bộ xử lý]] [[CPU|trung tâm]] (CPU) hoặc [[Bộ xử lý đồ họa|đơn vị xử lý đồ họa]] (GPU). Một ngôn ngữ máy bao gồm các nhóm [[Hệ nhị phân|giá trị nhị phân]] biểu thị các [[Kiến trúc tập lệnh|lệnh hướng dẫn cách thực hiện của bộ xử lý]] thay đổi trạng thái của máy tính từ trạng thái trước đó. Ví dụ: một lệnh có thể thay đổi giá trị được lưu trữ ở một vị trí lưu trữ cụ thể trong máy tính, một hiệu ứng mà người dùng không thể quan sát trực tiếp. Một lệnh [[Lời gọi hệ thống|cũng có thể gọi]] một trong nhiều thao tác [[Đầu vào/đầu ra|nhập hoặc xuất dữ liệu]], ví dụ hiển thị một số văn bản trên màn hình máy tính; gây ra những thay đổi trạng thái được hiển thị cho người dùng. Bộ xử lý [[Chu kỳ lệnh|thực hiện]] các lệnh theo thứ tự chúng được cung cấp, trừ khi nó được hướng dẫn "nhảy" sang một lệnh khác hoặc bị hệ điều hành làm [[Ngắt|gián đoạn]]. {{Tính đến|2015}}, hầu hết [[Máy tính cá nhân|các [[máy tính cá nhân]]]], thiết bị [[điện thoại thông minh]] và [[máy chủ]] đều có [[CPU đa nhân|bộ xử lý với nhiều đơn vị thực thi]] hoặc [[Đa xử lý|nhiều bộ xử lý thực hiện tính toán]] cùng nhau và điện toán đã trở thành một hoạt động đồng thời hơn nhiều so với trước đây.
vkf&)€%¥@6 @)l) khl k
 
Phần lớn phần mềm được viết bằng [[Ngôn ngữ lập trình bậc cao|các ngôn ngữ lập trình cấp cao]]. Chúng dễ dàng và hiệu quả hơn cho các lập trình viên vì chúng gần với [[ngôn ngữ tự nhiên]] hơn ngôn ngữ máy.<ref>{{Chú thích web|url=http://www.cs.uu.nl/education/vak.php?vak=INFOMCCO|title=Compiler construction|archive-url=https://web.archive.org/web/20131102143144/http://www.cs.uu.nl/education/vak.php?vak=INFOMCCO|archive-date=ngày 2 tháng 11 năm 2013|dead-url=no}}</ref> Các ngôn ngữ cấp cao được dịch sang ngôn ngữ máy bằng [[trình biên dịch]] hoặc [[Trình biên dịch|trình]] [[Trình thông dịch|thông dịch]] hoặc kết hợp cả hai. Phần mềm cũng có thể được viết bằng một [[hợp ngữ]] mức thấp, trong đó có các lệnh mạnh để hướng dẫn ngôn ngữ máy của máy tính và được dịch sang ngôn ngữ máy bằng cách dùng phần mềm [[Hợp ngữ|lắp ráp]].
 
== Lịch sử ==
{{chính|Lịch sử phần mềm}}
Một phác thảo ([[thuật toán]]) cho những gì sẽ là phần mềm đầu tiên đã được [[Ada Lovelace|Ada Lovelace viết]] vào thế kỷ 19, cho Công cụ phân tích theo kế hoạch.{{sfn|Evans|2018|p=21}} Bà đã [[Chứng minh toán học|chứng minh]] cho thấy động cơ sẽ tính toán [[số Bernoulli]] như thế nào.{{sfn|Evans|2018|p=21}} Vì các chứng minh và thuật toán này, Ada Lovelace được coi là lập trình viên máy tính đầu tiên<ref name="Annals of the History of Computing">{{Chú thích tạp chí|last=Fuegi|first=J.|last2=Francis|first2=J.|date=2003|title=Lovelace & Babbage and the creation of the 1843 'notes'|journal=Annals of the History of Computing|volume=25|issue=4|pages=16–26|doi=10.1109/MAHC.2003.1253887}}</ref><ref name="Lovelace Google">{{Chú thích báo|url=https://www.theguardian.com/technology/2012/dec/10/ada-lovelace-honoured-google-doodle|title=Ada Lovelace honoured by Google doodle|last=|first=|date=ngày 10 tháng 12 năm 2012|work=The Guardian|accessdate =ngày 25 tháng 11 năm 2018}}</ref> mặc dù bà chưa chạy chương trình bao giờ do công cụ mà bà viết chương trình không được tạo ra lúc đó.
 
Lý thuyết đầu tiên về phần mềm, trước khi tạo ra máy tính như chúng ta biết ngày nay, đã được [[Alan Turing]] đề xuất trong bài tiểu luận năm 1935, ''On Computable Numbers, with an Application to the Entscheidungsproblem'' (vấn đề quyết định). Ông đã tạo ra cái gọi là [[máy Turing]], một mô hình toán học của một cỗ máy trừu tượng có khả năng thực hiện chuỗi các phép toán thô sơ để di chuyển một cỗ máy từ trạng thái cố định này sang trạng thái cố định khác. Ý tưởng chính là để chứng minh về mặt toán học thực tế rằng bất kỳ trạng thái xác định trước của hệ thống luôn có thể đạt được bằng cách thực hiện tuần tự một tập hợp hữu hạn các lệnh cơ bản (chương trình) từ một tập hợp lệnh cố định.
 
Điều này cuối cùng đã dẫn đến việc tạo ra các lĩnh vực học thuật về [[khoa học máy tính]] và [[công nghệ phần mềm]]; Cả hai lĩnh vực nghiên cứu phần mềm và sáng tạo của nó. Khoa học máy tính là nghiên cứu lý thuyết về máy tính và phần mềm (tiểu luận của Turing là một ví dụ về khoa học máy tính), trong khi kỹ thuật phần mềm là ứng dụng của kỹ thuật và phát triển phần mềm.
 
Tuy nhiên, trước năm 1946, phần mềm chưa phải là chương trình được lưu trữ trong bộ nhớ của các máy tính kỹ thuật số chương trình được lưu trữ, như chúng ta đã hiểu. Thay vào đó, các thiết bị máy tính điện tử đầu tiên được thay thế để "lập trình lại" chúng sau mỗi lần máy tính hoạt động. Máy tính điện tử đầu tiên của những năm 1940 và 1950 được lập trình lại bằng cách chuyển [[Công tắc|đổi công tắc bật tắt]] và kết nối lại dây cáp, đòi hỏi sự hiểu biết sâu sắc về cấu trúc bên trong của chúng. Đặc biệt, những chiếc máy như vậy thuộc về [[ENIAC]] (tuy nhiên, sau đó đã được sửa đổi để nó có thể, ít nhất một phần, được lập trình bằng cách sử dụng [[Thẻ bấm lỗ|các thẻ đục lỗ]]) {{Sfn|Computer Languages|1989|loc=1. Невидимый конструктор}}.
 
Một bước quan trọng trong định hướng của máy tính hiện đại là sự chuyển đổi sang kiến trúc của [[John von Neumann]], lần đầu tiên được thực hiện ở [[Vương quốc Liên hiệp Anh và Bắc Ireland|Vương quốc Anh]], được phát triển dưới sự lãnh đạo của [[John R. Womersley]] và với sự tham gia của máy tính của [[Alan Turing]], được gọi là [[Máy tính kiểm soát bắn Mark I|Mark I]]. Chương trình đầu tiên được lưu trữ trong bộ nhớ của máy tính được đưa ra vào ngày 21 tháng 6 năm 1941. Để tạo điều kiện thuận lợi cho việc lập trình chiếc máy này, Turing đã phát minh ra một hệ thống mã hóa viết tắt, trong đó một chuỗi các ký tự [[teletype]] in trên băng đục lỗ được sử dụng để biểu diễn [[Ngôn ngữ máy|mã máy]] [[Hệ nhị phân|nhị phân]] {{Sfn|Computer Languages|1989|loc=1. Невидимый конструктор}}.
 
Một trong những đồng nghiệp của Turing, [[John Mauchly]], người sau này trở thành (cùng với [[Eckert, John Presper|John Presper Eckert]]) người đứng đầu và là người sáng lập của Eckert - Mauchly Computer Corporation, công ty phát triển các máy tính như [[BINAC]] và [[UNIVAC]], đã giao cho nhân viên của mình tạo ra một trình dịch các công thức đại số. Mặc dù mục tiêu đầy tham vọng này đã không đạt được vào những năm 1940, nhưng dưới sự lãnh đạo của Mauchly, cái gọi là [[Mã ngắn]] đã được phát triển, trong đó các phép toán và biến được mã hóa bằng tổ hợp hai ký tự. Mã ngắn được thực hiện bằng trình [[Trình thông dịch|thông dịch]] {{Sfn|Computer Languages|1989|loc=1. Невидимый конструктор § Создание кодов, понятных человеку}}. [[Grace Hopper]], làm việc từ đầu những năm 1950 về một tập hợp các quy trình toán học cho [[UNIVAC I]], đã phát minh ra chương trình [[Người liên kết|liên kết]] " A-0", được cung cấp một số [[Định danh|nhận dạng]], tìm nạp [[Chương trình con|quy trình]] mong muốn từ một [[Thư viện (máy tính)|thư viện]] được lưu trữ trên [[băng từ]] và viết nó ra. trong không gian bộ nhớ được phân bổ {{Sfn|Computer Languages|1989|loc=1. Невидимый конструктор § Шаг на благо программирования}}.
 
== Phân loại ==