无花果什么味道
Ph?n m?m máy tính (ti?ng Anh: software), hay còn g?i ??n gi?n là ph?n m?m, còn ???c g?i là nhu li?u, là t?p h?p d? li?u ho?c các cau 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 v?t ly, t? ?ó h? th?ng ???c xay d?ng và th?c s? th?c hi?n c?ng vi?c. Trong khoa h?c máy tính và k? thu?t ph?n m?m, ph?n m?m máy tính là t?t c? th?ng tin ???c x? ly b?i h? th?ng máy tính, ch??ng trình và d? li?u. Ph?n m?m máy tính bao g?m các ch??ng trình máy tính, th? vi?n và 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 b? x? ly riêng l?, có th? là b? x? ly trung tam (CPU) ho?c ??n v? x? ly ?? h?a (GPU). M?t ng?n ng? máy bao g?m các nhóm giá tr? nh? phan bi?u th? các l?nh h??ng d?n cách th?c hi?n c?a b? x? ly 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 c?ng có th? g?i m?t trong nhi?u thao tác 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; gay ra nh?ng thay ??i tr?ng thái ???c hi?n th? cho ng??i dùng. B? x? ly 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 gián ?o?n. Tính ??n n?m 2015[c?p nh?t], h?u h?t các máy tính cá nhan, thi?t b? ?i?n tho?i th?ng minh và máy ch? ??u có b? x? ly v?i nhi?u ??n v? th?c thi ho?c nhi?u b? x? ly 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 ?ay.
Ph?n l?n ph?n m?m ???c vi?t b?ng 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.[1] 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 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 l?p ráp.
L?ch s?
s?aM?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 vi?t vào th? k? 19, cho C?ng c? phan tích theo k? ho?ch.[2] Bà ?? ch?ng minh cho th?y ??ng c? s? tính toán s? Bernoulli nh? th? nào.[2] 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[3][4] 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 ?ó.
Ly 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. Y 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 ly 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 ??i c?ng t?c b?t t?t và k?t n?i l?i day cáp, ?òi h?i s? hi?u bi?t sau 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 các th? ??c l?).[5]
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 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à 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 ky t? teletype in trên b?ng ??c l? ???c s? d?ng ?? bi?u di?n m? máy nh? phan.[5]
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 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 nhan 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 ky t?. M? ng?n ???c th?c hi?n b?ng trình th?ng d?ch [6]. 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 liên k?t " A-0", ???c cung c?p m?t s? nh?n d?ng, tìm n?p quy trình mong mu?n t? m?t th? vi?n ???c l?u tr? trên b?ng t? và vi?t nó ra. trong kh?ng gian b? nh? ???c phan b?.[7]
Phan lo?i
s?aTrên h?u h?t t?t c? các n?n t?ng máy tính, ph?n m?m có th? ???c nhóm thành m?t vài lo?i l?n.
M?c ?ích ho?c l?nh v?c s? d?ng
s?aD?a trên m?c tiêu, ph?n m?m máy tính có th? ???c chia thành:
- Ph?n m?m ?ng d?ng
là ph?n m?m s? d?ng h? th?ng máy tính ?? th?c hi?n các ch?c n?ng ??c bi?t ho?c cung c?p các ch?c n?ng gi?i trí ngoài ho?t ??ng c? b?n c?a chính máy tính. Có nhi?u lo?i ph?n m?m ?ng d?ng khác nhau, b?i vì ph?m vi các tác v? có th? ???c th?c hi?n v?i m?t máy tính hi?n ??i là r?t l?n, xem danh sách ph?n m?m. - Ph?n m?m h? th?ng
là ph?n m?m ?? qu?n ly hành vi ph?n c?ng máy tính, ?? cung c?p các ch?c n?ng c? b?n ???c ng??i dùng yêu c?u ho?c ph?n m?m khác ?? ch?y ?úng, n?u có. Ph?n m?m h? th?ng c?ng ???c thi?t k? ?? cung c?p m?t n?n t?ng ?? ch?y ph?n m?m ?ng d?ng,[8] và nó bao g?m:- H? ?i?u hành (operating system)
là các b? s?u t?p thi?t y?u c?a ph?n m?m qu?n ly tài nguyên và cung c?p các d?ch v? chung cho các ph?n m?m khác ch?y "trên ??nh" c?a chúng. Các ch??ng trình giám sát, b? t?i kh?i ??ng, h? v? và h? th?ng c?a s? là nh?ng ph?n c?t l?i c?a h? ?i?u hành. Trong th?c t?, m?t h? ?i?u hành ?i kèm v?i ph?n m?m b? sung (bao g?m c? ph?n m?m ?ng d?ng) ?? ng??i dùng có th? th?c hi?n m?t s? c?ng vi?c v?i m?t máy tính ch? có m?t h? ?i?u hành. - (driver)
v?n hành ho?c ?i?u khi?n m?t lo?i thi?t b? c? th? ???c g?n vào máy tính. M?i thi?t b? c?n ít nh?t m?t trình ?i?u khi?n thi?t b? t??ng ?ng; b?i vì m?t máy tính th??ng có ít nh?t m?t thi?t b? ??u vào và ít nh?t m?t thi?t b? ??u ra, m?t máy tính th??ng c?n nhi?u h?n m?t trình ?i?u khi?n thi?t b?. - Ti?n ích (utility)
là nh?ng ch??ng trình máy tính ???c thi?t k? ?? h? tr? ng??i dùng trong vi?c b?o trì và ch?m sóc máy tính c?a h?.
- H? ?i?u hành (operating system)
- Ph?n m?m ??c h?i ho?c malware
?ó là ph?n m?m ???c phát tri?n ?? gay h?i và phá h?ng máy tính. Nh? v?y, ph?n m?m ??c h?i là kh?ng mong mu?n. Ph?n m?m ??c h?i có liên quan ch?t ch? v?i các t?i ph?m liên quan ??n máy tính, m?c dù m?t s? ch??ng trình ??c h?i có th? ???c thi?t k? nh? nh?ng trò ch?i kh?m.
B?n ch?t ho?c mi?n th?c thi
s?a- Các ?ng d?ng máy tính ?? bàn nh? trình duy?t web và Microsoft Office, c?ng nh? các ?ng d?ng ?i?n tho?i th?ng minh và máy tính b?ng (???c g?i là " ?ng d?ng "). (Có m?t s? thúc ??y trong m?t s? ph?n c?a ngành c?ng nghi?p ph?n m?m ?? h?p nh?t các ?ng d?ng máy tính ?? bàn v?i các ?ng d?ng di ??ng, ? m?t m?c ?? nào ?ó. Windows 8, và sau ?ó là Ubuntu Touch, ?? c? g?ng cho phép s? d?ng cùng m?t ki?u giao di?n ng??i dùng ?ng d?ng trên máy tính ?? bàn, máy tính xách tay và ?i?n tho?i di ??ng.)
- Các t?p l?nh JavaScript là các ph?n m?m ???c nhúng truy?n th?ng trong các trang web ???c ch?y tr?c ti?p bên trong trình duy?t web khi m?t trang web ???c t?i mà kh?ng c?n plugin trình duy?t web. Ph?n m?m ???c vi?t b?ng các ng?n ng? l?p trình khác c?ng có th? ???c ch?y trong trình duy?t web n?u ph?n m?m ???c d?ch sang JavaScript ho?c n?u m?t plugin trình duy?t web h? tr? ng?n ng? ?ó ???c cài ??t; ví d? ph? bi?n nh?t sau này là các t?p l?nh ActionScript, ???c h? tr? b?i plugin Adobe Flash.
- Ph?n m?m máy ch?, bao g?m:
- Các ?ng d?ng web, th??ng ch?y trên máy ch? web và xu?t các trang web ???c t?o ??ng sang trình duy?t web, s? d?ng ví d?: PHP, Java, ASP. NET, ho?c th?m chí JavaScript ch?y trên máy ch?. Trong th?i hi?n ??i, nh?ng th? này th??ng bao g?m m?t s? JavaScript ???c ch?y trong trình duy?t web, trong tr??ng h?p ?ó, chúng th??ng ch?y m?t ph?n trên máy ch?, m?t ph?n trong trình duy?t web.
- Plugin và ti?n ích m? r?ng là ph?n m?m m? r?ng ho?c s?a ??i ch?c n?ng c?a m?t ph?n m?m khác và yêu c?u ph?n m?m ?ó ph?i ???c s? d?ng ?? ho?t ??ng;
- Ph?n m?m nhúng embedded software nh? firmware trong h? th?ng nhúng, thi?t b? dành riêng cho vi?c s? d?ng ??n l? ho?c m?t vài c?ng d?ng nh? xe h?i và TV (m?c dù m?t s? các thi?t b? nhúng nh? chipset kh?ng day có th? là m?t ph?n c?a m?t h? th?ng máy tính th?ng th??ng, kh?ng nhúng nh? m?t PC ho?c ?i?n tho?i th?ng minh).[9] Trong b?i c?nh h? th?ng nhúng ??i khi kh?ng có s? phan bi?t r? ràng gi?a ph?n m?m h? th?ng và ph?n m?m ?ng d?ng. Tuy nhiên, m?t s? h? th?ng nhúng ch?y h? ?i?u hành nhúng và các h? th?ng này v?n gi? ???c s? khác bi?t gi?a ph?n m?m h? th?ng và ph?n m?m ?ng d?ng (m?c dù th?ng th??ng s? ch? có m?t ?ng d?ng c? ??nh lu?n ch?y).
- Microcode là m?t lo?i ph?n m?m nhúng ??c bi?t, t??ng ??i khó hi?u, cho b?n than b? x? ly bi?t cách th?c thi m? máy, vì v?y nó th?c s? là m?t c?p ?? th?p h?n m? máy. Nó th??ng thu?c s? h?u c?a nhà s?n xu?t b? x? ly và m?i c?p nh?t ph?n m?m vi m? ch?nh s?a c?n thi?t ??u ???c cung c?p cho ng??i dùng (r? h?n nhi?u so v?i v?n chuy?n ph?n c?ng b? x? ly thay th?). Do ?ó, m?t l?p trình viên bình th??ng s? kh?ng bao gi? ph?i ??i phó v?i nó.
C?ng c? l?p trình
s?aCác c?ng c? l?p trình c?ng là ph?n m?m d??i d?ng ch??ng trình ho?c ?ng d?ng mà các nhà phát tri?n ph?n m?m (còn ???c g?i là l?p trình viên, l?p trình viên, tin t?c ho?c k? s? ph?n m?m) s? d?ng ?? t?o, g? l?i, b?o trì (t?c là c?i thi?n ho?c s?a ch?a) ho?c nói cách khác là h? tr? ph?n m?m.
Ph?n m?m ???c vi?t b?ng m?t ho?c nhi?u ng?n ng? l?p trình; có nhi?u ng?n ng? l?p trình t?n t?i và m?i ng?n ng? có ít nh?t m?t tri?n khai, m?i ng?n ng? bao g?m m?t b? c?ng c? l?p trình riêng ?i kèm. Các c?ng c? này có th? là các ch??ng trình t??ng ??i khép kín nh? trình biên d?ch, trình g? l?i, trình th?ng d?ch, trình liên k?t và trình so?n th?o v?n b?n, có th? ???c k?t h?p v?i nhau ?? hoàn thành m?t nhi?m v?; ho?c chúng có th? t?o thành m?t m?i tr??ng phát tri?n tích h?p (IDE), k?t h?p nhi?u ho?c t?t c? các ch?c n?ng c?a các c?ng c? ??c l?p ?ó. IDE có th? làm ?i?u này b?ng cách g?i các c?ng c? riêng l? có liên quan ho?c b?ng cách th?c hi?n l?i ch?c n?ng c?a chúng theo m?t cách m?i. M?t IDE có th? giúp th?c hi?n các tác v? c? th? d? dàng h?n, ch?ng h?n nh? tìm ki?m trong các t?p trong m?t d? án c? th?. Nhi?u tri?n khai ng?n ng? l?p trình cung c?p tùy ch?n s? d?ng c? hai c?ng c? riêng l? ho?c IDE.
Ch? ??
s?aKi?n trúc
s?aNg??i dùng th??ng th?y m?i th? khác v?i l?p trình viên. Nh?ng ng??i s? d?ng máy tính ?a n?ng hi?n ??i (trái ng??c v?i h? th?ng nhúng, máy tính t??ng t? và siêu máy tính) th??ng th?y ba l?p ph?n m?m th?c hi?n nhi?u nhi?m v? khác nhau: n?n t?ng, ?ng d?ng và ph?n m?m ng??i dùng.
- Ph?n m?m n?n t?ng
N?n t?ng bao g?m ph?n s?n, trình ?i?u khi?n thi?t b?, h? ?i?u hành và th??ng là giao di?n ng??i dùng ?? h?a, nói chung, cho phép ng??i dùng t??ng tác v?i máy tính và các thi?t b? ngo?i vi (thi?t b? ?i kèm). Ph?n m?m n?n t?ng th??ng ?i kèm v?i máy tính. Trên PC, ng??i ta th??ng có kh? n?ng thay ??i ph?n m?m n?n t?ng. - Ph?n m?m ?ng d?ng
Ph?n m?m ?ng d?ng ho?c ?ng d?ng là nh?ng gì h?u h?t m?i ng??i ngh? ??n khi h? ngh? v? ph?n m?m. Ví d? ?i?n hình bao g?m gói ?ng d?ng v?n phòng và trò ch?i video. Ph?n m?m ?ng d?ng th??ng ???c mua riêng, ??c l?p v?i ph?n c?ng máy tính. ??i khi các ?ng d?ng c?ng ???c ?óng gói cùng v?i máy tính, nh?ng ?i?u ?ó kh?ng thay ??i th?c t? là chúng ch?y nh? các ?ng d?ng ??c l?p. Các ?ng d?ng th??ng là các ch??ng trình ??c l?p v?i h? ?i?u hành, m?c dù chúng th??ng ???c thi?t k? riêng cho t?ng n?n t?ng c? th?. H?u h?t ng??i dùng ngh? v? trình biên d?ch, c? s? d? li?u và "ph?n m?m h? th?ng" khác nh? là các ?ng d?ng. - Ph?n m?m do ng??i dùng t? vi?t
H? th?ng có kh? n?ng ???c ?i?u ch?nh cho phép ng??i dùng cu?i t? l?p trình ?? ?áp ?ng nhu c?u c? th? c?a ng??i dùng. Ph?n m?m ng??i dùng bao g?m các m?u b?ng tính và các m?u x? ly v?n b?n. Ngay c? các b? l?c email là m?t lo?i ph?n m?m do ng??i dùng tùy bi?n. Ng??i dùng t? t?o ph?n m?m này và th??ng b? qua t?m quan tr?ng c?a nó. Tùy thu?c vào m?c ?? thành th?o c?a ph?n m?m do ng??i dùng vi?t vào các gói ?ng d?ng m?c ??nh, nhi?u ng??i dùng có th? kh?ng nh?n ra s? khác bi?t gi?a các gói ban ??u và nh?ng gì ?? ???c các ??ng nghi?p thêm vào.
Th?c hi?n - ch?y - th?c thi
s?aPh?n m?m máy tính ph?i ???c "t?i" vào b? l?u tr? c?a máy tính (nh? ? c?ng ho?c b? nh?). Khi ph?n m?m ?? ???c t?i, máy tính có th? th?c thi ph?n m?m. ?i?u này liên quan ??n vi?c chuy?n các h??ng d?n t? ph?n m?m ?ng d?ng, th?ng qua ph?n m?m h? th?ng, ??n ph?n c?ng cu?i cùng nh?n ???c l?nh d??i d?ng m? máy. M?i l?nh làm cho máy tính th?c hi?n thao tác d? li?u di chuy?n, th?c hi?n tính toán ho?c thay ??i lu?ng ?i?u khi?n c?a l?nh.
Vi?c di chuy?n d? li?u th??ng t? n?i này trong b? nh? sang n?i khác. ??i khi nó liên quan ??n vi?c di chuy?n d? li?u gi?a b? nh? và các thanh ghi, ?i?u này cho phép truy c?p d? li?u t?c ?? cao trong CPU. Di chuy?n d? li?u, ??c bi?t là khi di chuy?n s? l??ng l?n d? li?u, có th? khá m?t th?i gian. Vì v?y, ?i?u này ??i khi ???c tránh b?ng cách s? d?ng "con tr?" ?? thay th? cho d? li?u th?c s?. Vi?c tính toán bao g?m các ho?t ??ng ??n gi?n nh? t?ng giá tr? c?a m?t y?u t? d? li?u bi?n. Các tính toán ph?c t?p h?n có th? liên quan ??n nhi?u phép toán và các y?u t? d? li?u khác nhau.
Ch?t l??ng và ?? tin c?y
s?aCh?t l??ng ph?n m?m r?t quan tr?ng, ??c bi?t ??i v?i các ph?n m?m th??ng m?i và h? th?ng nh? Microsoft Office, Microsoft Windows và Linux. N?u ph?n m?m b? l?i (l?i), nó có th? xóa c?ng vi?c c?a m?t ng??i, làm h?ng máy tính và làm nh?ng vi?c kh?ng mong mu?n khác. L?i và l?i ???c g?i là "l?i" th??ng ???c phát hi?n trong quá trình th? nghi?m alpha và beta. Ph?n m?m c?ng th??ng là n?n nhan c?a s? l?o hóa ph?n m?m, s? suy gi?m hi?u su?t l?y ti?n do s? k?t h?p c?a các l?i kh?ng nhìn th?y ???c.
Nhi?u l?i ???c phát hi?n và lo?i b? (g? l?i) th?ng qua ki?m tra ph?n m?m. Tuy nhiên, vi?c ki?m th? ph?n m?m hi?m khi ???c x? ly n?u có th? lo?i b? m?i l?i; M?t s? l?p trình viên nói r?ng "m?i ch??ng trình ??u có ít nh?t m?t l?i n?a" (Lu?t c?a Lubarsky).[10] Trong thác ph??ng pháp phát tri?n ph?n m?m, các ??i ki?m tra riêng bi?t th??ng ???c s? d?ng, nh?ng trong cách ti?p c?n m?i h?n, g?i chung là l?p trình linh ho?t, các nhà phát tri?n th??ng làm t?t c? nh?ng th? nghi?m riêng c?a h?, và ch?ng minh ph?n m?m cho ng??i dùng / khách hàng th??ng xuyên ?? có ???c th?ng tin ph?n h?i. Ph?n m?m có th? ???c ki?m tra th?ng qua ki?m tra ??n v?, ki?m tra h?i quy và các ph??ng pháp khác, ???c th?c hi?n th? c?ng ho?c ph? bi?n nh?t, vì s? l??ng m? ???c ki?m tra có th? khá l?n. Ch?ng h?n, NASA có quy trình ki?m th? ph?n m?m c?c k? nghiêm ng?t ??i v?i nhi?u h? ?i?u hành và ch?c n?ng giao ti?p. Nhi?u ho?t ??ng d?a trên NASA t??ng tác và xác ??nh l?n nhau th?ng qua các ch??ng trình ch? huy. ?i?u này cho phép nhi?u ng??i làm vi?c t?i NASA ki?m tra và ?ánh giá t?ng th? các h? th?ng ch?c n?ng. Các ch??ng trình ch?a ph?n m?m ch? huy cho phép k? thu?t ph?n c?ng và v?n hành h? th?ng ho?t ??ng d? dàng h?n nhi?u.
Gi?y phép
s?aGi?y phép c?a ph?n m?m cung c?p cho ng??i dùng quy?n s? d?ng ph?n m?m trong m?i tr??ng ???c c?p phép và trong tr??ng h?p gi?y phép ph?n m?m mi?n phí, c?ng c?p các quy?n khác nh? quy?n sao chép.
Ph?n m?m ??c quy?n có th? ???c chia thành hai lo?i:
- ph?n m?m mi?n phí, bao g?m danh m?c ph?n m?m "dùng th? mi?n phí" ho?c ph?n m?m " freemium " (tr??c ?ay, thu?t ng? ph?n m?m chia s? th??ng ???c s? d?ng cho ph?n m?m dùng th? / freemium mi?n phí). Nh? tên cho th?y, ph?n m?m mi?n phí có th? ???c s? d?ng mi?n phí, m?c dù trong tr??ng h?p dùng th? mi?n phí ho?c ph?n m?m freemium, ?i?u này ??i khi ch? ?úng trong m?t kho?ng th?i gian gi?i h?n ho?c v?i ch?c n?ng h?n ch?.
- ph?n m?m có s?n cho m?t kho?n phí, th??ng ???c g?i là " ph?n m?m th??ng m?i " kh?ng chính xác, ch? có th? ???c s? d?ng h?p pháp khi mua gi?y phép s? d?ng.
M?t khác, ph?n m?m ngu?n m? ?i kèm v?i gi?y phép ph?n m?m mi?n phí, c?p cho ng??i nh?n quy?n s?a ??i và phan ph?i l?i ph?n m?m.
B?ng sáng ch?
s?aB?ng sáng ch? ph?n m?m, gi?ng nh? các lo?i b?ng sáng ch? khác, v? m?t ly thuy?t ???c cho là cung c?p cho nhà phát minh m?t gi?y phép ??c quy?n, có gi?i h?n th?i gian cho m?t y t??ng chi ti?t (ví d?: thu?t toán) v? cách tri?n khai m?t ph?n m?m ho?c m?t thành ph?n c?a m?t ph?n m?m. Các y t??ng cho nh?ng ?i?u h?u ích mà ph?n m?m có th? làm và các yêu c?u c?a ng??i dùng, kh?ng ???c coi là có th? ???c c?p b?ng sáng ch? và vi?c tri?n khai c? th? (ngh?a là các gói ph?n m?m th?c t? th?c hi?n b?ng sáng ch?) th??ng kh?ng ???c c?p b?ng sáng ch?. t? ??ng. Vì v?y, b?ng sáng ch? ph?n m?m ???c cho là bao g?m khu v?c gi?a, gi?a các yêu c?u và th?c hi?n c? th?. ? m?t s? qu?c gia, yêu c?u phát minh ???c tuyên b? là có ?nh h??ng ??n th? gi?i v?t ly c?ng có th? là m?t ph?n trong các yêu c?u ??i v?i b?ng sáng ch? ph?n m?m ph?i có hi?u l?c, m?c dù t?t c? các ph?n m?m h?u ích ??u có tác d?ng ??i v?i th? gi?i v?t ly, yêu c?u này có th? là m? ?? tranh lu?n. Trong khi ?ó, lu?t b?n quy?n c?a M? ?? ???c áp d?ng cho các khía c?nh khác nhau c?a vi?c vi?t m? ph?n m?m.[11]
B?ng sáng ch? ph?n m?m ?ang gay tranh c?i trong ngành c?ng nghi?p ph?n m?m v?i nhi?u ng??i gi? các quan ?i?m khác nhau v? chúng. M?t trong nh?ng ngu?n gay tranh c?i là s? phan chia nói trên gi?a các y t??ng ban ??u và b?ng sáng ch? d??ng nh? kh?ng ???c t?n vinh trong th?c t? b?i các lu?t s? sáng ch?, ví d? nh? b?ng sáng ch? cho L?p trình h??ng ??i t??ng (AOP), có y ??nh ?òi quy?n ??i v?i b?t k? c?ng c? l?p trình nào th?c hi?n y t??ng v? AOP, dù th?c hi?n th? nào. M?t ngu?n tranh c?i khác là ?nh h??ng ??n s? ??i m?i, v?i nhi?u chuyên gia và c?ng ty n?i ti?ng cho r?ng ph?n m?m là m?t l?nh v?c chuy?n ??ng nhanh ??n m?c các b?ng sáng ch? ph?n m?m ch? t?o ra chi phí và r?i ro ki?n t?ng l?n, và th?c s? làm ch?m s? ??i m?i. Trong tr??ng h?p tranh lu?n v? b?ng sáng ch? ph?n m?m bên ngoài Hoa K?, ng??i ta ?? ??a ra l?p lu?n r?ng các t?p ?oàn l?n và lu?t s? sáng ch? c?a M? có th? là ng??i h??ng l?i chính trong vi?c cho phép ho?c ti?p t?c cho phép b?ng sáng ch? ph?n m?m.
Thi?t k? và th?c hi?n
s?aThi?t k? và tri?n khai ph?n m?m khác nhau tùy thu?c vào ?? ph?c t?p c?a ph?n m?m. Ch?ng h?n, vi?c thi?t k? và t?o Microsoft Word m?t nhi?u th?i gian h?n so v?i thi?t k? và phát tri?n Microsoft Notepad vì ph?n m?m sau có ch?c n?ng c? b?n h?n nhi?u.
Ph?n m?m th??ng ???c thi?t k? và t?o (còn ???c m? hóa / vi?t / l?p trình) trong các m?i tr??ng phát tri?n tích h?p (IDE) nh? Eclipse, IntelliJ và Microsoft Visual Studio có th? ??n gi?n hóa quy trình và biên d?ch ph?n m?m (n?u có). Nh? ?? l?u y trong m?t ph?n khác, ph?n m?m th??ng ???c t?o trên ??u ph?n m?m hi?n có và giao di?n l?p trình ?ng d?ng (API) mà ph?n m?m bên d??i cung c?p nh? GTK +, JavaBeans ho?c Swing. Th? vi?n (API) có th? ???c phan lo?i theo m?c ?ích c?a h?. Ch?ng h?n, Spring Framework ???c s? d?ng ?? tri?n khai các ?ng d?ng doanh nghi?p, th? vi?n Windows Forms ???c s? d?ng ?? thi?t k? các ?ng d?ng giao di?n ng??i dùng ?? h?a (GUI) nh? Microsoft Word và Windows Communication Foundation ???c s? d?ng ?? thi?t k? các d?ch v? web. Khi m?t ch??ng trình ???c thi?t k?, nó ph? thu?c vào API. Ch?ng h?n, m?t ?ng d?ng Microsoft Windows dành cho máy tính ?? bàn có th? g?i các hàm API trong . Th? vi?n NET Forms Forms nh? Form1.Close() và Form1.Show()[12] ?? ?óng ho?c m? ?ng d?ng. Kh?ng có các API này, l?p trình viên s? c?n ph?i t? vi?t các ch?c n?ng này. Các c?ng ty nh? Oracle và Microsoft cung c?p API riêng c?a h? ?? nhi?u ?ng d?ng ???c vi?t b?ng th? vi?n ph?n m?m c?a h? th??ng có nhi?u API trong ?ó.
Các c?u trúc d? li?u nh? b?ng b?m, m?ng và cay nh? phan và các thu?t toán nh? quicksort, có th? h?u ích cho vi?c t?o ph?n m?m.
Ph?n m?m máy tính có các ??c tính kinh t? ??c bi?t làm cho thi?t k?, sáng t?o và phan ph?i c?a nó khác v?i h?u h?t các hàng hóa kinh t? khác. [13][14]
M?t ng??i t?o ra ph?n m?m ???c g?i là l?p trình viên, k? s? ph?n m?m ho?c nhà phát tri?n ph?n m?m, các thu?t ng? mà t?t c? ??u có y ngh?a t??ng t? nhau. Nhi?u thu?t ng? kh?ng chính th?c cho l?p trình viên c?ng t?n t?i nh? "coder" và "hacker" – m?c dù vi?c s? d?ng t? hacker có th? gay nh?m l?n, b?i vì nó th??ng ???c s? d?ng ?? ch? ng??i nào ?ó xam nh?p trái phép vào h? th?ng máy tính.
C?ng nghi?p và t? ch?c
s?aM?t s? l??ng l?n các c?ng ty ph?n m?m và l?p trình viên trên th? gi?i bao g?m m?t ngành c?ng nghi?p ph?n m?m. Ph?n m?m có th? là m?t ngành có l?i nhu?n cao: Bill Gates, ng??i ??ng sáng l?p Microsoft là ng??i giàu nh?t th? gi?i n?m 2009, ph?n l?n là do ?ng s? h?u m?t s? l??ng c? ph?n ?áng k? trong Microsoft, c?ng ty s?n xu?t ra các ph?n m?m Microsoft Windows và Microsoft Office - c? hai ??u th?ng tr? th? tr??ng th? gi?i trong các lo?i s?n ph?m t??ng ?ng c?a chúng.
Các t? ch?c ph?n m?m phi l?i nhu?n bao g?m Qu? Ph?n m?m T? do, D? án GNU và Qu? Mozilla. Các t? ch?c tiêu chu?n ph?n m?m nh? W3C, IETF phát tri?n các tiêu chu?n ph?n m?m ???c ?? xu?t nh? XML, HTTP và HTML, ?? ph?n m?m có th? t??ng tác th?ng qua các tiêu chu?n này.
Các c?ng ty ph?n m?m n?i ti?ng khác bao g?m Google, IBM, TCS, Infosys, Wipro, HCL Technologies, Oracle, Novell, SAP, Symantec, Adobe Systems, Sidetrade và Corel, trong khi các c?ng ty nh? th??ng cung c?p s? ??i m?i v? n?i dung ph?n m?m.
Xem thêm
s?aTham kh?o
s?a- ^ "Compiler construction". L?u tr? b?n g?c ngày 2 tháng 11 n?m 2013.
- ^ a b Evans 2018, tr. 21.
- ^ Fuegi, J.; Francis, J. (2003). "Lovelace & Babbage and the creation of the 1843 'notes'". Annals of the History of Computing. Quy?n 25 s? 4. tr. 16–26. doi:10.1109/MAHC.2003.1253887.
- ^ "Ada Lovelace honoured by Google doodle". The Guardian. ngày 10 tháng 12 n?m 2012. Truy c?p ngày 25 tháng 11 n?m 2018.
- ^ a b Computer Languages 1989, 1. Невидимый конструктор.
- ^ Computer Languages 1989, 1. Невидимый конструктор § Создание кодов, понятных человеку.
- ^ Computer Languages 1989, 1. Невидимый конструктор § Шаг на благо программирования.
- ^ "System Software". The University of Mississippi. B?n g?c l?u tr? ngày 30 tháng 5 n?m 2001.
- ^ "Embedded Software—Technologies and Trends". IEEE Computer Society. May–June 2009. L?u tr? b?n g?c ngày 28 tháng 10 n?m 2013. Truy c?p ngày 6 tháng 11 n?m 2013.
- ^ "scripting intelligence book examples". ngày 9 tháng 5 n?m 2018. L?u tr? b?n g?c ngày 6 tháng 11 n?m 2015.
- ^ Gerardo C?n Díaz, "Các v?n b?n trong máy: Lu?t B?n quy?n M? và Nhi?u Natures c?a ph?n m?m, 1974-1978," C?ng ngh? và V?n hóa 57 (tháng 10 n?m 2016), 753-79.
- ^ "MSDN Library". L?u tr? b?n g?c ngày 11 tháng 6 n?m 2010. Truy c?p ngày 14 tháng 6 n?m 2010.
- ^ v. Engelhardt, Sebastian (2008). "The Economic Properties of Software". Jena Economic Research Papers. Quy?n 2 s? 2008–045. L?u tr? b?n g?c ngày 5 tháng 1 n?m 2016.
- ^ Kaminsky, Dan (1999). "Why Open Source Is The Optimum Economic Paradigm for Software". L?u tr? b?n g?c ngày 22 tháng 5 n?m 2012.
??c thêm
s?a- Evans, Claire L. (2018). Broad Band: The Untold Story of the Women Who Made the Internet. New York: Portfolio/Penguin. ISBN 9780735211759.