Zientar Flashcards

(6 cards)

1
Q

Rodzaje paradygmatów, generacje języków programowania.

A

> Istnieją różne paradygmaty programowania, które opierają się na różnych filozofiach i metodach tworzenia oprogramowania. Oto niektóre z najważniejszych paradygmatów programowania:

  • Programowanie imperatywne: paradygmat, który skupia się na opisaniu, jak komputer ma wykonać dane zadanie, poprzez serię instrukcji i operacji, które trzeba wykonać.
  • Programowanie proceduralne: paradygmat, który skupia się na tworzeniu procedur i funkcji, które są wykorzystywane do rozwiązywania problemów.
  • Programowanie obiektowe: paradygmat, który skupia się na tworzeniu obiektów, które mają właściwości i metody. Programowanie obiektowe pozwala na tworzenie bardziej modularnego i łatwiejszego w utrzymaniu kodu.
  • Programowanie funkcyjne: paradygmat, który skupia się na tworzeniu funkcji matematycznych, które są stosowane do danych wejściowych. Programowanie funkcyjne pozwala na tworzenie kodu, który jest łatwiejszy do testowania i debugowania.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Semantyka oraz syntaktyka języków programowania, gramatyka bezkontekstowa,
typy danych, przekazywanie parametrów, przeciążenia operatorów i podprogramów.

A

Semantyka i syntaktyka to dwa główne aspekty języków programowania. Semantyka opisuje znaczenie kodu, czyli to, co kod ma zrobić, natomiast syntaktyka opisuje poprawną składnię kodu, czyli jak kod ma być napisany.

Gramatyka bezkontekstowa (BNF lub EBNF) jest formalnym sposobem opisania składni języka programowania. Gramatyka bezkontekstowa zawiera reguły, które określają, jakie elementy składniowe są dozwolone w danym języku programowania.

Typy danych to rodzaje danych, które mogą być przechowywane i przetwarzane przez program. Przykłady typów danych to liczby całkowite, zmienne typu logicznego, łańcuchy znaków itp.

Przekazywanie parametrów to sposób, w jaki dane są przekazywane do funkcji lub procedur. Istnieją różne sposoby przekazywania parametrów, takie jak przekazywanie przez wartość lub przekazywanie przez referencję.

Przeciążenie operatorów polega na umożliwieniu jednego operatora do działania na różnych typach danych. Natomiast przeciążenie podprogramów polega na umożliwieniu jednej funkcji lub procedury do przyjmowania różnych typów i liczby argumentów.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Programowanie imperatywne: zmienne, atrybuty, wiązania statyczne i dynamiczne,
organizacja wywołań podprogramów, przydział pamięci. Przykłady z różnych języków
programowania.

A

> Programowanie imperatywne: zmienne, atrybuty, wiązania statyczne i dynamiczne, organizacja wywołań podprogramów, przydział pamięci.Programowanie imperatywne jest paradygmatem, w którym programista opisuje, jak komputer ma wykonać dane zadanie, poprzez serię instrukcji i operacji, które trzeba wykonać.Zmienne to pojęcie, które pozwala na przechowywanie danych w pamięci komputera, zmienne mogą przechowywać różne typy danych takie jak liczby, ciągi znaków, tablice i inne.Atrybuty to dodatkowe informacje o zmiennych, które opisują ich właściwości, takie jak typ danych, rozmiar, dostępność.Wiązanie statyczne i dynamiczne to sposób, w jaki zmienne są powiązane z konkretnymi wartościami. Wiązanie statyczne oznacza, że zmienna jest powiązana z konkretną wartością już na etapie kompilacji. Wiązanie dynamiczne oznacza, że zmienna jest powiązana z konkretną wartością w momencie wykonywania programu.Organizacja wywołań podprogramów to sposób, w jaki kod jest rozdzielany na mniejsze części, takie jak funkcje i procedury, co ułatwia jego utrzymanie i rozwój.Przydział pamięci to proces, przez który system operacyjny przydziela odpowiednią ilość pamięci dla programów i danych, które są przechowywane w pamięci operacyjnej. Programowanie imperatywne zazwyczaj korzysta z przydziału pamięci dynamicznej, gdzie pamięć jest przydzielana i zwalniana w trakcie działania programu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Programowanie funkcyjne. Wprowadzenie, rachunek lambda, rekursja, funkcje
wyższego rzędu, kolekcje i operacje, leniwa ewaluacja, wnioskowanie(inferencja)
typów. Przykłady z języka Haskell, Python.

