COBOL: Różnice pomiędzy wersjami

[wersja przejrzana][wersja przejrzana]
Usunięta treść Dodana treść
Fafik (dyskusja | edycje)
m Wycofano edycje użytkownika Fafik (dyskusja). Autor przywróconej wersji to PKKOT.
Linia 1:
'''COBOL'''&nbsp; (akronim od&nbsp; ang. ''common business-oriented language'') wysokopoziomowy język programowania stworzony i używany do tworzenia aplikacji biznesowych. COBOL jest językiem imperatywnym, proceduralnym, oraz od 2002 roku, [[Obiektowy język programowania|obiektowym]]<nowiki/>.
 
Język ten w znaczymy stopniu nadal używany jest w aplikacjach systemów typu mainframe, wymagających przetwarzania danych na wielką skalę, zarówno w trybie wsadowych jak i online. Typowymi obszarami zastosowania są bankowość, ubezpieczenia, służba zdrowia, transport, jak również systemy rządowe i militarne.<ref name=":1">{{Cytuj|autor=Michael Coughlan|tytuł=Beginning COBOL for Programmers}}</ref>&nbsp;&nbsp;&nbsp;   
 
W ostatnich latach zauważalny jest stopniowy spadek znaczenia COBOL’a w tworzeniu nowych aplikacji. Większość wykonywanych prac programistycznych związania jest z utrzymaniem i rozwojem aplikacji istniejących.<ref>{{Cytuj|autor=Robert L. Mitchell|tytuł=Cobol: Not Dead Yet|data=}}</ref> Z uwagi na jego powoli malejącą popularność oraz coraz mniejszą podaż programistów COBOL, część programów migrowana jest na nowe platformy, przepisywana na bardziej nowoczesne języki bądź zastępowana nowymi pakietami oprogramowania. Niemniej, COBOL nadal odgrywa znaczącą rolę w obszarze aplikacji biznesowych na świecie.
Linia 9:
COBOL został ustandaryzowany w 1968 roku i od tego czasu był ulepszany cztery razy. Rozszerzenia dotyczyły wsparcia programowania obiektowego oraz strukturalnego. Obecnym standardem jest ''[[Międzynarodowa Organizacja Normalizacyjna|ISO]]/[[Międzynarodowa Komisja Elektrotechniczna|IEC]]1989:2014''.<ref>{{Cytuj|autor=|tytuł="ISO/IEC 1989:2014". ISO. 26 May 2014. Retrieved 7 June 2014.|data=}}</ref>
 
Składnia (ang. ''syntax'') COBOL’a opiera się na języku angielskim i została zaprojektowana tak, aby kod był czytelny oraz łatwy w dokumentowaniu (samodokumentujący się). Język jest rozbudowany pod względem składniowym i używa ponad 300&nbsp; zarezerwowanych wyrazów.
 
Podczas, gdy we współczesnych językach używana jest zwięzła składnia np.:<syntaxhighlight lang="c"> y=x </syntaxhighlight>, COBOL posiada składnie bardziej zbliżoną do języka angielskiego, w tym przypadku:<syntaxhighlight lang="cobol"> MOVE x TO y </syntaxhighlight>Kod w COBOL’u podzielony jest na cztery dywizje (''identification'', ''environment'', ''data'' oraz ''procedure'') posiadające hierarchiczną strukturę sekcji, paragrafów, zdań i instrukcji. <ref name=":0" />
 
W czasach kiedy tworzony był COBOL akademicy i teoretycy informatyki nie wykazywali zainteresowania rozwojem aplikacji biznesowych, w związku z czym nie uczestniczyli w jego kreacji.&nbsp;  Został on zaprojektowany jako język głównie dla biznesmenów przez co w późniejszym czasie był szeroko krytykowany przez środowiska akademickie.<ref name=":0" />
 
== Historia ==
W późnych latach 50tych, użytkownicy i wytwórcy komputerów zaczęli niepokoić się rosnącymi kosztami tworzenia oprogramowania. Przeprowadzona w 1959 roku ankieta wykazała, że przy jakiejkolwiek instalacji procesowania danych koszt programowania wynosi przeciętnie US$800,000 oraz, przeciętne przetłumaczenie istniejącego oprogramowania, które umożliwiłoby uruchomienie kodu na nowym sprzęcie kosztowałoby kolejne $600,000.<ref name=":0" /> Ta sama ankieta zasugerowała, że jeśli wykorzystany zostałby język zorientowany biznesowo, konwersja byłaby zarówno tańsza jak I szybsza. Program stworzenia takiego języka został w 1959 roku zorganizowany i zasponsorowany przez [[Departament Obrony Stanów Zjednoczonych]].<ref name=":1" />
 
