Majelis sebagai Bahasa Pemrograman Pertama? [Tutup]

12

Menurut Anda, seberapa bagus ide mengajar orang Majelis (beberapa varian) sebagai bahasa pemrograman pertama? Dibutuhkan lebih banyak usaha daripada belajar misalnya Java atau Python, tetapi orang akan memiliki pemahaman yang baik tentang mesin lebih atau kurang dari "pemrograman hari pertama" (dibandingkan dengan banyak bahasa tingkat yang lebih tinggi, setidaknya). Bagaimana menurut anda? Apakah ini ide yang realistis, setidaknya bagi mereka yang siap melakukan upaya ekstra? Keuntungan dan kerugian?

Catatan: Saya bukan guru, hanya ingin tahu

Anto
sumber
5
Saya pikir ini lebih cocok untuk orang yang mempelajari ilmu komputer dan bukan rekayasa / pengembangan perangkat lunak
Imran Omar Bukhsh
1
@ Imran Saya setuju pada kepala sekolah, tetapi setiap program tingkat perguruan tinggi yang saya pikirkan memiliki gelar dalam Ilmu Komputer yang diperoleh oleh orang-orang yang sebagian besar melanjutkan untuk bekerja di Rekayasa Perangkat Lunak. (Saya mengasumsikan pertanyaan ini adalah tentang dasar yang serius untuk karir pemrograman, bukan misalnya kursus survei sekolah menengah)
G__
7
@ Imran - Saya menemukan itu sedikit mengejutkan. Ilmu komputer pasti lebih condong ke arah matematika dan teori? Lebih tertarik pada set, aljabar abstrak dan notasi asimptotik daripada sedikit-mengutak-atik dan menulis pengulangan tak berujung dari langkah-bla-bla.
Steve314
2
Ilmu Komputer tentu saja memiliki subjek abstrak, tetapi juga sangat "dekat dengan perangkat keras" dalam beberapa hal. Saya pernah menghadiri LICS, sebuah konferensi Ilmu Komputer. Saya ingat itu memiliki makalah tentang data lokalitas dari berbagai algoritma penyortiran yang saya bayangkan memberikan dasar teoritis untuk studi efisiensi praktis dari algoritma. Mengenai perakitan, saya pribadi menemukan itu memiliki beberapa kemiripan dengan beberapa model perhitungan teoretis (mesin Turing, mesin counter ...)
Joh
1
Setiap programmer setidaknya harus membaca tentang cara kerja assembly, IMO. Itu memberi saya banyak wawasan dan saya biasanya tentang tidak-dekat-the-chrome yang Anda bisa dapatkan. Jeff Duntemann's Assembly Language Step by Step adalah bacaan yang menyenangkan untuk pemula.
Erik Reppen

Jawaban:

14

Akan sulit untuk menginspirasi programmer baru dengan kode assembly. Halo yang dinamis, situs web pengguna jauh lebih keren dengan sedikit usaha. Saya tidak mengatakan bahwa pelajaran dasarnya sama, tetapi kursus pengantar akan memiliki konten inspirasional yang besar, jika tidak maka tidak akan ada kursus kedua.

Saya ingat kursus pemrograman awal saya diajarkan dalam Skema dan saya sebagian besar frustrasi bahwa saya tidak bisa dengan mudah mengkompilasi ke .exe dan "menjalankan" program saya (saya pikir MS Visual Basic adalah akhir dari semua pemrograman). Tidak sampai bertahun-tahun kemudian saya benar-benar memahami alat yang ampuh yang telah saya mainkan. Saya pikir saya akan lebih menghargainya dan mendapatkan pelajaran itu lebih baik jika saya memiliki pengalaman awal dalam sesuatu yang sedikit lebih pragmatis pada awalnya.

