Jakie są obecnie polpularne "technologie obcinające krawędzie" w C++?

0

Jakieś 7 lat temu to był zdaje się głównie boost, trochę toolkitów do widgetów których nazwy wyparowały z mego umysłu.

0

Jakie krawędzie chcesz obcinać?

0
Wibowit napisał(a):

Jakie krawędzie chcesz obcinać?

Zagadnien, problemów i wywań rzecz jasna. Wszak "cutting edge technologies" muszom być w arsenale szanujomcego siem kuca!

3

Kuc, zanim zacznie próby z tłumaczeniami zwrotów z jednego języka na drugi musi najpierw zapoznać się z pojęciem idiomu i jakie ma on znaczenie w tłumaczeniu.

https://en.wikipedia.org/wiki/Idiom

A literal word-by-word translation of an opaque idiom will most likely not convey the same meaning in other languages. The English idiom kick the bucket has a variety of equivalents in other languages, such as kopnąć w kalendarz ("kick the calendar") in Polish and casser sa pipe ("to break his pipe") in French.

https://pl.wikipedia.org/wiki/Idiom

da liegt der Hund begraben (niem.), (dosł. tu leży pies pogrzebany) – „w tym sęk” – w tym problem
it rains cats and dogs (ang.), (dosł. pada kotami i psami) – „pierze żabami”, „leje jak z cebra” – ulewa
come hell or high water (ang.), (dosł. niech nastąpi piekło albo powódź) – „choćby się paliło i waliło” – nieważne, co się stanie
revenons à nos moutons (fr.), (dosł. wróćmy do naszych baranów) – „wróćmy do rzeczy”
стрелял (метил) в ворону, а попал в корову ros., (dosł. strzelał do wrony, a trafił w krowę) - „trafić kulą w płot”

W języku polskim nie ma idiomu "technologie obcinające krawędzie" i nie ma sensu takiej kalki językowej używać.

Wracając do tematu, jeśli chodzi o nowe kierunki rozwoju w dziedzinie języków niezarządzanych to ostatnio dużą popularność zdobywa Rust. Rust to zdecydowanie jest powiew świeżości w porównaniu do C++, który tylko obrasta nowymi funkcjonalnościami i staje się coraz trudniejszy do opanowania. Rustowe abstrakcje są zdecydowanie bardziej trafione niż C++owe, moim zdaniem.

Aktualnie uczę się Rusta i widzę w nim podobieństwa do konstrukcji z innych języków jak i nowości. Krótka i niepełna charakterystyka Rusta:

  • brak automatycznego odśmiecania pamięci (garbage collectora) - brak GC jest niewygodny, a jednocześnie pewne kwestie są znacznie trudniejsze do opanowania jak np cykliczne referencje (bo tutaj sprytne wskaźniki nie dają rady),
  • brak nulla,
  • mechanizm zapożyczeń (borrow checking) - kompilator Rusta oblicza w czasie kompilacji poprawność zasięgu referencji, redukując błędy związane z błędnymi referencjami,
  • brak dziedziczenia znanego z C++, C#, Javy, itd nie ma też dziedziczenia prototypowego z JavaScripta
  • podstawowym mechanizmem współdzielenia kodu są traity (cechy), które niby według dokumentacji Rusta mają przypominać interfejsy z innych języków, ale faktycznie najbliżej im do typeclass z Haskella
  • późne wiązanie (tzn tutaj odpowiednik metod wirtualnych z C++) jest dostępne za pomocą 'trait objects',
  • generyki,
  • obecne są struktury, krotki (tuple) oraz enumy, przy czym te enumy nie przypominają enumów z C czy Javy, ale najbliżej im do data types z Haskella (czyli tych tworzonych za pomocą słowa kluczowego data, np data Maybe a = Nothing | Just a
  • obecność makr kompilatora (dzięki temu jest np wygodna serializacja i deserializacja z JSONa https://serde.rs/ , bądź auotmatyczne generowanie kodu do integracji z SQLowymi bazami danych http://diesel.rs/ )
  • brak bajtkodów, JITa, refleksji, itd
  • pattern matching jest wygodny, solidny i szeroko stosowany w Ruście,
  • dużo błędów jest zwracanych jako Rustowe enumy zamiast rzucania wyjątkami (których w Ruście się raczej nie łapie). W Ruście to jest nazwane Result (z wariantami Ok i Err) co jest odpowiednikiem np Eithera (z wariantami Left i Right) czy Try (z wariantami Success i Failure) ze Scali. Rust ma specjalny cukier składniowy do propagacji błędów przez co kodu do jego obsługi wcale nie jest dużo (i nie zaciemnia właściwej logiki), a kompilator dalej jest w stanie efektywnie sprawdzać statycznie poprawność obsługi błędów.

Rust szybko zdobywa popularność ale dalej jest mocno niszowy (w sumie nie dziwne bo wersja 1.0 została wydana zaledwie 2.5 roku temu, 25 maja 2015). Ciężko stwierdzić czy zawojuje rynek. Osobiście chciałbym aby wyparł C++a.

2

Przede wszystkim od 2010 opublikowano 3 wersje języka: C++11, C++14, C++17.
Różnica jest tak duża że możesz nie rozpoznać, że to C++.

https://github.com/AnthonyCalandra/modern-cpp-features

0

Nie jestem programista C++, ale kilka lat temu jako student pisałem trochę w Qt:
https://www.qt.io/

0
Wibowit napisał(a):

Kuc, zanim zacznie próby z tłumaczeniami zwrotów z jednego języka na drugi musi najpierw zapoznać się z pojęciem idiomu i jakie ma on znaczenie w tłumaczeniu.
(...pominięto ponad 9000 linii...)

Po pierwsze lurk moar. Po drugie nie pytam o Rusta.

vpiotr napisał(a):

Przede wszystkim od 2010 opublikowano 3 wersje języka: C++11, C++14, C++17.
Różnica jest tak duża że możesz nie rozpoznać, że to C++.

https://github.com/AnthonyCalandra/modern-cpp-features

THX Capt. Obvious!

margor90 napisał(a):

Nie jestem programista C++, ale kilka lat temu jako student pisałem trochę w Qt:
https://www.qt.io/

W sumie i dzisiaj przewija się to ciągle przez ogłoszenia. Wygląda na to, że aż tak dużo w tej materii się nie zmieniło.

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