Saya telah pemrograman untuk sementara waktu, saya telah menulis beberapa program dasar, dan saya ingin terus belajar. Saya telah mencapai titik di mana Anda tidak tahu apa yang harus saya pelajari selanjutnya, dan saya ingin mengajukan pertanyaan atas keingintahuan saya sendiri.
Singkatnya, adalah apakah Anda dapat menggabungkan beberapa bahasa pemrograman menjadi 1 hasil? Misalnya, dapatkah kode ini dimungkinkan?
<html>
cout << "Hello world!";
</html>
atau
import java.util.Scanner;
cout << "Insert a number from 1 to 10";
Scanner n = new Scanner(System.in);
System.out.println("The value you entered was" +n.newLine());
Ini terasa seperti pertanyaan konyol tapi saya tidak mungkin tahu apakah itu mungkin atau tidak, jadi itu sebabnya saya menanyakannya. Dalam pertanyaan ini saya perhatikan dia menggunakan kode Python dalam kode html, jika contoh saya di atas tidak mungkin, apa yang dia lakukan?
programming-languages
Bugster
sumber
sumber
Jawaban:
Contoh pertama Anda adalah semacam kemungkinan. Biasanya hal-hal seperti itu terjadi di PHP (dan bahasa pemrograman web terkait lainnya) seperti ini:
Beberapa poin penting yang perlu diperhatikan tentang contoh ini:
Contoh kedua Anda terlihat seperti semacam penyatuan C ++ dan Java. Dimungkinkan untuk menyusun modul yang ditulis dalam bahasa yang berbeda berbicara satu sama lain, tetapi untuk menggabungkan Java dan C ++ dalam file sumber yang sama akan sangat membingungkan dan sulit: bagaimana kompiler mengetahui pernyataan mana yang Java dan mana yang C ++?
Saya kira secara teori Anda dapat menulis kompiler / pra-prosesor khusus dengan indikator "bahasa" seperti:
Tapi jujur saya tidak yakin Anda akan mendapatkan sesuatu yang bermanfaat dengan melakukan ini.
Juga, bagaimana lingkungan bahasa hybrid ini menangani fitur bahasa yang tidak kompatibel di antara keduanya?
sumber
CUDA
. Ini adalah campuran dari dua bahasa C yang sangat berbeda, dengan beberapa fungsi yang dikompilasi untuk perangkat (GPU), dan beberapa yang tersisa di host, dengan lapisan komunikasi yang disimpulkan.Jawaban singkat
Tidak juga.
Jawaban panjang
Menanamkan
Secara umum, satu file sumber berisi kode untuk satu bahasa pemrograman. Jarang beberapa bahasa digabungkan dalam satu file karena beberapa alasan:
Menautkan
Bahasa pemrograman yang berbeda yang berbagi antarmuka biner aplikasi umum dapat digabungkan untuk membentuk satu executable atau pustaka. Mendapatkan tanda tangan kedua bahasa yang tersedia di dalam satu sama lain seringkali membutuhkan sedikit pekerjaan, tetapi ada alat untuk memudahkan proses.
Poliglot
Kode polyglot valid dan setara dalam lebih dari satu bahasa. Halaman 404 Stack Overflow menampilkan satu program seperti:
Ini mencetak "404" dalam Python, Perl, Ruby, C, Brainfuck dan Befunge.
Kesimpulan
Bahasa jarang tercampur dalam file, dan ketika itu, itu untuk tertawa . Orang-orang bahkan mencoba untuk menghindari pencampuran bahasa dalam proyek karena kerumitan tambahan yang diperkenalkannya. Jadi, meskipun secara teknis memungkinkan, menggabungkan bahasa yang berbeda bukanlah hal yang umum atau pragmatis.
sumber
DATA
pernyataan. Bukannya aku pahit atau apalah. TidaaaakYa, memang mungkin. Bukan seperti yang Anda bayangkan, tentu saja. Ada beberapa bahasa di luar sana yang dibuat khusus untuk tujuan ini.
Dalam praktiknya, mungkin sangat berguna untuk mencampur sejumlah bahasa khusus domain ke dalam satu bahasa host. Jarang ada kebutuhan dalam mencampur dua atau lebih sama "tujuan umum" bahasa bersama dalam file kode sumber tunggal, meskipun Anda akan sering menemukan proyek ditulis dalam keduanya, katakanlah, VB.NET dan C #, dengan komponen bahasa yang berbeda dikompilasi secara terpisah.
Adapun HTML, itu hanya bahasa markup. Anda mungkin sering menemukan kode sisi-server (misalnya, dalam VB.NET), markup HTML dan kode Javascript sisi-klien bercampur menjadi satu file sumber, meskipun itu dianggap praktik buruk oleh banyak orang.
sumber
Ini sering disebut kode polyglot - ada beberapa contoh menyenangkan / gila jika Anda mengikuti tautan atau di berbagai tempat lain di web. Sebagian besar ini hanya untuk bersenang-senang / membuktikan bahwa itu mungkin.
Lebih serius, ada berbagai contoh kehidupan nyata di mana dua atau lebih bahasa yang berbeda dapat dikombinasikan secara bermanfaat:
sumber
Dimungkinkan untuk melakukan beberapa kombinasi bahasa menggunakan Perl Inline yang memungkinkan untuk menulis skrip Perl dan menyisipkan bagian kode yang ditulis dalam bahasa yang berbeda:
sumber
Embedded SQL adalah cara umum untuk menanamkan pernyataan SQL ke dalam program bahasa lain.
Saat ini hampir semua telah diganti oleh akses basis data berbasis API yang lebih mudah dikompilasi yang tidak perlu mengubah bahasa host, tetapi gunakan kemampuan normalnya.
sumber
Beberapa bahasa pemrograman dapat digunakan untuk membentuk 1 exe. Salah satu caranya adalah dengan menggunakan DLL. Tentu ada berbagai kekhawatiran tentang hal ini. Misalnya, kompatibilitas parameter, kompatibilitas COM dan semacamnya. Bahkan, jika Anda memikirkan bagaimana Anda memanggil sistem database untuk melakukan pekerjaan Anda, Anda mungkin menemukan bahwa DBMS tidak selalu ditulis dalam bahasa yang Anda tahu. Anda mungkin bahkan tidak peduli selama antarmuka diketahui.
Konsep ini diambil lebih lanjut ketika solusi Anda menggunakan Layanan Web, yang bahkan merupakan cara yang lebih bersih untuk menggabungkan beberapa komponen perangkat lunak.
Di dunia .NET, semua hal di atas berlaku, terlebih lagi, pada tingkat antarmuka XAML dan antarmuka HTML dapat hidup bersama di Silverlight.
Di dunia UNIX, pada suatu waktu, kami menggunakan skrip KShell untuk meluncurkan program C ++ dan COBOL sehingga solusinya dapat bekerja.
sumber
Saya pikir layak menyebutkan Cython di sini. Ini adalah superset dari Python untuk menulis ekstensi C dan meskipun itu benar-benar bahasa yang unik, itu cukup banyak memungkinkan Anda untuk menggunakan kode C dalam kode Python, jika Anda mematuhi sintaks gaya Python Cython
sumber
Contoh menggabungkan bahasa: Jython (python di Jawa), Cog (python digunakan sebagai pembuat kode yang tertanam di hampir semua hal). Saya sering menggunakan kode Perl untuk menghasilkan C ++, jika Anda menghitung pembuatan kode.
sumber
Kerangka .NET dibangun untuk memungkinkan beberapa bahasa berpartisipasi dalam satu solusi. Ini berfungsi selama bahasa dapat menghasilkan kode byte yang kompatibel dengan CLR.
http://www.geekinterview.com/question_details/1047
sumber
Sangat sulit, sangat jelek dan sering tidak berguna untuk menggabungkan beberapa bahasa pemrograman dalam 1 file.
Namun dimungkinkan untuk memiliki proyek besar yang ditulis dalam lebih dari 1 bahasa. Misalnya, baik Mozilla Firefox dan MySQL memiliki kode C dan C ++ di dalamnya. Ketika datang ke proyek-proyek besar, praktik ini sering digunakan karena bahasa tertentu menyediakan beberapa fitur yang tidak dimiliki orang lain. Dalam PHP, misalnya, Anda dapat meminta eksekusi binary executable, mengambil hasilnya dan menggunakannya dalam kode PHP Anda sejak saat itu.
Jika Anda ingin tahu tentang bahasa apa yang digunakan untuk beberapa proyek sumber terbuka paling penting di dunia, Anda dapat melihatnya
Ohloh.net
. Statistik tentang kode sumber banyak proyek dapat ditemukan di sana.sumber
Anda dapat "mencampur" bahasa dalam HTML. Ini sebenarnya penting untuk cara kerja banyak situs web yang dapat Anda tanamkan javascript ke html. Tapi tentu saja, HTML adalah markup, bukan bahasa pemrograman.
Saya pikir untuk melakukan apa yang Anda usulkan akan memerlukan penulisan bahasa baru. Entah Anda harus membuat juru bahasa / kompiler yang berbicara semua bahasa itu dan dapat membingkai mereka secara konsisten, atau Anda akan memerlukan beberapa cara untuk mengevaluasi baris demi baris secara eksplisit dalam apa yang akan menjadi bahasa meta. Kedua opsi itu pada dasarnya sama kecuali untuk apa yang harus dilakukan programmer untuk membuat bahasa bekerja bersama.
sumber
Bahasa adalah alat. Sebelum memilih alat (apalagi, membuat kombinasi hummer-PC-spectroscope yang aneh) orang harus bertanya pada dirinya sendiri - apa sebenarnya yang ingin saya lakukan ?? Setelah jawaban diberikan, Anda akan menemukan bahwa campuran bahasa seperti itu jarang diperlukan.
sumber
Ya, dimungkinkan untuk mencampur bahasa pemrograman selama penerjemah / kompiler Anda dapat memahaminya. Misalnya mencampur javascript, PHP, python dalam HTML atau C ++ di C #.
Namun, mencampur bahasa dapat membuatnya lebih sulit untuk membaca dan memodifikasi kode, sehingga harus dilakukan dengan hati-hati. Salah satu cara mengatasi hal ini adalah dengan membuat file terpisah untuk kode dalam bahasa yang Anda perlu panggil dan mengimpornya daripada menanamkannya.
sumber