Pierwsza definicja COBOL’a stworzona została w 1960 roku przez komitet [[CODASYL]] (ang.&nbsp; Conference on Data Systems Languages). Za rozwój kolejnych standardów odpowiedzialny był [[American National Standards Institute]] (ANSI), który to wyprodukował kolejno trzy standardy: ANS 68, ANS 74 oraz ANS 85. Odpowiedzialność za rozwój następnych standardów spoczęła na ISO. ISO 2002, pierwszy standard wyprodukowany przez to ciało zdefiniowała pierwszą zorientowaną obiektowo wersję COBOL’a.<ref name=":1" />
 
Poszczególne standardy wprowadziły następujące udoskonalenia do języka
Linia 31:
=== Składnia ===
COBOL posiada składnię podobną do języka angielskiego. Używana jest ona do opisywania niemal wszystkiego w programie. Na przykład, warunek może zostać wyrażony: <syntaxhighlight lang="cobol">
x&nbsp; IS&nbsp; GREATER&nbsp; THAN&nbsp; y
</syntaxhighlight>lub bardziej zwięźle: &nbsp; <syntaxhighlight lang="cobol">
x&nbsp; GREATER&nbsp; y&nbsp; lub&nbsp; x>y
</syntaxhighlight>Bardziej złożone warunki mogą być “skrócone” poprzez usunięcie powtarzalnych wyrażeń I zmiennych, np.:<syntaxhighlight lang="cobol">
a>b AND a>c OR a=d
</syntaxhighlight>Może zostać skrócone do:<syntaxhighlight lang="cobol">
 a > b AND c OR = d
&nbsp;a&nbsp;>&nbsp;b&nbsp;AND&nbsp;c&nbsp;OR&nbsp;=&nbsp;d
</syntaxhighlight>W konsekwencji rozbudowanej składni COBOL posiada ponad 300 słów kluczowych (zarezerwowanych).&nbsp; 
 
