Komputer Program jest zbiorem instrukcji i operacji, które mają być wykonywane przez komputer .
Program jest ogólnie częścią oprogramowania, które można zdefiniować jako zbiór elementów cyfrowych przeznaczonych do świadczenia usług komputerowych. Oprogramowanie może zawierać kilka programów. Występuje zatem w urządzeniach komputerowych ( komputer , konsola do gier , bankomat itp.), w sprzęcie komputerowym , a także w wielu urządzeniach elektronicznych ( drukarka , modem , GPS , telefon komórkowy , pralka , urządzenie. zdjęcie cyfrowe , dekoder TV cyfrowy, wtrysk elektroniczny , autopilot ...).
Programy komputerowe podlegają prawom autorskim i przepisom podobnym do dzieł artystycznych.
W 1842 roku , hrabina Ada Lovelace tworzy wykresy dla silnika analitycznego z Charles Babbage . Diagramy te są dziś uważane za pierwsze programy komputerowe na świecie. Jednak teoria ta jest przedmiotem kontrowersji, ponieważ Babbage również sam napisał swoje pierwsze programy do swojej maszyny analitycznej , chociaż większość nigdy nie została opublikowana. Na przykład Bromley odnotowuje przykłady programów przygotowanych przez Babbage'a w latach 1837-1840: wszystkie jego notatki poprzedzają te, które napisał Lovelace. Jednak koncepcja programowania i programowania rejestrowanego została po raz pierwszy sformułowana teoretycznie w 1936 roku przez Alana Turinga .
W 1940 roku, pierwsze komputery, takie jak Z3 czy Mark I , zostały stworzone. Programy komputerowe były następnie projektowane przez analityków, pisane przez programistów i wprowadzane przez operatorów na taśmach typu telex lub perforowanych kartach kartonowych . Uruchomienie programu polegało na wprowadzeniu odpowiedniego paska lub stosu kart do czytnika elektromechanicznego.
Pierwszy system operacyjny został opracowany w 1954 roku. W tym samym roku pojawiły się pierwsze asemblery i pierwszy kompilator dla języka Fortran .
Nauczanie programowania zorganizowano najpierw wśród producentów komputerów i na pierwszych uniwersytetach, na których zainstalowano te maszyny - od początku lat 50. w Anglii i Stanach Zjednoczonych, a następnie w połowie tej samej dekady w Europie kontynentalnej i Japonii. Są to kursy techniczne, ale rosnąca złożoność przedmiotu (kompilatory, systemy) stopniowo doprowadzi do powstania nowej nauki.
Pojawienie się programowania strukturalnego około 1970 roku znacznie uprościło pracę programistów i umożliwiło tworzenie programów zajmujących się coraz bardziej złożonymi zadaniami. To samo dotyczy nadejścia programowania obiektowego w latach 1980-1990. Zgodnie ze zdaniem Edsgera Dijkstry : „Postęp będzie możliwy tylko wtedy, gdy będziemy mogli myśleć o programach bez wyobrażania ich jako fragmentów kodu. wykonywalnych”. Regularnie tworzone są nowe języki programowania lub metaprogramowania w celu uproszczenia i przyspieszenia możliwości oferowanych przez programowanie.
Wreszcie miniaturyzacja komputerów i uogólnienie interfejsów graficznych w dużej mierze przyczyniły się do demokratyzacji korzystania z komputera, do tego stopnia, że w latach 2010 uogólnienie smartfonów pozwoliło użytkownikom na stałe uruchamianie programów komputerowych.
Programowanie jest, począwszy od pomysłu, aby dzieło refleksji, która doprowadziła do pisania algorytmów w języku programowania. Języki programowania powstały w celu ułatwienia pracy programisty poprzez skrócenie ścieżki, która biegnie od pomysłu do kodu źródłowego.
Programy tworzone są przez programistów lub inżynierów oprogramowania. Programiści pracują głównie nad pisaniem programów, podczas gdy inżynierowie oprogramowania pracują przez wszystkie etapy tworzenia programu. Stosują formalne i rygorystyczne podejście oparte na inżynierii przemysłowej i technikach zarządzania.
Przed przystąpieniem do pisania programu rozwiązującego problem, programista musi określić charakterystykę problemu do rozwiązania. Odbywa się to w kilku krokach niezależnie od używanego języka programowania. Powszechną techniką jest cykl rozwojowy , który obejmuje etapy definiowania, projektowania, pisania, testowania, instalacji i konserwacji:
Celem cyklu rozwojowego jest obniżenie kosztów produkcji przy jednoczesnym podniesieniu jakości programu. Poszukiwane cechy to wydajność, elastyczność, niezawodność, przenośność i solidność. Powinien być również przyjazny dla użytkownika i łatwy do edycji.
Oczekuje się, że program będzie wymagał niewielkiego wysiłku programistycznego, instrukcje zabierają mało czasu i wymagają mało pamięci, może być używany do wielu celów i da oczekiwane rezultaty niezależnie od warunków zmiany - stałe lub tymczasowe - w systemie komputerowym .
Oczekuje się również, że można go łatwo przenieść na inny model komputera niż ten, dla którego jest zbudowany, że daje przekonujące wyniki nawet wtedy, gdy wprowadzone informacje są nieprawidłowe, że może być łatwo zrozumiany przez początkującego użytkownika oraz że kod źródłowy można później łatwo modyfikować.
Język programowania jest notacja używana do wyrażania algorytmów i programów do zapisu. Algorytm to proces uzyskiwania wyniku poprzez kolejne obliczenia, opisany w postaci piktogramów i prostych terminów w języku naturalnym. Do 1950 roku programiści wypowiadali programy w językach maszynowych lub asemblerowych , językach trudnych do odczytania dla człowieka i w których każda instrukcja niewiele robi, co czyniło pracę żmudną, a wynik podatny na wiele błędów. Już w 1950 roku programy były opisywane w różnych językach dedykowanych ludziom, a bardziej maszynom – językom programowania – co ułatwiało wyrażanie operacji. Program został następnie automatycznie przetłumaczony na formularz, który może być wykonywany przez komputer.
Na żądanie komputer wykona instrukcje programu. Chociaż zawsze wykonuje dokładnie to, co zostało poinstruowane i nigdy nie jest błędne, zdarzają się sytuacje, w których wykonywane przez niego instrukcje są błędne w wyniku błędu ludzkiego podczas pisania programu. Języki programowania mają na celu zmniejszenie liczby tych błędów ; są one jednak nieuniknione w programach liczących kilka tysięcy wierszy. Program do edycji tekstu może składać się z ponad 750 000 linii kodu, a system operacyjny z ponad 50 milionów linii. Średnio programista przygotowuje, pisze, testuje i dokumentuje około 20 linii programu dziennie, a tworzenie dużych programów to praca zespołów i może trwać kilka miesięcy, a nawet lat.
Programowanie jest centralnym przedmiotem w informatyce. Polecenia do wykonania przez komputer muszą mieć możliwość wyrażenia w sposób precyzyjny i jednoznaczny. Aby to zrobić, języki programowania łączą czytelność języka angielskiego z dokładnością matematyki. Programy tworzone są przez programistów lub inżynierów oprogramowania. Tworzenie programu obejmuje szereg czynności, takich jak projektowanie, pisanie, testowanie i dokumentowanie. W celu uzyskania lepszej jakości programu prace programistyczne prowadzone są zgodnie z systematycznym i zaplanowanym procesem.
Język programowania to słownictwo i zestaw reguł pisania używanych do instruowania komputera, aby wykonał określone zadania. O większości języków programowania mówi się , że są na wysokim poziomie , to znaczy, że ich notacja jest inspirowana językami naturalnymi (najczęściej angielskim).
Procesor to element elektroniczny, który wykonuje instrukcje. Każdy procesor jest zaprojektowany do wykonywania określonych instrukcji, zwanych instrukcjami maszynowymi . Zakres instrukcji dostępnych na procesorze tworzy język maszynowy . Na przykład procesor Intel 80486 ma paletę 342 instrukcji.
Język asemblerowy to tekstowa reprezentacja instrukcji maszynowych, język niskiego poziomu , który pozwala na wyrażenie instrukcji maszynowych w formie symbolicznej, która jest łatwiejsza do manipulowania, gdzie istnieje zgodność 1-1 między instrukcjami maszynowymi a instrukcjami języka asemblerowego.
Języki programowania wysokiego poziomu pozwalają na wyrażenie instrukcji w sposób syntetyczny, ignorując język maszynowy. W porównaniu z językiem asemblerowym, pozwalają na wyrażanie struktur, pozwalają na pisanie programów szybciej, z mniejszą ilością instrukcji. Programy napisane w językach wysokiego poziomu są łatwiejsze w modyfikowaniu i przenoszeniu oraz mogą działać z różnymi procesorami. Jednak program wyrażony w języku wysokiego poziomu, a następnie skompilowany, jest mniej wydajny i ma więcej instrukcji niż gdyby był wyrażony w asemblerze.
W latach 1950-2000 pojawiło się ponad 50 języków programowania. Każdy z nich przyniósł wiele nowych koncepcji, udoskonaleń i innowacji. Do lat 50. używanie języków programowania było podobne do pisania instrukcji maszynowych. Innowacją lat 60. było umożliwienie notacji zbliżonej do matematyki do pisania instrukcji obliczeniowych. Innowacje lat 70. umożliwiły organizowanie i agregowanie informacji obsługiwanych przez programy – patrz struktura danych i struktura kontroli . Wtedy pojawienie się pojęcia obiektu wpłynęło na ewolucję języków programowania po 1980 roku.
Poniżej znajduje się program Hello world wyrażony w języku programowania Java :
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }Ten sam program, wyrażony w asemblerze procesorów x86 :
main proc jmp debut mess db 'Hello world!$' debut: mov dx, offset mess mov ah, 9 int 21h ret main endp cseg ends end mainProgram zazwyczaj składa się z zestawu procedur i funkcji . Procedura to seria instrukcji przeznaczonych do wykonania operacji; na przykład sortowanie listy. Funkcja to seria instrukcji, których celem jest uzyskanie wyniku; na przykład obliczenia.
Bug to wada budowy w programie. Instrukcje wykonywane przez urządzenie komputerowe nie są zgodne z oczekiwaniami, powodując awarie i awarie. Praktyka programowania komputerowego wymaga narzędzi do śledzenia lub unikania błędów lub weryfikacji poprawności programu.
Implementacja programu opiera się na zasadzie maszyny z programami przechowywanymi Johna von Neumanna : instrukcje programu są wykonywane przez procesor . Ten komponent elektroniczny wykonuje każdą instrukcję programu poprzez kolejne operacje ładowania / dekodowania / wykonywania: instrukcja jest najpierw kopiowana z pamięci do procesora, a następnie jest dzielona bit po bicie, aby określić operację do wykonania, która jest ostatecznie wykonywana . Większość operacji to operacje arytmetyczne (dodawanie, odejmowanie) lub logiczne . Wykonywanie programów przez procesor centralny (ang. CPU ) kontroluje całość operacji wykonywanych przez komputer.
Wykonanie cyklu ładowania, dekodowania i wykonywania jest przerywane zegarem podłączonym do procesora.
W 2011 r. częstotliwość taktowania obsługiwana przez współczesne procesory liczona jest w megahercach lub gigahercach, co odpowiada milionom, a nawet miliardom cykli na sekundę.
Współczesne procesory mogą przetwarzać wiele instrukcji jednocześnie: gdy instrukcja jest ładowana, procesor natychmiast ładuje następną instrukcję, nie czekając na jej zdekodowanie i wykonanie, a procesory mogą również ładować / dekodować / wykonywać wiele instrukcji w jednym cyklu zegara .
ProcesAby można było wykonać, program musi być załadowany do pamięci maszyny. Wczytywanie programu może być albo automatyczne, albo zaprogramowane, gdy starter komputera, na przykład, jest interaktywny i jest wyzwalany przez jawną kolejność wykonania użytkownika (wyraźne polecenie, naciśnięcie przycisku , przycisku, ikony…). W zależności od charakteru wykonywanej akcji, program może być wykonywany ad hoc (drukowanie tekstu), powtarzalnie (aktualizacja współrzędnych GPS) lub (prawie) na stałe (czujniki monitorujące).
Program to seria instrukcji, które w sposób jednoznaczny określają krok po kroku reprezentacje danych i obliczenia. Instrukcje mają na celu manipulowanie danymi podczas wykonywania programu. Sam program jest zdefiniowany przez algorytm (y) lub specyfikację . Program dokładnie opisuje różne etapy algorytmu: co robić, kiedy iz jaką informacją. Zgodnie z stworzoną w 1945 roku architekturą von Neumanna do pamięci komputera wczytywany jest program, co umożliwia jego wielokrotne uruchamianie bez ingerencji człowieka, a przede wszystkim wykorzystanie tej samej maszyny do uruchamiania tylu programów, ile chcemy. Pamięć dedykowana programom to także pamięć dedykowana danych, co umożliwia traktowanie programów jako danych jak każdy inny (np. pisanie nowych programów w taki sam sposób, jak pisze się dokument tekstowy), a następnie ich przetwarzanie. .
Programy mogą być wykonywane nie tylko przez komputery, ale przez wiele urządzeń opartych na podzespołach komputerowych - np. niektóre roboty domowe, telefony, faksy, przyrządy pomiarowe, odbiornik telewizyjny, a także elementy sprzętu komputerowego, np. sprzęt komputerowy. napędy, routery, drukarki, konsole do gier wideo, asystenci osobiści i bankomaty. W przeciwieństwie do komputerów urządzenia te często nie zawierają systemu operacyjnego, programy są zapisywane w urządzeniu podczas produkcji, a szybkość wykonywania programu często ma niewielkie znaczenie.
Bez przeciwwskazań, instrukcje programu są wykonywane jedna po drugiej, w sposób liniowy. Języki programowania umożliwiają wyrażanie alternatyw: seria instrukcji jest wykonywana tylko wtedy, gdy spełniony jest dany warunek, w przeciwnym razie wykonywana jest kolejna seria. Języki programowania pozwalają również na powtarzanie wykonania serii instrukcji, aż do spełnienia danego warunku.
Wykonanie odbywa się w różny sposób w zależności od tego, czy język programowania jest używany z kompilatorem czy interpreterem .
Kryterium | Kompilacja | Interpretacja |
---|---|---|
Efektywność | Natywny kod maszynowy
Można zoptymalizować |
10 do 100 razy wolniej
Wywoływanie podprogramów Brak wzmocnienia na pętlach |
Skupiać | Link do błędu ↔ złożone źródło | Instrukcja Link ↔ trywialne wykonanie
Prosty ślad i obserwacje |
Cykl rozwoju | Kompletny cykl z każdą modyfikacją:
kompilacja, linkowanie, wykonanie |
Bardzo krótki cykl:
zmodyfikuj i uruchom ponownie |
Współczesne komputery uruchamiają „nadrzędny” program zwany systemem operacyjnym . Pozwala na wykonanie podprogramów, które mogą następnie korzystać z funkcjonalności oferowanych przez system i które w określonych przypadkach muszą być dostosowane do tego środowiska. Współczesne systemy operacyjne pozwalają na jednoczesne uruchamianie wielu programów w procesie , nawet na jednym procesorze: system operacyjny typu planner (program angielski : scheduler ) przerywa regularnie uruchomiony program, aby uścisnąć dłoń drugiemu. Szybkość rotacji daje złudzenie, że programy są wykonywane w tym samym czasie.
Podprogram systemu operacyjnego sam może być środowiskiem do wykonywania programów (z innym interfejsem ); na przykład maszyna wirtualna .
Zgodnie z prawem program jest dziełem pisemnym, chronionym prawem autorskim . Dotyczy to programu, o ile jest zapisany na stałe, nawet jeśli nie ma edycji drukowanej. Prawa autorskie chronią zarówno program źródłowy, jak i program binarny.