Twoje PC  
Zarejestruj się na Twoje PC
TwojePC.pl | PC | Komputery, nowe technologie, recenzje, testy
B O A R D
   » Board
 » Zadaj pytanie
 » Archiwum
 » Szukaj
 » Stylizacja

 
M E N U
  0
 » Nowości
0
 » Archiwum
0
 » Recenzje / Testy
0
 » Board
0
 » Rejestracja
0
0
 
Szukaj @ TwojePC
 

w Newsach i na Boardzie
 
OBECNI NA TPC
 
 » DYD 09:56
 » Promilus 09:55
 » [yureq] 09:52
 » Hitman 09:51
 » Wedelek 09:37
 » MARC 09:34
 » Kelso1 09:34
 » BoloX 09:18
 » @GUTEK@ 09:16
 » ligand17 09:15
 » Rafael_3D 09:14
 » wrrr 09:13
 » GLI 09:12
 » Liu CAs 09:04
 » ulan 09:03
 » elliot_pl 08:42
 » kyusi 08:18
 » mo2 08:11
 » KHot 08:09
 » skalak23 08:06

 Dzisiaj przeczytano
 36897 postów,
 wczoraj 25433

 Szybkie ładowanie
 jest:
włączone.

 
ccc
TwojePC.pl © 2001 - 2025
A R C H I W A L N A   W I A D O M O Ś Ć
    

[OT] Programowanie deklaratywne - co to jest? , PaKu 13/02/05 15:36
Mam do wyboru jeden z 2 przedmiotow - informatyka medyczna i programowanie deklaratywne. I chodzi o to ze wogole nie wiem z czym sie oba "je" ;) Czy ktos moglby mi pokrotce wytlumaczyc co to jest to programowanie deklaratywne i czy warto sie na to zapisac, czy lepiej omijac szerokim lukiem?