A

Programowanie funkcyjne jest paradygmatem programowania, który skupia się na tworzeniu funkcji matematycznych, które są stosowane do danych wejściowych. Programowanie funkcyjne pozwala na tworzenie kodu, który jest łatwiejszy do testowania i debugowania, a także na uzyskanie wysokiej skalowalności.

Rachunek lambda to formalizm matematyczny, który jest podstawą programowania funkcyjnego. Rachunek lambda pozwala na opisanie funkcji za pomocą notacji lambda, która składa się z argumentów i ciała funkcji.

Rekursja to metoda rozwiązywania problemów, w której funkcja wywołuje siebie samej. Jest to jeden z podstawowych mechanizmów w programowaniu funkcyjnym.

Funkcje wyższego rzędu to funkcje, które przyjmują inne funkcje jako argumenty lub zwracają funkcje jako wartości.

Kolekcje i operacje to pojęcia dotyczące przetwarzania danych, takie jak mapowanie, filtrowanie i redukcja.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Programowanie w logice. Rachunek predykatów, fakty, reguły, nawroty, rezolucja,
unifikacja, listy, wnioskowanie, rekursja. Przykłady w języku Prolog.

A

Programowanie w logice jest paradygmatem programowania, w którym programista opisuje zestaw reguł i faktów, a system logiczny wykorzystuje je do rozwiązywania problemów. Jest to często stosowane w aplikacjach takich jak bazy wiedzy, sztuczna inteligencja i ekspertowe systemy.

Rachunek predykatów to formalizm matematyczny, który jest podstawą programowania w logice. Rachunek predykatów pozwala na opisanie relacji między obiektami za pomocą predykatów i symboli logicznych.

Fakty to twierdzenia, które są uznawane za prawdziwe przez system logiczny. Reguły to twierdzenia, które opisują jak fakty mogą być wykorzystywane do wnioskowania o nowych faktach.

Nawroty to proces, w którym system logiczny przeszukuje bazę wiedzy w celu znalezienia faktów lub reguł, które spełniają określone kryteria.

Rezolucja to metoda rozwiązywania problemów, w której system logiczny łączy fakty i reguły w celu wygenerowania nowych twierdzeń.

Unifikacja to proces, w którym system logiczny porównuje dwa twierdzenia i znajduje ich wspólne elementy.

Wnioskowanie to proces, w którym system logiczny wykorzystuje fakty, reguły i metody takie jak rezolucja i unifikacja do wyciągania nowych wniosków.

Prolog jest jednym z popularnych języków programowania w logice, który jest często używany do tworzenia ekspertowych systemów i aplikacji sztucznej inteligencji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Przegląd dodatkowych paradygmatów: modularne, aspektowe, komponentowe,
agentowe, strukturalne, zdarzeniowe, kontraktowe, generyczne, refleksyjne,
programowanie sterowane przepływem danych oraz współbieżne, równoległe i
rozproszone.

A

Modularne programowanie polega na podzieleniu programu na niezależne moduły, które mogą być łatwo testowane, debugowane i wymieniane.

Programowanie aspektowe skupia się na oddzieleniu koncernów programu takich jak logika biznesowa, logika interfejsu użytkownika i logika dostępu do danych.

Programowanie komponentowe polega na tworzeniu niezależnych, powtarzalnych i łatwo konfigurowalnych komponentów, które mogą być używane w różnych aplikacjach.

Programowanie agentowe jest paradygmatem, w którym programy są reprezentowane przez autonomiczne agentów, którzy mogą podejmować decyzje i wykonywać działania.

Programowanie strukturalne skupia się na oddzieleniu danych i funkcji oraz zapewnieniu dobrej struktury danych i programu.

Programowanie zdarzeniowe polega na reagowaniu na zdarzenia, które zachodzą w systemie, takie jak kliknięcie przycisku, przesłanie formularza lub zmiana danych.

Programowanie kontraktowe polega na określeniu warunków, które muszą być spełnione przed wykonaniem określonej operacji lub funkcji.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly