# data[].attributes.body
Anggota Kelompok :
2501986990 - Muhammad Rizqi Aulia
2502007104 - Deny Andriawan
2502004393 - Athallah Yudhistira Annabeel Nugroho

# data[].attributes.body
Anggota Kelompok :

2502044762 - Rizaldi Ardika Mahendra Pratama

2502008233 - Kevin Irzam Rachmadiansyah

2540118473 - Yoss Dewangga Burgos

# data[].attributes.body
2501990211 - DIRK JOHANES HENDRIK YAPSOUMILENA

2502010780 - FIKRI AL-FALAQ FI RAJABI

2501962630 - HADAD AL AKBAR

# data[].attributes.body
- Chantikka Riffka Rahmadhani - 2502023650
- Angelina Patience Mulia -2501976226
- I Gusti Ayu Ngurah Stita Maharani -2540134262

1. the difference between a compiler and an interpreter is a compiler translates the entire program into machine code before execution, while an interpreter translates and executes the code line by line in real time.

2. a). compiler over an interpreter:

compilers can make code more efficient and save time

compilers make programs run faster because they prepare the code before running it

compilers help find errors before running the program

b). an interpreter over a compiler:

interpreters make it easier to spot mistakes right away while running your code

interpreters let you quickly test and change our code as we go

can do flexible things with our code when it's interpreted

interpreted code is often easier for people to understand and learn from

3. - Assembly language is usually more human-readable and closer to the target machine architecture than machine code.  This makes it easier to write compilers and interpreters that can target multiple architectures, thus increasing program portability.
- Debugging and testing is often easier in assembly language than machine code because it is easier to read and provides symbolic names for registers and memory locations, which helps in tracing errors.

4. here are some advantages of using C as a target language for a compiler, C is a language that is simple enough to be understood by humans, therefore there will be minimal errors when programmers enter code instructions to be compiled. Because it also makes the time for the computer to compile will be shorter.

5. Assembler transforms assembly language code into machine code so that a computer can execute it. Its responsibilities include reading the source code, translating it into machine language, managing symbols, addressing, creating output files, and identifying problems in the code. This eliminates the need for programmers to fully comprehend the complete computer architecture and enables them to build programs that are more machine-level.

# data[].attributes.body
2502033746 - Rosyidan Rouf Faisal
2540117861 - Gregorius Revyanno Alexander
2502020390 - Theodorus Austin Valenzio

# data[].attributes.attachment_link.title
A compiler and an interpreter are both computer programs that translate programming languages into machine code

# data[].attributes.headline
Compilation Techniques - Exercise Session 1

# data[].attributes.subject
Compilation Techniques - Exercise Session 1

# data[].attributes.body
Anggota Kelompok:
1. Adeva Satria Arif Wibawa - 2502012464
2. Dimas Syauqi Syafa - 2502004405
3. Muhammad Reza Faturrahman - 2501977626

# data[].attributes.attachment_link.title
Compilation Techniques - Exercise Session 1

# data[].attributes.body
No.1
Compiler:

- Terjemahkan seluruh kode sekaligus.
- Hasilkan file eksekusi terpisah.
- Program cenderung berjalan lebih cepat.
- Debugging bisa lebih sulit.
-Biasanya kurang portabel.

Interpreter:

-Terjemahkan dan jalankan kode baris per baris.
-Tidak menghasilkan file eksekusi tambahan.
-Program cenderung berjalan lebih lambat.
-Debugging lebih mudah.
-Lebih portabel, bisa berjalan di berbagai platform.

No.2

A. 1. Kecepatan eksekusi : compiler dapat membaca program lebih cepat karena bahasa yang lebih mudah di eksekusi
2.Optimasi kode : Compiler dapat melakukan berbagai jenis optimasi pada kode sumber selama proses kompilasi
3. Keamanan : compiler mamapu mendektisi kesalahan sebelum program dijalankan
4. Portabilitas : Program yang dikompilasi dalam bahasa mesin dapat dijalankan di berbagai platform
5. Kode sumber asli dapat disembunyikan dari pengguna akhir.

B.1.Debuging yang lebih mudah,karena interpreter mengeksekusi secara baris per baris sehingga lebih mudah melacaka bug.
2. Fleksibilitas : Kita dapat mengubah dan menguji code secara langsung tanpa perlu melakukan proses compilasi ulang
3. Portabilitas Tinggi : dimana kode yang dijalankan lebih portabel karena tidak tergantung pada bahasa mesin tertentu
4. Bahasa yang lebih dinamis : Interpreter sering kali mendukung bahasa yang lebih dinamis dan reflektif.
5. Pembelajaran dan pengujian : memungkinkan kita untuk melakukan pengujian dan eksperimen dengan kode dengan cara yang lebih interaktif.
6.Sumber daya sistem yang lebih rendah

No 3.

compiler yang menghasilkan assembly language code memiliki keuntungan antara lain:

1. Portabilitas: assembly language code lebih mudah dipindahkan daripada machine language, membantu pengembangan lintas platform.

2. Kemudahan Dibaca: assembly language code yang mudah dimengerti membantu dalam debugging dan pembelajaran.

3. Debugging: Lebih mudah dengan nama simbol untuk register dan memori.

4. Adaptabilitas: assembly language code lebih fleksibel untuk berbagai arsitektur.

5. Pendidikan: assembly language code yang dihasilkan oleh kompiler membantu mengajarkan konsep tingkat rendah.

6. Kustomisasi: developer dapat mengoptimalkan assembly language code.

7. Cross compilation : Berguna untuk berbagai target arsitektur yang berbeda.

Namun, tantangan meliputi optimasi yang berkurang, dan kurva pembelajaran yang lebih advanced bagi pemula dalam assembly language code. Pilihan tergantung pada tujuan kompiler dan beberapa hal lainnya.

No.4

Menggunakan bahasa C sebagai bahasa target untuk compiler, yang juga dikenal sebagai penerjemah sumber ke sumber (source-to-source translator), memiliki beberapa keuntungan:

- Portabilitas luas.
- Efisiensi.
- Integrasi dengan sistem dan perpustakaan.
-Dukungan compiler yang matang.
-Kontrol tingkat rendah dan ekspresi kode tingkat tinggi.
-Ekosistem yang kuat dan komunitas besar.
-Independensi platform.

No.5

Assembler memainkan peran penting dalam mengompilasi bahasa tingkat rendah seperti assembly . Ia memecah kode menjadi token, menyelesaikan simbol, menerjemahkan bahasa assembly menjadi machine code, menangani error, menghitung address, mengoptimalkan kode, mengelola tabel simbol, mengembangkan makro, dan menghasilkan output dalam berbagai format. Secara keseluruhan, ini mengubah bahasa assembly yang mudah dibaca manusia menjadi machine code untuk dieksekusi pada CPU atau komputer.

# data[].attributes.body
2502004090 - Alya Dhiya' Mardhiyyah
2501993964 - Mario Gracius Krishna Lita

# data[].attributes.body
Anggota:
2501990590 - Stacia Agatha
2501974933 - Hana Dyah Ayu Pertiwi
2501966143 - Vanessa Danuwijaya

# data[].attributes.body
2501986170 - Ahmad Zaini
2501971603 - Gracio Elika Enold Tirtahardja

# data[].attributes.body
Anggota Kelompok
1 Michael A- 2501965374
2 Vincent - 2501976226
3 Daniel K - 2540123031

# data[].attributes.body
1. Compiler dan interpreter adalah dua jenis perangkat lunak yang digunakan dalam pengembangan dan eksekusi program komputer.

Compiler mengonversi seluruh kode sumber menjadi kode objek sebelum eksekusi, sementara interpreter menerjemahkan kode sumber secara baris per baris saat program dijalankan.

Compiler umumnya memiliki kinerja yang lebih cepat, sedangkan interpreter lebih lambat.

Compiler menemukan kesalahan setelah seluruh kode dikompilasi, sementara interpreter menemukan kesalahan saat kode dieksekusi.

Kode objek yang dihasilkan oleh compiler khusus untuk platform tertentu, sedangkan kode yang diinterpretasi lebih portabel.