bez podpisu

  1. Programowanie deklaratywne w ogolnosci to takie, w ktorym nie 'mowi' sie jak ma zostac , bwana 13/02/05 16:47
    obliczony wynik, tylko jaki ma on byc. Przykladami sa takie jezyki jak Prolog, SQL i VDM (SQL jest wlasciwie proceduralno-deklaratywny, hybrydowy).

    Przyklad (na bazie SQL-a):

    select nazwisko from pracownicy where data_urodzenia < 1950-01-01

    jest do deklaratywny zapis.

    odpowiednik proceduralny bylby taki:

    otworz tabele pracownikow
    ustaw sie na jej poczatku
    --wczytaj rekord z tabeli
    --czy to ostatni rekord? jesli tak to idz na koniec
    --czy data mniejsza niz 1950-01-01? jesli tak, to wypisz nazwisko z rekordu i powtorz od 'wczytaj rekord z tabeli'

    Widac juz roznice? w pierwszym 'kodzie' okreslalismy co chcemy dostac w wyniku, a w drugim 'kodzie' pisalismy, co ma 'komputer robic' zebysmy taki wynik otrzymali.

    Inny przyklad to Prolog.

    tu mozemy napisac np. predykat (o ile pamietam) zlaczenie_ciagow(X, Y, Z) ktore oznacza, ze po sklejeniu ciagow X i Y otrzymujemy w wyniku ciag z. Predykat ma postac:

    X || Y = Z

    I teraz wywolanie funkcji (uzycie predykatu) takie:

    zlaczenie_ciagow('Ala', 'ma kota', Z) powie, ze Z='Ala ma kota'

    ale z drugiej strony wywolanie: zlaczenie_ciagow(X, Y, 'Ala ma kota') da w wyniku wszytskie kombinacje ciagow X i Y, ktore po zlaczeniu daja 'Ala ma kota' czyli (odpowiednio X, Y):
    '', 'Ala ma kota'
    'A', 'la ma kota'
    'Al', 'a ma kota'
    ...
    ...
    'Ala ma kot', 'a'
    'Ala ma kota', ''

    Podsumowujac w jezykach deklaratywnych istota jest wynik, a nie programowanie sposobu jego uzyskania.

    Programowanie deklaratywne to, w moim odczuciu, przyszlosc programowania, na pewno bardzo ciekawa i obiecujaca dyscyplina. O rozwoju deklaratywnych jezykow swiadczy chocby takie zjawisko, ze obecne bazy danych (doswiadczenia mam z Oracle) maja coraz lepsze optymalizatory (kosztowe) zapytan SQL (czyli deklarawnych programow), coraz bardziej oddalajace sie od proceduralnosci (rola tzw. hintow dla optymalizacji regulowej jest coraz mniejsza, nacisk przenosi sie z 'jak' na 'co').

    "you don't need your smile when I cut
    your throat"

    1. wielkie , PaKu 13/02/05 16:58
      dzieki za wyjasnienie, chyba sie na to wybiore

      bez podpisu

      1. najlepiej porownaj zakres zajec na obu kierunkach (liste przedmiotow powinienes otrzymac w , bwana 13/02/05 17:04
        dziekanacie) i zobacz co bardziej Ci sie podoba. Przede wszystkim jednak zastanow sie, ktora wiedza zapewni Ci lepsza prace w przyszlosci. Podejrzewam ze informatyka medyczna moze byc bardziej 'topowa' na rynku pracy. Programowanie deklaratywne ulatwi znalezienie pracy raczej w obszarach niszowych - tworzenie i rozwoj jezykow programowania. Zastanow sie wiec dobrze i dlugo co, krotko mowiac, bardziej Ci sie oplaci, to moze byc w Twojej karierze kluczowa decyzja. Nie polegaj wiec wylacznie na moim zdaniu i moim entuzjazmie:-D

        "you don't need your smile when I cut
        your throat"

        1. Żadne z nich się nie przyda i tyle ;) , pachura 13/02/05 19:09
          Ja wiem że to wszystko pięknie wygląda - programowanie deklaratywne, przyszłość i w ogóle - ale zapewne skończy się tak że przyjdzie jakiś staruszek, poduka coś pod nosem o LISP-ie i Prologu po czym każe się uczyć jakiś zawikłanych teorii które były popularne w latach pięćdziesiątych. Na ćwiczeniach będzie do zrobienia odwrócenie albo posortowanie listy w LISP-ie oraz znalezienie rodzeństwa w zbiorze osób w Prologu i na tym koniec. O SQL-u jako o języku deklaratywnym nikt nawet nie wspomni, nie mówiąc oczywiście o żadnych praktycznych zastosowaniach poza jakimiś mitycznymi systemami eksperckimi których nikt na oczy nie widział.

          Prawda jest taka że oba przedmioty są niszowe i niewiele przydatne. Medycyna topowa? 90% ofert pracy to oprogramowanie finansowe, magazynowe, strony www, bazy danych. Wybrałbym cokolwiek i ewentualnie pobawił się w domu np. językiem Nemerle...

          1. Studiowanie nie polega na przyjmowaniu serwowanej wiedzy , bwana 13/02/05 19:43
            To, co sie tam dostaje ma byc fundamentem dla wlasnych eksploracji tematu, pretekstem do zainteresowania sie jakas konkretna specjalnoscia w ramach zawodu, wstepnym rozpoznaniem roznych obszarow branzy. Jesli dany kawalek wiedzy zainteresuje studenta, nic nie stoi na przeszkodzie, by ten wlozyl odpowiednio duzo wysilku w to, co go zaciekawilo.
            Wracajac do konkretnego przypadku, pamietajmy, ze to dwa kursy do wyboru, a nie cala tematyka studiow.
            Pachura, piszac cyt. 'Medycyna topowa?...' zapomniales o slowie 'bardziej', ktorego uzylem w bezporednim sasiedztwie. Chodzilo o porownanie dwoch rzeczy wzgledem siebie, a nie o okreslenie ich wartosci w skali bezwzglednej.
            Ponadto nie lekcewazylbym programowania deklaratywnego, nawet opartego na 'przedwojennych' teoriach. Nauka takiego programowania rozszerza pojmowanie programowania w ogole, ponadto akurat w takim ujeciu programowanie jest doskonalym wstepem do analizy funkcjonalnej (analizy systemow), ktora jest bardzo wartosciowa (poszukiwana) w branzy (mam tu na mysli branze wdrozen korporacyjnych).
            Wspominasz tez o systemach eksperckich w kontekscie programowania deklaratywnego, co w moim odczuciu jest bledne, gdyz system ekspercki jest produktem, natomiast programowanie (deklaratywne czy proceduralne) jest technologia, slowem porownujesz elementy pochodzace ze zbiorow o zupelnie roznych dziedzinach. System ekspercki moze zostac utworzony zarowno przy uzyciu jezyka deklaratywnego jak i proceduralnego, badz obu.

            "you don't need your smile when I cut
            your throat"

            1. No więc... , pachura 13/02/05 20:58
              Nie mam nic przeciwko programowaniu deklaratywnemu, po prostu napisałem jak było u nas na PP z tym przedmiotem... fatalnie, nieinteresująco, w oderwaniu od praktyki. A szkoda.

              > Wracajac do konkretnego przypadku, pamietajmy, ze to dwa kursy do wyboru, a nie cala tematyka studiow.

              Hmmm, to Ty pisałeś "zastanow sie wiec dobrze i dlugo [...] to moze byc w Twojej karierze kluczowa decyzja".

              > Nauka takiego programowania rozszerza pojmowanie programowania w ogole, ponadto akurat w takim ujeciu programowanie jest doskonalym wstepem do analizy funkcjonalnej...

              Równie dobrze można powiedzieć że codzienna modlitwa jest bardzo cenna dla programisty, bo dzięki niej może się lepiej skupić nad pisanym kodem. Może i tak, ale w znikomym stopniu...

              > Wspominasz tez o systemach eksperckich w kontekscie programowania deklaratywnego, co w moim odczuciu jest bledne.

              Co? Napisałem że języki typu Prolog znajdują zastosowanie w systemach eksperckich - działanie takich systemów można ładnie zakodować za pomocą reguł, tak przynajmniej mówili nam na uczelni. Ale mi się wydaje że i tak wszyscy na to leją i wolą napisać "po bożemu" w C++ czy Javie, na sieciach neuronowych, metaheurystykach czy skomplikowanych, dedykowanych heurystykach.

    
All rights reserved ® Copyright and Design 2001-2025, TwojePC.PL