- Testowa kopia wikipedi :D
FinalViki - bo SPAM się opłaca.

Co ciekawego u innych?

site:spam-factory.eu
No właśnie - po sprawdzeniu situ dla domeny spam-factory.eu w google, okazuje się, że domena nadal ma site na poziomie 15.500 stron i pomimo, że ban poleciał ponad dwa tygodnie temu nadal się trzyma. Troszkę to dziwne, szczególnie, że tak naprawdę google pokazuje tylko niecałe 60 stron. Ale dzięki temu wiem, że ban ominął tylko [...] Related posts:
  1. Kopia wikipedii u siebie ? Według niektórych, czas kopii wikipedii przeminął, według innych jest dalej...
  2. megaViki - kolejna Wiki w moim wydaniu Chyba jestem maniakiem kopii Wikipedii ;) Ostatnimi czasy w wolnych...
  3. DMOZ - łatwy sposób na site? Latając ostatnio po necie przypomniałem sobie o niegdyś bardzo popularnych...
Related posts brought to you by Yet Another Related Posts Plugin.
Spamer spamerowi spamerem? ;)
Wiem, że dawno nic nie pisałem, bo czasu mało, a pracy dużo, brak internetu i zmiana mieszkania Dotego zawiesiłem wszystkie projekty i pościągałem linki ze spamów postawionych tutaj. Śledziłem jednak komentarze i statystyki bloga, aż oczom mym ukazało się coś dziwnego. Mianowicie w statystykach znalazłem dużo refów stąd - znajome prawda? Oczywiście żadnego linka [...] Related posts:
  1. Customviki - czyli przerobiona kopia Wiki Ostatnio na forum PiO przeczytałem, że era kopii wikipedii się...
  2. Superviki - czyli kolejne podejście do kopii Wiki Jak już niektórzy zauważyli Customviki poleciała :/ Ale poddawać się nie mam zamiaru...
  3. megaViki - kolejna Wiki w moim wydaniu Chyba jestem maniakiem kopii Wikipedii ;) Ostatnimi czasy w wolnych...
Related posts brought to you by Yet Another Related Posts Plugin.
DMOZ - łatwy sposób na site?
Latając ostatnio po necie przypomniałem sobie o niegdyś bardzo popularnych Dmozach. Wiem, że ludzie stawiali je w setkach i działały świetnie, teraz ich moc osłabła i skrypt stał się dużo mniej popularny. Całe szczęście czasy się zmieniają i teraz ten skrypt dla mnie nie musi mieć mocy - ma się dobrze indexować W życiu [...] Related posts:
  1. Superviki - czyli kolejne podejście do kopii Wiki Jak już niektórzy zauważyli Customviki poleciała :/ Ale poddawać się nie mam zamiaru...
  2. megaViki - kolejna Wiki w moim wydaniu Chyba jestem maniakiem kopii Wikipedii ;) Ostatnimi czasy w wolnych...
  3. Customviki - czyli przerobiona kopia Wiki Ostatnio na forum PiO przeczytałem, że era kopii wikipedii się...
Related posts brought to you by Yet Another Related Posts Plugin.

Język programowania

Język programowania – Wikipedia, wolna encyklopedia

Język programowania

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, szukaj

Język programowania – zbiór zasad określających, kiedy ciąg symboli tworzy program komputerowy oraz jakie obliczenia opisuje[1].

Spis treści

Wstęp

Podobnie jak języki naturalne, język programowania składa się ze zbiorów reguł syntaktycznych oraz semantyki, 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 oraz semantyki, lecz inne zdefiniowane są jedynie przez oficjalne implementacje.

Język programowania pozwala na precyzyjny zapis algorytmów oraz innych zadań, jakie komputer ma wykonać. W niektórych pracach pojęcie języka programowania jest ograniczane wyłącznie do tych języków, w których można zapisać wszystkie istniejące algorytmy – od strony matematycznej oznacza to, że język musi być przynajmniej kompletny w sensie Turinga[2], jednak można się także spotkać z wykorzystaniem tego pojęcia na określenie również bardziej ograniczonych języków.

Definicje