Każdy program w COBOL’u zawiera cztery podstawowe elementy leksykalne: słowa, literały, symbole (ang. ''picture character-strings'', zobacz&nbsp; [[COBOL#PICTURE clause|PICTURE clause]]) oraz separatory. Słowa zawierać mogą słowa zarezerwowane oraz identyfikatory zdefiniowane przez użytkownika. Mogą mieć długość do 31 znaków oraz zawierać litery, cyfry, myślniki i podkreślenia. Literały to cyfry (np.&nbsp; <code>12</code>) oraz ciągi znaków (np.&nbsp; <code>'Hello!'</code>).<ref>{{Cytuj|autor=|tytuł=ISO/IEC JTC 1/SC 22/WG 4 2014, § 8.3.1.2.|data=}}</ref> Separatory zawierają spacje, przecinki oraz średniki.
 
Podstawowym elementem strukturyzującym program w COBOL’u jest dywizja. W każdym programie wyróżniamy 4 dywizje: ''identification'', ''environment'', ''data'' oraz ''procedure''. Dywizja ''identification'' określna nazwę oraz element źródłowy. W dywizji tej wyspecyfikowane są również klasy i interfejsy. Dywizja ''environment'' określa wszystkie elementy programu, które zależą od systemu, na którym działają, takie jak pliki I zestawy znaków. Dywizja ''data'' służy do deklaracji [[Zmienna (informatyka)|zmiennych]] i parametrów. Dywizja ''procedure'' zawiera polecenia. Każda dywizja jest podzielona na sekcje, które składają się z paragrafów.<ref name=":1" />
 
== Krytyka i obrona ==
Krytycy COBOL’a zarzucają mu brak struktury. Zarzut ten odnosi się przede wszystkim do tak zwanego kody spaghetti, przyczyną powstania którego jest z kolei wykorzystywanie komendy&nbsp; <code>GO TO</code> (komenda ta używana jest do przechodzenia po programie w przód i wstecz, w sposób który sprawia, że logika programu staje się trudna do zrozumienia). Aktualnie&nbsp; <code>GO TO</code> w dużej mierze zastępowane jest komendą <code>PERFROM</code> oraz procedurami, których zastosowanie znacząco niweluje ten zarzut.<ref name=":0" />
 
Krytyce poddawana jest również zbyt rozbudowana i szczegółowa składnia. Zwolennicy twierdzą jednak, że pozwala ona na samodokumentowanie się kodu, co ułatwia jego utrzymanie. Z założenia COBOL miał być również łatwy do opanowania, a jednocześnie czytelny dla osób bez zaplecza technicznego np. menagerów. <ref name=":0" />
 
Kolejnym zarzutem jest izolacja wspólnoty COBOL’a od reszty społeczności informatycznej. W 2013 sondaż Micro Focus wykazał, że 20% pracowników naukowych uczelni oraz 55% studentów uważało COBOL’a za język przestarzały lub martwy. Ten sam sondaż wykazał jednak również, że tylko 25% kadry nauczało programowania w COBOL’u&nbsp;  mimo, iż aż 60% uważało, że powinni go uczyć. Tymczasem w 2003 roku, COBOL obecny był w 80% systemów informatycznych w Stanach Zjednoczonych, w takich samym stopniu, jak C ++ i Java.<ref>{{Cytuj|autor=|tytuł=COBOL and Legacy Code as a Systemic Risk {{!}} naked capitalism|data=}}</ref>
 
COBOL, a dokładniej jego struktury danych, w znacznym stopniu wpłynął na inne języki programowania takie jak PL/I czy Pascal. Jawne definiowanie struktur poprzedziło rozwój systemów zarządzania bazami danych i do dziś uważane jest przez wielu praktyków za wygodne i efektywne podejście do definiowania typów zmiennych.
Linia 56:
COBOL jest językiem programowania z ponad 50 letnią historią. Aktualnie wielu postrzega go jako zaszłość, bez realnego znaczenia dla współczesnego świata. W rzeczywistości pomimo swojego wieku COBOL nadal odgrywa bardzo istotną, jeśli nie dominującą, rolę w świecie biznesu.<ref name=":1" />
 
Programy napisane w COBOL’u nadal używane są na całym świecie w instytucjach rządowych I biznesowych i działają na licznych systemach operacyjnych takich jak &nbsp; [[z/OS]],&nbsp; [[ICL VME|VME]],&nbsp; [[Unix]],&nbsp; [[OpenVMS]]&nbsp; oraz &nbsp; [[Microsoft Windows|Windows]]. W 1997, Grupa [[Gartner Group|Gartner]] wydała raport, który wykazał, że 80% światowego biznesu działa na COBOL’u, przy prawie 200 mld linii kodu i 5 miliardami linii pisanymi rocznie. Nawet stworzona w 1996/7 Java nie zdołała przyćmić pozycji COBOLA. <ref name=":0" />
 
W wydanym w 2005 roku raporcie Gary Barnett zaznaczył, że „COBOL pozostaje najpowszechniej stosowanym językiem programowania w dużych przedsiębiorstwach, odpowiadając za 75% wykonywanych transakcji komputerowych” oraz „90% wszystkich transakcji finansowych. W 2006 i 2012,&nbsp; ankiety [[Computerworld|''Computerworld'']]&nbsp; wykazały natomiast, że ponad 60% organizacji wykorzystuje COBOL’a bardziej niż [[C++]]&nbsp; i&nbsp; [[Visual Basic .NET]], oraz, że dla połowy z nich COBOL używany jest w większości wewnętrznych systemów. <ref name=":0" />
 
Pomimo szerokiego wykorzystania, nadal wywierana jest presja, aby zastąpić istniejący kod COBOL bardziej nowoczesną alternatywą. Spowodowane jest to przede wszystkich wysokimi kosztami utrzymania, przestarzałym sprzętem i oprogramowaniem oraz konieczność integracji z bardziej nowoczesnym oprogramowaniem, jak również niedoborem programistów COBOL. Niestety większość prób modernizacji, które zawierają w sobie wymianę kodu napisanego w COBOL’u kończy się niepowodzeniem.&nbsp; 
 
== Program "Hello world" w języku COBOL ==