G__
sumber
20
Saya telah melihat banyak siswa yang jauh lebih kagum membuat kedipan LED dan gerakan motor.
whatsisname
1
@Whatsisname +1, yang akan membuat demo mengesankan yang bagus, selama itu bisa dilakukan tanpa terjebak dalam elektronik. Tentu saja, itu bisa dilakukan dengan bahasa tingkat yang lebih tinggi juga yaitu peretasan Roomba, jika "driver" adalah kotak hitam yang disediakan instruktur.
G__
1
Banyak programmer baru terinspirasi oleh perakitan pada VIC20, C = 64 dan mesin sejenis.
Gayus
2
@ Gayus Tidak pada awalnya! Anda menyalakan mesin-mesin itu dan Anda menggunakan juru bahasa dasar. Majelis hadir setelah cukup banyak pengalaman dan mencapai batas-batas apa yang dapat dilakukan dasar ...
G__
1
@whatsisname tetapi Anda dapat menggunakan sesuatu seperti Arduino untuk mengedipkan LED dan memindahkan motor tanpa harus belajar perakitan
Ken Liu
12

Saya pikir itu adalah ide yang buruk untuk Rekayasa Perangkat Lunak dan siswa CS, dan umumnya orang lebih tertarik pada pemrograman daripada elektronik.

Itu bisa dilakukan, tetapi itu tidak berarti harus dilakukan. Kembali pada hari itu, cara untuk melakukan hal-hal yang sangat keren dengan komputer di rumah adalah belajar perakitan terlebih dahulu. Itu karena keterbatasan perangkat keras awal - bahasa tingkat yang lebih tinggi tidak begitu kuat dan cukup cepat. Saat ini, Anda dapat melakukan banyak hal yang lebih keren, dalam waktu yang lebih singkat, dengan bahasa tingkat yang lebih tinggi.

Apa yang terdengar lebih menarik, menulis prototipe cepat untuk permainan sederhana dan bermain-main dengan variasi pada suatu algoritma, atau berjuang dengan register dan hal-hal tingkat rendah?

Andres F.
sumber
3
Sebagai seorang pianis, saya pasti merasa lebih menarik untuk melompat langsung dengan beberapa lagu, tetapi untuk menjadi layak Anda perlu berlatih arpeggio, timbangan, dll. Dan kemudian untuk melakukan hal-hal yang sangat inovatif (bermain dengan "piano siap" dan sejenisnya) Anda perlu tahu cara piano bekerja dari dalam ke luar. Ini semua seberapa baik Anda ingin tahu kerajinan Anda.
John
10
@ John di CashCommons: Analogi buruk. Memulai dengan assembler seperti memulai palu, keyboard, bobot, dan peredam. Dan kemudian beralih ke teori musik (lingkaran kelima) untuk menjelaskan bisnis black-key, white-key. Kemudian beralih ke teori musik yang lebih banyak lagi sebelum memainkan skala.
S.Lott
3
@ S.Lott: Ehhhhh ... jangan membeli itu. Saya dapat menulis program jenis "halo dunia" dalam perakitan tanpa khawatir tentang transistor. Seseorang tidak perlu menjadi perancang chip untuk menjadi seorang programmer. Pengetahuan yang Anda bicarakan akan menjadi fondasi untuk membangun atau memperbaiki piano, yang hanya terkait dengan memainkannya saja.
John
3
@ John di CashCommons: "membangun atau memperbaiki piano". Itu analogi dengan assembler. "Halo dunia" sepele dalam assembler dapat ditulis, tetapi itu hanya panggilan API OS - yang pada dasarnya mengabaikan semua detail assembler yang mengerikan. Untuk menulis driver I / O, assembler sangat penting. Cara yang sama palu dan peredam adalah tentang membangun dan mempertahankan, bukan melakukan.
S.Lott
1
@ S.Lott: Hmmmm ... Saya kira set instruksi tertentu tidak tergantung pada chip, bukan? Poin yang bagus.
John
7

Saya tidak berpikir itu ide yang buruk, tetapi seberapa rumit program yang akan Anda berikan kepada para siswa ini? Majelis membutuhkan lebih banyak pekerjaan. Mungkin oke untuk memulainya dengan hal-hal yang sangat mendasar dan kemudian memindahkannya ke sesuatu yang lebih mudah untuk dikerjakan, begitu mereka mendapatkan penghargaan untuk bekerja di tingkat bawah. Siswa pertama kali kadang-kadang mendapatkan ide di kepala mereka akan mengkodekan Halo berikutnya, atau MS Office atau AutoCAD atau sesuatu, dan ketika mereka melihat berapa banyak pekerjaan yang masuk ke dalam bahasa assembly yang sederhana , mereka bisa takut, jadi jelaskan bahwa ada hal-hal yang lebih baik daripada perakitan dan kemudian memindahkannya ke hal itu begitu mereka telah melihat konsepnya. Anda juga bisa mencoba mengajar secara bersamaan dengan sesuatu yang lain seperti C.

Juga, bahasa rakitan mana? Saya agak ingat MIPS relatif mudah untuk dikerjakan, dan saya pikir itu berjalan dalam emulator sehingga tidak ada bahaya yang menyebabkan masalah pada mesin yang sebenarnya , meskipun mungkin ada alat yang lebih baik dari itu sekarang.

Ini bisa bekerja dengan baik, jika dilakukan dengan benar. Hati-hati...

FrustratedWithFormsDesigner
sumber
+1 untuk kerumitan masalah. Pilihan saya akan kontras beberapa implementasi assembler terhadap implementasi bahasa tingkat yang lebih tinggi. Dan mungkin menggunakan mis. 68000 assembler dalam sebuah emulator daripada x86 - Saya tidak tahu bagaimana assembler x86 / amd64 telah berevolusi, tetapi 68000 jauh lebih bersih dan lebih mudah untuk digunakan dibandingkan dengan 8086 cara kembali saat itu. Juga mungkin layak dipertimbangkan - assembler mesin virtual seperti yang Anda dapatkan dengan LLVM. Tidak sama dengan assembler asli, tetapi memiliki banyak prinsip yang sama, dan mungkin lebih relevan.
Steve314
Mengajar ASM bersamaan dengan C terdengar seperti ide yang bagus
Anto
@ Steve314: Saya tidak siap dengan x86 assembler, tetapi sepertinya sudah lebih rumit dari 8086.
David Thornley
@ David - Saya harap begitu, tetapi mungkin saja menjadi lebih sederhana dalam beberapa hal. Dalam 8086 hari, kisaran mode alamat yang tersedia tergantung pada register tertentu yang Anda gunakan, serta pada instruksi. Pada 68000, ada (untuk sebagian besar tujuan) data register dan register alamat, dengan masing-masing jenis digunakan cukup seragam, tanpa ada is-this-an-index-atau-a-base-pointer-atau-apa kerepotan. Seiring waktu, mungkin itu berubah? The 68000 juga memiliki lebih banyak register, menghemat beberapa bergerak masuk dan keluar dari memori. Bagaimanapun, Anda tidak perlu mempelajari hal-hal SIMD untuk mendapatkan prinsip assembler dasar.
Steve314
@ David - Saya tidak percaya saya lupa (ditekan) pengalamatan tersegmentasi. Ini cukup buruk dalam bahasa tingkat tinggi. Ada pengalamatan tersegmentasi lagi sekarang, tapi itu hal yang berbeda, berkaitan dengan memori virtual dll, yang tidak perlu dikhawatirkan oleh pemrogram tingkat aplikasi.
Steve314
7

Assembly adalah bahasa pertama yang kami pelajari di sekolah elektronik (pada 1900-an) dan sepertinya pilihan alami. Kami bekerja keras melalui kursus-kursus kami mulai dari komponen diskrit, hingga logika transistor-resistor, gerbang logika, sirkuit terintegrasi, prosesor, dan ke pemrograman dalam perakitan. Banyak siswa di kelas-kelas ini belum pernah memprogram dalam bahasa apa pun sebelumnya dan mereka mengambilnya.

Jadi perakitan dapat menjadi pilihan yang baik untuk bahasa pertama jika fondasi yang tepat diletakkan untuk siswa. Namun, bagi siapa pun yang tujuannya adalah menjadi aplikasi atau pengembang Web, saya pikir perakitan mungkin terlalu rendah sebagai titik awal.

Bill the Lizard
sumber
7

Satu hal yang pasti, jika orang-orang, belajar Assembly terlebih dahulu, membuatnya, mereka akan menjadi programmer yang luar biasa.

Ini mengingatkan saya ketika saya belajar mengemudi. Ibuku bersikeras

Belajar pada mobil otomatis hingga Anda mendapatkan kepercayaan diri, dan kemudian Anda dapat mengendarai mobil manual kami.

Alasannya dia tidak ingin aku terganggu dengan lebih dari yang seharusnya, sekaligus.

Terapkan itu untuk mempelajari cara memprogram, apakah perlu untuk melemparkan semuanya pada pelajar sekaligus? Mereka belajar apa variabel itu pada saat yang sama mereka belajar berapa banyak data yang dapat mereka simpan dalam jenis register apa?

Lebih dari setengah kelas saya gagal kelas perakitan kami, dan ini adalah sekelompok orang yang, pada waktu itu, menganggap diri mereka memiliki pengetahuan pemrograman selama 2+ tahun.

Preferensi pribadi saya, jika saya harus mempelajari semuanya lagi, adalah memulai dengan bahasa yang dapat melakukan sebanyak mungkin untuk saya. Kemudian, ketika saya belajar, bergerak mundur menuju bahasa tingkat yang lebih rendah.

CrazyPenguin
sumber
1
Saya pikir ini saran yang bagus dan bagus. Pada titik tertentu, penting untuk mengetahui bit dan byte dan apa yang dilakukan prosesor dengan mereka tetapi memulainya dengan mereka adalah upaya yang sangat boros karena kami memiliki bahasa seperti ruby ​​dan python yang sempurna untuk pemula dan mendorong prinsip-prinsip rekayasa perangkat lunak yang sangat baik.
davidk01
1
Sudahkah Anda mempertimbangkan kemungkinan bahwa instruktur melakukan pekerjaan yang kurang baik dalam mengajar kelas bahasa majelis?
John R. Strohm
Saya pikir dia melakukan pekerjaan luar biasa.
CrazyPenguin
3

Apakah ini ide yang realistis, setidaknya bagi mereka yang siap melakukan upaya ekstra?

Tidak

tetapi orang akan memiliki pemahaman yang baik tentang mesin

Mengapa itu menguntungkan? Bisakah Anda memberikan contoh atau petunjuk bagaimana ini bisa bernilai?

Keuntungan dan kerugian?

Keuntungan: Tidak ada.

Kekurangan:

  • Sebuah kekacauan trivia acak tentang bendera dan negara bagian dan register dan skema pengalamatan memori yang kompleks dan perangkat I / O dan DMA serta interupsi dan siklus jam dan sebagainya. Tidak ada yang membantu memahami bahasa dan komputasi modern berbasis VM.

  • Putus dari pemecahan masalah aktual yang sebenarnya diterapkan komputer.

  • Sebuah perceraian dari pengguna akhir dan data praktis serta masalah pemrosesan yang harus mereka selesaikan.

  • Serangkaian penjelasan mesin dan mesin virtual serta kompiler dan interpreter yang tidak perlu dan seluruh tumpukan kura-kura memegang dunia.

  • Banyak perincian "ini adalah implementasi fisik dari 'objek'" dalam bahasa tingkat yang lebih tinggi yang akhirnya mereka dapatkan.

  • Banyak perincian "ini adalah bagaimana fungsi metode dikirim" dalam bahasa tingkat yang lebih tinggi yang akhirnya mereka dapatkan.

  • Banyak penjelasan "ini tidak berlaku untuk 80386 tetapi berlaku untuk chipset 80586".

  • Banyak panggilan API OS tingkat rendah untuk membuat program ASM melakukan apa pun yang tampaknya serupa dengan berguna oleh seseorang.

Inti dari bahasa pemrograman pertama bukanlah untuk menguasai chipset.

Inti dari bahasa pemrograman pertama adalah

  1. Memahami cara berpikir tentang komputasi.

  2. Memahami bagaimana melakukan pemrosesan data yang berguna.

  3. Pahami cara menyelesaikan sesuatu. Desain - kode - tes.

S.Lott
sumber
1
@ S.Lott - Tentu saja, itu bukan poin dari pertanyaan awal saya, tetapi bisa menguntungkan untuk memiliki ini sebelum Anda pergi ke bahasa tingkat yang lebih tinggi. Jangan salah paham, Anda membuat poin yang valid.
Anto
3
-1 Banyak kerugian Anda, saya menganggap keuntungan. Lebih baik untuk mengetahui cara kerja level rendah, sebelum Anda menggunakannya dari atas. Yayasan itu penting.
Orbling
1
Assembler sebagai bahasa pemrograman, membuat Anda jauh lebih baik dengan struktur data, logika, dan fondasi tingkat yang lebih rendah daripada bahasa tingkat yang lebih tinggi. Keduanya memiliki tempat, assembler mungkin lebih sederhana untuk dipahami daripada bahasa tingkat yang lebih tinggi, asalkan Anda tidak mencoba untuk mencapai sesuatu yang terlalu rumit. Orang seharusnya tidak mencoba melakukan hal-hal rumit pada awalnya.
Orbling
4
Keuntungan assembler adalah menunjukkan bagaimana komputer nyata bekerja. Kamu tahu. Semua hal yang benar-benar berjalan .
Paul Nathan
1
@ S.Lott - Tidak, tapi itu artinya Anda bisa menggunakan sebagian besar pengetahuan lama yang sudah Anda kumpulkan dan menambah pengetahuan baru seiring waktu. Lihat, bahasa tingkat tinggi seperti Python datang dengan versi baru dari waktu ke waktu, tetapi pengetahuan lama masih dapat digunakan (dan sebenarnya, Python merusak kompatibilitas dengan v3)
Anto
3

Jika saya ditugaskan untuk merancang kurikulum, saya akan memiliki dua program yang berjalan pada saat yang sama semester pertama: asm + organisasi komputer dasar / arsitektur, dan kursus berbasis SICP yang didirikan di Skema. Semester kedua akan berorientasi pada struktur data dan algoritma dasar dalam Skema.

Tahun kedua akan menjadi proyek sepanjang tahun menggunakan salah satu dari Delphi, C ++ atau C #, yang berfokus pada desain perangkat lunak modern (desain OO, beberapa desain fungsional, rekayasa perangkat lunak, kontrol versi, dll).

Efeknya harus memberi landasan kuat dalam abstrak dan praktis, mengarah ke kursus mendalam di tahun ketiga dan keempat.

Paul Nathan
sumber
3

Saya terbiasa dengan TA kelas pengantar ilmu komputer, dan saya pikir itu ide yang buruk.

  1. Majelis menggunakan kedua logika (jika ini kebalikannya) dan terjemahan yang sangat sulit antara konsep dan angka. Intro CS siswa sering berjuang hanya dengan logika (loop, jika / selain itu, ekspresi boolean), dan benar-benar perlu hanya berurusan dengan ini sebelum mereka juga khawatir tentang angka mana yang berarti ekspresi logis apa. Menggunakan bahasa tingkat tinggi mengabstraksi logika ini untuk siswa yang belum memiliki alasan untuk berpikir seperti itu sebelumnya.
  2. Kelas CS Intro tidak hanya diambil oleh jurusan CS yang akan melanjutkan dengan CS. Seringkali, mereka juga diambil oleh jurusan teknik lain dan non-jurusan yang hanya "tur" subjek yang menarik untuk elektif. Assembly sangat bagus untuk fondasi bagi siswa CS yang memiliki komitmen inti, tetapi tidak memberikan gambaran yang sangat baik tentang pemrograman yang sering dilakukan untuk siswa yang mempertimbangkan jurusan atau yang tidak akan pernah mengambil jurusan tetapi ingin pengenalan ke lapangan ; juga tidak sangat berguna sendiri di sebagian besar bidang.
  3. Bahasa tingkat yang lebih tinggi membuat inti dari pemrograman aktual bekerja lebih transparan. Assembly menyentuh beberapa topik mendasar mendasar - konsep memori dasar, konsep kinerja dasar, dll. - tetapi tidak benar-benar masuk ke dalam menciptakan desain yang dapat dirawat dan dapat dibaca, yang lebih penting akhir-akhir ini, IMO. Siswa awal tampaknya sering memiliki gagasan "Pemrogram Nyata menulis kode kuno yang tidak dapat ditangani orang lain", dan mengajarkan bahasa tingkat yang lebih tinggi membantu mengajarkan bahwa pengkodean adalah tugas kolaboratif dan bukan hanya tentang menjadi brilian.

Karena itu, saya pikir perangkat keras perakitan / komputer harus kelas yang sangat awal - idealnya, kuartal pertama di jurusan. Mintalah siswa mendapatkan satu bahasa tingkat tinggi di bawah ikat pinggang mereka, kemudian lompat ke hal-hal perangkat keras tingkat rendah segera sebelum beralih ke struktur data - idealnya dalam bahasa yang membutuhkan pengelolaan memori.

Ethel Evans
sumber
Sangat baik dikatakan - saya setuju. Kursus pertama harus langsung ke pokok permasalahan, menunjukkan manfaat ujung ke ujung dari keterampilan yang dipelajari, dan menghidupkan imajinasi: "Astaga! Saya dapat memprogram? Sekarang apa lagi yang bisa saya lakukan dengan keterampilan baru ini ..." Setuju juga bahwa waktu terbaik untuk bahasa assembly adalah setelah satu bahasa tingkat yang lebih tinggi. Itu memotivasi mencari "di bawah tenda" pada bagaimana komputer sebenarnya memahami hal-hal tingkat yang lebih tinggi. Melihat bahasa rakitan untuk pertama kalinya setelah bahasa tingkat yang lebih tinggi meninggalkan dampak kuat lainnya: siswa bertemu elektronik, chip, sensor, dll.
Assad Ebrahim
3

Assembly adalah bahasa kedua saya, tepat setelah BASIC. Namun, ketika saya belajar itu adalah waktu yang berbeda. Commodore 64 saya memiliki bahasa lain yang tersedia, tetapi jika Anda ingin sesuatu tampak cepat, atau ingin melakukan lebih dari satu hal pada suatu waktu, Anda perlu belajar bahasa rakitan dan cara bekerja dengan interupsi. Sistem Operasi Lingkungan Grafis (GEOS) yang memberi Commodore sistem windowing juga semuanya perakitan. Itu pada umumnya API perakitan terbaik yang pernah saya lihat. Itu juga satu-satunya platform yang saya gunakan di mana Anda bisa mendesain kode Anda. Itu benar, Anda bisa menggunakan huruf miring dan ukuran font yang berbeda - sesuatu yang terbukti bermanfaat untuk membaca komentar.

Saya belajar banyak tentang bagaimana Commodore bekerja, tetapi chip Motorolla memiliki satu set opcode yang sangat sederhana. Tidak terlalu sulit untuk menyimpan kurang dari 255 opcodes yang terpisah satu sama lain. Saya tidak dapat membagi pengalaman saya pada chip Motorolla 6510 ke pemrograman untuk Intel 8086. Arsitektur chip dan sistem terlalu berbeda. Saya membayangkan saya akan mengalami kesulitan yang sama untuk naik ke chip Motorolla 68000 Amiga juga.

