Nowoczesne języki programowania / trendy

0

Witam,
Jutro mam baardzo ważny egzamin i moge się spodziewać następujących pytań:
1)cechy nowoczesnych języków programowania
2)trendy w językach programowania

Czy ktoś się może orientuje w tych nowoczesnych językach programowania i trendach i moglby mnie naprowadzić? Jakieś linki byłyby mile widziane. W ogóle to które języki są nowoczesne? C# i Java są?

Bede bardzo wdzięczny za pomoc,
Pozdrawiam,

Piotrek

0

Skoro masz z tego egzamin, to pewnie miałeś to na wykładzie lub zajęciach. Nowoczesne języki czasem trudno wyodrębnić, bo nawet języki istniejące od wielu lat ewoluują i nabierają nowych możliwości; C# i Java na pewno do nich należą.

  1. Do cech na pewno można zaliczyć:
  • obsługę typowania generycznego,
  • typowanie domniemane (zgodnie z .NET 3.0 dla C# typ zmiennej określany jako var) z zachowaniem ostrej walidacji typów przy kompilacji,
  • stosowanie garbage collectorów - mechanizmów automatycznej dealokacji,
  • automatyzację projektowania interfejsu i działania aplikacji (RAD)
  • oddzielenie kodu odpowiedzialnego za prezentację, logikę aplikacji i jej dane (przyczyna powstania XAML czy technologii TopLink)
  1. Z trendami trochę trudniej, ale na pewno należą do nich
  • wydzielanie funkcji wbudowanych języka na rzecz podziału na biblioteki i przestrzenie nazw
  • dalsza ewolucja metodologii: programowanie strukturalne -> obiektowe -> zdarzeniowe -> generyczne -> ..
  • większe wsparcie dla ponownego użycia plików źródłowych, klas, bibliotek, modułów, komponentów, czy wręcz kontrolek; dążenie do pełnej modularności również pomiędzy różnymi językami,
  • uniezależnianie od platformy sprzętowej (wszelkiego rodzaju wirtualizacje, maszyny wirtualne, środowiska uruchomieniowe, platformy, do stopnia skryptowości i kompilacji JIT),
  • zapewnienie współpracy z językami specjalizowanymi (SQL, XML, HLSL),
  • specjalizacja zadaniowa rodzin języków (dobrym przykładem jest tu Java, ze wsparciem począwszy od procedur wbudowanych serwerów Oracle, przez midlety dla komórki, przez servlety JSP, aplety po scriptlety i obsługę projektów o rozmiarach Business Enterprise),
  • głównym trendem jest umożliwienie stworzenia określonego projektu przy najmniejszym nakładzie pieniędzy, czasu, pracy i możliwie pozbawionego błędów, bez rezygnacji z jego funkcjonalności.
0

1:

  • zablokowanie dostępu do zasobów niskiego poziomu / udostępnianie ich nie bezpośrednio

2:

  • Wsparcie dla meta programowania i generowania kodu (Ruby / Rails, Java).
  • Wsparcie dla narzędzi takich jak UML patrzy poprzedni punkt
  • Dostarczanie gotowych frameworków.
0

Zablokowanie dostępu do zasobów nie jest kwestią języka, a platformy uruchomieniowej (nazwijmy ją tu - ogólniając - systemem operacyjnym aplikacji). Cechą języka jest co najwyżej udostępnienie formy wywołań funkcji tego systemu lub udostępnienie funkcji wbudowanych, nadbudowujących owe wywołania (a to już pewnoego rodzaju wirtualizacja).

0

Kolejną cechą nowoczesnych jężyków to refleksja i obowiążkowo garbage collector.

0

Dzięki wszystkim!

0
rnd napisał(a)

Kolejną cechą nowoczesnych jężyków to refleksja i obowiążkowo garbage collector.

to tez nie sa cechy jezykow a raczej platformy..

0

Ja bym powiedział "TEŻ" a nie "RACZEJ". Wiadomo, że platforma uruchomieniowa musi wspierać język, w którym są pisane na nią aplikacje.

Obecność takich rzeczy jak np. refleksja czy GC ma istotny wpływ na język i sposób programowania. To nie są biblioteki, tylko kluczowe elementy. Np. w Javie czy Rubym nie ma słowa kluczowego delete.

0
quetzalcoatl napisał(a)
rnd napisał(a)

Kolejną cechą nowoczesnych jężyków to refleksja i obowiążkowo garbage collector.

to tez nie sa cechy jezykow a raczej platformy..

Oj, chyba GC jest na stałe wpisany w filozofię C#.

0

Ale C# jest językiem tylko i wyłącznie platformy .NET.

0

Zgodzę się jedynie z twierdzeniem, że cechą języka może być możliwość stosowania GC z uwzględnieniem tego na co pozwala środowisko programistyczne i platforma docelowa.

0

Rozumiem, że mając na myśli 'możliwość' uważasz, że są jeszcze jakieś inne opcja dla gc. Pokaż mi w Javie jakąś alternatywę dla gc, może jakieś słówko delete albo destruktory ? :>

0

To, że nie ma destruktorów i delete wynika z faktu, że Java jest przeznaczona tylko do pisania aplikacji pod JVM, podobnie jak C# został przeznaczony do pisania tylko pod .NET. Za zwalnianie zasobów nie odpowiada sam język lecz wirtualna maszyna.

Pisząc, że 'cechą języka może być możliwość stosowania GC' nie miałem na myśli tego, że musi istnieć inna możliwość. Nie wiem może źle to sformułowałem w każdym razie pisanie, że GC jest cechą języka jest dla mnie nieporozumieniem.

/edit: literówki

0

Moim zdaniem platformę i język raczej trudno rozdzielić. To że C# może korzystać z gc bezpośrednio wpływa na język.

0
AdamPL napisał(a)

To, że nie ma destruktorów i delete wynika z faktu, że Java jest przeznaczona tylko do pisania aplikacji pod JVM, podobnie jak C# został przeznaczony do pisania tylko pod .NET. Za zwalnianie zasobów nie odpowiada sam język lecz wirtualna maszyna.

Pisząc, że 'cechą języka może być możliwość stosowania GC' nie miałem na myśli tego, że musi istnieć inna możliwość. Nie wiem może źle to sformułowałem w każdym razie pisanie, że GC jest cechą języka jest dla mnie nieporozumieniem.

W takim razie zgoda: trendem w ewolucji języków programowania jest zanik destruktorów oraz słów kluczowych pozwalających zwalniać pamięć. Teraz dobrze? [green]

1 użytkowników online, w tym zalogowanych: 0, gości: 1