Język programowania może być zdefiniowany ze względu na kilka cech:

  • Funkcja: Język programowania służy do tworzenia programów komputerowych, których zadaniem jest przetwarzanie danych, wykonywanie obliczeń i algorytmów oraz kontrolowanie/obsługa zewnętrznych urządzeń, np. drukarek, robotów itd.
  • Przeznaczenie: Języki naturalne służą do komunikacji między ludźmi, natomiast języki programowania umożliwiają wydawanie poleceń maszynom. Niektóre z języków są wykorzystywane również do kontrolowania jednego urządzenia przez inne. Przykładowo, program wykonywany na komputerze może wygenerować kod PostScript do sterowania pracą drukarki bądź wyświetlacza.
  • Konstrukcje składniowe: Język programowania może zawierać konstrukcje składniowe do manipulowania strukturami danych oraz zarządzania przepływem sterowania.
  • Moc: Teoria obliczeń klasyfikuje języki według rodzajów obliczeń, które można za ich pomocą zrealizować (hierarchia Chomsky'ego). We wszystkich językach zupełnych w sensie Turinga da się zaimplementować ten sam zbiór algorytmów. Przykładem często stosowanego języka niezupełnego jest SQL służący do komunikacji z bazą danych.

Języki, w których nie da się realizować obliczeń (języki znaczników, jak HTML czy XML oraz gramatyki formalne, np. BNF), nie są zazwyczaj uznawane za języki programowania.

Przeznaczenie

Memetyczna ewolucja niektórych języków programowania wg deklaracji autorów lub oficjalnych specyfikacji

Obecnie na świecie istnieją tysiące języków programowania i każdego roku powstają nowe. Od języków naturalnych odróżniają się wysoką precyzją oraz jednoznacznością. Człowiek podczas komunikacji między sobą stale popełnia niewielkie błędy lub pozostawia niedomówienia wiedząc, że drugi rozmówca najczęściej go zrozumie. Maszyny wykonują zadania dokładnie, dlatego każdą czynność trzeba opisać ściśle krok po kroku, ponieważ komputer nie potrafi domyślić się, co programista miał na myśli.

Wiele języków zostało zaprojektowanych od zera, lecz powszechna jest praktyka rozwijania już istniejących rozwiązań oraz celowego upodabniania jednego języka do innego. Pozwala to na szybsze opanowanie nowego języka przez programistów mających już doświadczenie w tworzeniu aplikacji. Potrzeba istnienia wielu różnorodnych języków wynika z dużej liczby sytuacji, w których są one wykorzystywane – każda posiada pewne specyficzne wymagania:

  • Wielkość programów waha się od niedużych skryptów pisanych przez amatorów do potężnych aplikacji rozwijanych przez setki programistów.
  • Doświadczenie użytkowników waha się od nowicjuszy lub programistów okazjonalnych wymagających przede wszystkim prostoty, do ekspertów potrafiących zrobić użytek z oferowanych możliwości.
  • Tworzone programy muszą spełniać określone wymagania dotyczące szybkości, skalowalności oraz wielkości.
  • Istniejące języki mogą być zbyt rozbudowane do pewnych zadań.
  • Programy mogą nie zmieniać się z biegiem lat lub być poddawane stałym modyfikacjom.
  • Programiści mają różne gusta – każdy z nich ma swój ulubiony język, w którym pisze mu się najwygodniej.

Z tych powodów nie powiodły się do dziś próby stworzenia języka uniwersalnego.

Obecnie panuje tendencja do tworzenia języków umożliwiających rozwiązywanie problemów na wyższym poziomie abstrakcji. Pierwsze języki programowania były mocno związane z konkretnym sprzętem. Z biegiem czasu wynalezione zostały nowe techniki tworzenia oprogramowania znacznie poprawiające przenośność i oraz opracowane algorytmy pozwalające automatycznie realizować zadania, którymi dotąd musiał zajmować się programista. Skraca to czas tworzenia aplikacji i zmniejsza ilość okazji do popełnienia błędu, lecz w niektórych sytuacjach odbija się to negatywnie na wydajności (np. język Java).

Elementy języka

Kolorowanie składni jest często wykorzystywane w edytorach kodu do wizualnego różnicowania poszczególnych elementów składni, co ułatwia czytanie kodu. Na obrazku pokolorowany kod w języku Python.

Postać programu wyrażona w języku programowania określana jest jako kod źródłowy. Na język programowania składa się kilka elementów:

Składnia

Aby dany ciąg znaków mógł być rozpoznany jako program napisany w danym języku, musi spełniać reguły . Składnia opisuje:

  • Rodzaje dostępnych symboli.
  • Zasady, według których symbole mogą być łączone w większe struktury.

Składnia najczęściej opisywana jest w formalnym zapisie będącym połączeniem wyrażeń regularnych oraz notacji BNF lub EBNF. Poniżej przedstawiony jest przykład prostej gramatyki wzorowanej na języku Lisp:

wyrazenie ::= atom | lista
atom  ::= liczba | symbol
liczba  ::= [+-]?['0'-'9']+
symbol  ::= ['A'-'Za'-'z'].*
lista  ::= '(' wyrazenie* ')'

Zapis ten określa wygląd i budowę kolejnych symboli:

  • Wyrażeniem nazwiemy atom i listę.
  • Atomem nazwiemy każdą liczbę lub symbol.
  • Liczbą nazwiemy ciąg cyfr, który może zaczynać się opcjonalnie od znaku + lub -.
  • Symbolem nazwiemy dowolną sekwencję dużych i małych liter alfabetu łacińskiego.
  • Listą nazwiemy parę nawiasów, w której może się znaleźć zero lub więcej wyrażeń.

Przykładowe ciągi, które spełniają podane reguły składni to: "12345", "()", "(a b c232 (1))".

Zauważmy, że na etapie przetwarzania składni w ogóle nie jest brane pod uwagę znaczenie poszczególnych symboli. W praktyce kod poprawny składniowo nie musi być poprawny semantycznie. Występuje tu analogia do języków naturalnych. Zdanie "Bźdźiągwy się mucioszą" jest poprawne pod względem gramatycznym, lecz nie posiada żadnego znaczenia, ponieważ zostały w nim użyte nieistniejące słowa.

Semantyka

Semantyka języka programowania definiuje precyzyjnie znaczenie poszczególnych symboli oraz ich funkcję w programie. Semantykę najczęściej definiuje się słownie, ponieważ większość z jej zagadnień jest trudna lub wręcz niemożliwa do ujęcia w jakikolwiek formalizm. Część błędów semantycznych można wychwycić już w momencie wstępnego przetwarzania kodu programu, np. próbę odwołania się do nieistniejącej funkcji, lecz inne mogą ujawnić się dopiero w trakcie wykonywania.

Typy danych

Każdy język operuje na jakimś zestawie danych, dlatego niezbędne jest podzielenie danych na odpowiednie typy, zdefiniowane ich właściwości oraz operacji, jakie można na nich realizować. Większość języków posiada typy danych do reprezentowania:

Od strony sprzętowej wszystkie te informacje wyrażane są za pomocą sekwencji zer i jedynek. Język programowania nakłada jedynie odpowiednie ograniczenia i zasady ich przetwarzania. Zjawisko konwersji wartości jednego typu na inną nazywa się rzutowaniem.

Biblioteki standardowe

Dla większości języków zdefiniowana jest także biblioteka standardowa zawierająca podstawowy zestaw funkcji pozwalających realizować wszystkie najważniejsze operacje, np.:

  • Obsługę wejścia-wyjścia.
  • Obsługę plików.
  • Obsługę wielowątkowości.
  • Zarządzanie pamięcią.
  • Podstawowe typy danych oraz funkcje do zarządzania nimi.
  • Operacje na ciągach tekstowych.

Użytkownicy traktują bibliotekę standardową często jako część języka, lecz od strony twórców są to osobne twory. Przykładowo, programiści piszący w języku D mają do dyspozycji zarówno oficjalną bibliotekę Phobos, jak i alternatywny projekt Tango.

Wykonywanie kodu

Aby program napisany w danym języku mógł być wykonany, niezbędne jest odpowiednie przetworzenie jego kodu źródłowego:

  • Kompilacjakod źródłowy jest tłumaczony do postaci języka maszynowego, czyli sekwencji elementarnych operacji gotowych do bezpośredniego przetworzenia przez procesor komputera. Jeżeli dany język programowania podlega kompilacji, określany jest mianem kompilowanego języka programowania.
  • Interpretacja – kod źródłowy jest na bieżąco tłumaczony i wykonywany przez dodatkowy program zwany interpreterem. Jeżeli język podlega interpretacji, nazywany jest interpretowanym językiem programowania.

Kompilacja do kodu maszynowego zapewnia najwyższą wydajność programom, lecz wygenerowany kod jest ściśle powiązany z platformą sprzętową. Ponadto kompilowane języki są bardziej zbliżone do sposobu funkcjonowania sprzętu, przez co programowanie w nich jest trudniejsze. Języki interpretowane zapewniają większą przenośność programów, które często są niezależne od platformy i systemu operacyjnego. Aby programy wyrażone w języku interpretowanym można było uruchomić na innej platformie, wystarczy napisać dla niej interpreter. Jednak taki sposób wykonywania odbija się negatywnie na wydajności. Alternatywnym rozwiązaniem jest kompilacja programów do postaci pośredniej, tzw. kodu bajtowego. Jest ona wykonywana przez wirtualne maszyny tłumaczące elementarne rozkazy kodu bajtowego na rozkazy procesora.

Klasyfikacja języków programowania

Języki programowania mogą być podzielone ze względu na:

  • Paradygmat programowania
  • Sposób kontroli typów.
  • Sposób wykonywania (kompilacja, interpretacja).
  • Poziom (języki niskopoziomowe są bardziej zbliżone pod względem budowy do działania sprzętu).
  • Przeznaczenie.

Najpopularniejsze języki programowania

Lista dwudziestu najpopularniejszych języków programowania według TIOBE (stan na grudzień 2011)[3]:

  1. Java
  2. C
  3. C++
  4. C#
  5. Objective-C
  6. PHP
  7. Visual Basic
  8. Python
  9. Perl
  10. JavaScript
  11. Ruby
  12. Delphi
  13. Lisp
  14. PL/SQL
  15. Transact-SQL
  16. Pascal
  17. Ada
  18. Logo
  19. Asembler
  20. ABAP

Zobacz też

Przypisy

  1. Mordechai Ben-Ari: Understanding Programming Languages. Chichester: John Wiley & Sons, 1996. 
  2. Bruce J. MacLennan: Principles of Programming Languages. Oxford University Press, 1987. ISBN 0-19-511306-3. 
  3. TIOBE Programming Community Index

Linki zewnętrzne