Singkatnya, saya harus dengan sepenuh hati tidak setuju dengan siapa pun yang mengatakan Majelis harus menjadi bahasa pertama yang baik. Inilah alasannya:

  • Anda tidak memiliki struktur bawaan, tidak ada cara umum untuk memecah fungsionalitas dalam suatu aplikasi. Ini adalah hal yang membuat bahasa tingkat tinggi sangat berguna.
  • Anda harus mengetahui hal-hal yang tidak berguna seperti cara memanggil metode di perpustakaan dengan benar. Ketika perpustakaan dibuat oleh C itu berarti memanipulasi tumpukan (lebih baik mendapatkan semuanya dalam urutan yang benar), tetapi dalam bahasa lain itu mungkin berarti mengatur register. Ini semua adalah hal yang diurus oleh kompiler atau penerjemah - dan Anda tidak dapat mengoptimalkannya.
  • Kode Anda tidak dapat digunakan pada chip lain, dan sangat mungkin akan pecah dengan platform perangkat keras yang berbeda.

Saat ini bahasa assembly digunakan untuk mempercepat tindakan terbatas tertentu di mana perakitan kerajinan tangan akan lebih cepat daripada perakitan yang dihasilkan kompiler. Struktur utama aplikasi dilakukan dalam bahasa tingkat yang lebih tinggi seperti C, C ++, dll. Tentu saja, pemrograman perakitan akan menjadi sangat penting jika Anda mulai menulis kompiler. Berapa banyak dari kita yang melakukannya?

Berin Loritsch
sumber
1

Saya mengikuti kebaktian di tahun SMA saya. Saya telah mengambil kelas di Jawa, Pascal, C dan C ++, dan tidak mahir di salah satu dari mereka dan saya benar-benar tersedot di Majelis - adalah satu-satunya orang yang mengambil kelas dalam program pembelajaran jarak jauh di community college, membawa saya satu atau dua bulan sebelum ada yang bisa membuat kompiler bekerja untuk saya.

Saya rasa tidak perlu atau bijak untuk mempelajari bahasa assembly terlebih dahulu, tetapi pintar untuk mempelajari hal-hal yang mereka ajarkan kepada Anda dalam beberapa minggu pertama perakitan, tentang cara kerja prosesor dan beberapa trik debug. Hal-hal yang saya temukan sangat menarik dan mencerahkan sebagai orang baru.

Peter Turner
sumber
0

Saya tidak mengerti mengapa itu tidak bisa dilakukan, walaupun seberapa bagus ide itu benar-benar tergantung pada kerumunan yang akan Anda ajarkan juga. Seseorang yang tujuan akhirnya adalah menjadi pengembang web mungkin akan bosan dan mungkin berhenti karena itu tidak akan memberi mereka kepuasan dengan segera menciptakan sesuatu yang Python, Ruby, dll. Jika mereka ingin akhirnya bekerja pada perangkat keras atau proyek tingkat rendah lainnya maka saya pikir itu akan menjadi awal yang baik (asalkan Anda memberikan latar belakang arsitektur komputer yang cukup untuk masuk akal). Saya pikir itu bisa membantu orang-orang menulis kode yang lebih baik di masa depan, meskipun saya pikir itu akan lebih sulit daripada belajar bahasa lain untuk memulai.

Jetti
sumber
0

Saya pikir bahasa assembly hanya akan masuk akal jika Anda fokus pada hal-hal seperti:

  • Teknik manajemen memori
  • HW IO (terutama tantangan terkait waktu dan kinerja)
  • Fitur CPU - khususnya, fitur keamanan

Tanpa fokus di bidang ini, hanya bahasa sederhana yang cenderung mengajarkan kebiasaan organisasi yang buruk. Pengodean tingkat mesin baik untuk dimiliki dalam kit alat untuk mengetahui cara kerja berbagai hal, tetapi itu bukan bahasa pertama yang baik.

Saya akan membuat seseorang tertarik pada bahasa tingkat yang lebih tinggi. Kemudian ajarkan C ++; kemudian perakitan dengan fokus pada bagaimana kompiler C ++ menghasilkan kode assembly. Memahami v-tables dan fitur bahasa tingkat tinggi lainnya akan membantu pengembang berpikir tentang bagaimana bahasa benar-benar bekerja daripada hanya memasukkan informasi di bawah 'sihir'.

Jim Rush
sumber