Jakie języki integrują się bardzo dobrze z kodem napisanym w C/C++?

0
  1. Przez integrację mam na myśli możliwość zawołania metody z C/C++ przez dany język i w drugą stronę.
  2. Przez bardzo dobrze mam na myśli:
  • rozumienie mechanizmów języka z C/C++ takich jak wskaźniki i dostęp do danych przez nie
  • bardzo mały narzut na wywołanie danej funkcji i czytanie dużej ilości danych bez kopiowania
  • narzędzia (IDE i inne), które nie mają kłopotu z dwoma językami użytymi w 1 projekcie.
  1. Java/C# wydaje mi się, że przez narzut wirtualnej maszyny nie osiągną one punktu 2, jeśli jestem w błędzie proszę o wyprowadzenie. Kotlin Native raczkuje mocno póki co.
1

Python + ctypes?

2
  • C
  • C# i pochodne z pomocą C++ CLI
  • Objective C++

Przeskok do Java to prawdziwy ból. Pisanie kodu z JNI to mordęga.
Jest jeszcze JNA, wiem że dobrze działa z C i jest dość przyjemne w użyciu, ale wolniejsze od JNI. JNA z C++ nigdy nie widziałem w akcji.

Nigdy nie korzystałem, ale słyszałem, że http://www.swig.org/ jest dość dobrym rozwiązaniem, które pozawala korzystać z kodu C++ z bardzo wielu języków wyszego poziomu.

1

Delphi + C++ bardzo prosto z jednego idę debuggowac pliki pas i cpp jak i za pomocą plików hpp dziedziczyć klasy np. Delphi klasami pochodnymi w cpp czy przekazać do funkcji wskaźnik i operować na pamięci a nawet rzutować. Samo IDE potrafi wkurzyć ale chyba szukasz przypadków akademickich?

3

Jeśli chodzi o dwukierunkowość to zapewne:

  • Delphi/Pascal
  • Fortran (dziwne, że nikt jeszcze nie wymienił)
  • Rust
  • D
  • Zig
  • Nim
  • Crystal

Z takich "popularniejszych" technologii, które w miarę bezproblemowo działają w obie strony chyba nic więcej. Jeśli jednak trochę "więcej zachodu" jest dozwolone, to w Erlangu jeśli napiszesz sobie C-node to można w miarę łatwo się komunikować w obie strony, ale to trochę oszustwo, bo w ten sposób można uzasadnić wszystkie języki "gadające" poprzez stdio/jakiś bus.


Byłbym zapomniał, jeszcze są języki skryptowe przeznaczone do takiego działania, więc masz:

  • Lua
  • Guile
  • MRuby

Może coś takiego by Cię interesowało, zależy co chcesz osiągnąć i co potrzebujesz.

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