Nasze wyobrażenie o komputerach
Większości społeczeństwa wie jak działa komputer i zna ich podstawową obsługę. Wiemy, że programy działają dzięki temu, że programiści konstruują dla nich odpowiednie algorytmy. Prosty algorytm zawiera program Notatnik i jest on napisany w języku naturalnym czyli takim, jakim posługują się ludzie. Najdziwniejsze jest to, że pogram Notatnik rozumieją ludzie, ale nie rozumie go komputer. Dla bezmyślnej maszyny jest on po prostu zbyt niejednoznaczny i niejasny. Po prostu język komputera jest dla równowagi zupełnie niezrozumiały dla ludzi. Wydaje nam się, że wystarczy, by komputer wykonał to, co mu każemy. Rzeczywistość jest inna. Do tego właśnie jest wymyślony język programowania. Program zapisany w języku programowania jest zwykłym tekstem, ale sam taki tekst nie wystarczy, aby napisaną aplikację uruchomić. Najpierw należy ją zamienić w plik wykonywalny np. w systemie Windows są to pliki z rozszerzeniem EXE. Programy piszemy w językach programowania, które są formą komunikacji z komputerem i wydawania mu poleceń. Są one następnie poddawane innym procesom, które zamieniają zapis tekstowy w kod maszynowy. W wyniku tych kilku czynności powstaje gotowy plik, który pozwala uruchomić program. Jak widać z załączonych informacji sprawa wymaga przejścia poszczególnych etapów. Jest ona niekiedy niezrozumiała dla nas. Większość ludzi tych etapów nie zna. Język programowania składa się ze zbiorów reguł, które opisują, jak należy budować poprawne wyrażenia oraz jak komputer ma je rozumieć. Wiele języków programowania posiada pisemną specyfikację swojej składni. Języki naturalne służą do komunikacji między ludźmi, natomiast języki programowania umożliwiają wydawanie poleceń komputerom. Obecnie istnieje tysiące języków programowania i każdego roku powstają nowe. Maszyny wykorzystują swój język i zadania dokładniej niż człowiek, dlatego każdą czynność trzeba opisać ściśle krok po kroku, ponieważ komputer nie potrafi się żadnej rzeczy domyślić. Pierwsze języki programowania były ściśle związane z konkretnym komputerem bądź z konkretnym sprzętem. Z biegiem czasu wynalezione zostały nowe techniki tworzenia oprogramowania, które w znaczny sposób poprawiają zadania.