Contoh bahasa yang menggunakan compiler termasuk C, C++, dan Rust, sedangkan Python, Ruby, dan JavaScript adalah contoh bahasa yang menggunakan interpreter.

Pilihan penggunaan antara compiler dan interpreter tergantung pada kebutuhan dan karakteristik program yang akan dikembangkan.

2. Keuntungan Compiler dibandingkan dengan Interpreter:

Kinerja tinggi.

Pendeteksian kesalahan awal.

Portabilitas ke platform target.

Perlindungan kode sumber.

Penggunaan sumber daya yang lebih efisien.

Keuntungan Interpreter dibandingkan dengan Compiler:

Pengembangan cepat.

Portabilitas kode sumber.

Pesan kesalahan yang lebih deskriptif.

Fleksibilitas dalam eksekusi.

Pemecahan masalah interaktif.

3. penggunaan compiler yang menghasilkan kode bahasa rakitan (assembly language) memiliki beberapa keuntungan, termasuk portabilitas yang lebih baik, optimasi yang lebih mudah, debugging yang lebih efisien, pemahaman yang lebih baik, keterbacaan yang lebih tinggi, dan kemampuan pengembangan yang lebih kuat dibandingkan dengan compiler yang menghasilkan bahasa mesin. Kode bahasa rakitan lebih manusiawi, mudah dimengerti, dan mudah dipindahkan antar platform tanpa perlu mengubah kode sumber.

4. menggunakan bahasa C sebagai bahasa target untuk compiler memiliki keuntungan dalam portabilitas, integrasi, kematangan, optimasi, fleksibilitas lintas platform, dukungan perangkat lunak, dan dukungan komunitas, menjadikannya pilihan yang baik untuk menghasilkan kode dalam bahasa tingkat tinggi lainnya.

5. Kesimpulan singkatnya adalah bahwa assembler adalah perangkat lunak yang menjalankan sejumlah tugas penting, termasuk pemrosesan kode sumber, pemrosesan instruksi, penanganan label dan simbol, penghitungan lokasi, pemeriksaan kesalahan, penghasilan kode mesin, dan pembuatan output. Tugas-tugas ini memungkinkan assembler mengonversi kode bahasa rakitan menjadi kode mesin yang dapat dijalankan oleh komputer target.

# data[].attributes.body
Nama :
kevin aurelius(2540129281)
David christian(2502005660)
1. The primary difference between a compiler and an interpreter lies in their approach to executing code. A compiler translates the entire source code into machine code or another low-level representation before execution, while an interpreter processes code line-by-line and executes it directly.

2. (a) Advantages of a compiler over an interpreter:
- Faster execution: Compiled code is generally faster as it's pre-translated into machine code.
- Optimizations: Compilers can apply various optimizations during translation.
- Portability: Compiled code can run on different machines without the need for the original source code.

(b) Advantages of an interpreter over a compiler:
- Easier debugging: Interpreters can provide immediate feedback, aiding debugging.
- Platform independence: Code can be run on any platform with the interpreter installed.
- Flexibility: Interpreters can execute code without prior compilation, making them suitable for scripting languages.

3. Advantages of a compiler producing assembly language instead of machine language:
- Portability: Assembly code can be more easily adapted for different hardware platforms.
- Human readability: Assembly code is easier for programmers to understand and modify compared to machine code.
- Debugging: Debugging can be more accessible when working with assembly code.

4. Yes, a compiler that translates a high-level language into another high-level language is commonly referred to as a source-to-source translator or transpiler. Advantages of using C as a target language for a compiler include:
- Widely supported: C is widely supported on various platforms.
- Efficient code generation: C allows for efficient translation of high-level language constructs.
- Existing libraries: Developers can leverage existing C libraries and tools.

5. Tasks performed by an assembler include:
- Lexical analysis: Breaking source code into tokens.
- Symbol resolution: Resolving symbolic labels to their memory addresses.
- Generating machine code: Producing the binary machine code instructions.
- Managing memory allocation: Keeping track of memory addresses for data and instructions.
- Handling directives: Processing assembler directives.
- Error handling: Detecting and reporting syntax and semantic errors in the assembly code.

# data[].attributes.attachment_link.title
Big Data Analytics for Business - Forum Session 1