it-swarm-id.com

Haruskah orang menggunakan pseudocode sebelum pengkodean yang sebenarnya?

Pseudocode membantu kita memahami tugas dengan cara agnostik bahasa. Apakah ini praktik terbaik atau pendekatan yang disarankan untuk membuat kodesemu sebagai bagian dari siklus hidup pengembangan? Contohnya:

  • Identifikasi dan pisahkan tugas pengkodean
  • Tulis kodesemu
  • Dapatkan disetujui [oleh PL atau TL]
  • Mulai Coding berdasarkan Pseudocode

Apakah ini pendekatan yang disarankan? Apakah itu dipraktikkan di industri?

23
Vimal Raj

Menulis pseudocode sebelum pengkodean tentu lebih baik daripada hanya pengkodean tanpa perencanaan, tetapi jauh dari praktik terbaik. Pengembangan yang digerakkan oleh tes adalah peningkatan.

Yang lebih baik adalah menganalisis domain masalah dan merancang solusi menggunakan teknik seperti cerita pengguna, kasus penggunaan, kartu CRC, diagram, sebagaimana didukung oleh metodologi seperti Cleanroom, RUP, Lean, Kanban, Agile, dll.

Memahami hakikat masalah dan komponen yang Anda gunakan untuk mengimplementasikan solusi adalah prinsip di balik praktik terbaik.

17
Huperniketes

Saya menggunakan komentar sebagai semacam kode pseudo tingkat sangat tinggi, dalam hal itu saya menulis komentar sebelum saya menulis kode. Saya menemukan bahwa memikirkan seluruh masalah, bahkan pada tingkat tinggi, sangat meningkatkan kode saya.

19
Hal Helms

Tidak, jangan pseudo-code terlebih dahulu

Ini terlalu banyak overhead. Anda sedang melakukan pekerjaan menulis logika tanpa manfaat. Saya menyarankan salah satu dari yang berikut sebagai gantinya:

  1. Prototipe dalam bahasa yang akan Anda kirim (AKA Tulis satu untuk dibuang )
  2. Diagram arsitektur dengan potongan kode untuk menguji asumsi/desain utama
  3. Pengembangan Didorong Tes di mana Anda menulis antarmuka/struktur kode Anda terlebih dahulu, diikuti oleh tes, diikuti dengan menerapkan kode.

Ketiga hal ini menggerakkan Anda langsung ke solusi Anda, tidak seperti pseudo-code. Secara pribadi saya cenderung menggunakan teknik 1 atau 2 tergantung pada ukuran tim. Untuk tim yang lebih kecil (mis. 5 orang atau kurang), pembuatan prototipe berjalan sangat baik. Untuk tim yang lebih besar yang memiliki beberapa kelompok pengembang yang bekerja secara paralel, saya telah menemukan bahwa dokumentasi yang dihasilkan sejak awal dengan teknik 2 berfungsi dengan baik karena memberi Anda sesuatu untuk didiskusikan lebih awal dan membantu Anda menentukan batas-batas komponen yang lebih baik. Saya yakin TDD akan bekerja dengan sangat baik juga, tetapi saya belum bekerja pada tim yang telah berkomitmen untuk proses ini.

8
Jay Beavers

Menurut pendapat saya, pseudo-code hanya memiliki dua tujuan yang valid:

(1) Untuk siswa pemrograman yang perlu mempelajari konsep modularitas dan algoritma, tetapi belum lancar dalam bahasa pemrograman.

(2) Untuk mengkomunikasikan bagaimana sesuatu akan bekerja pada orang non-teknis, atau hanya demi kepentingan dalam pertemuan jenis papan tulis.

7
JohnFx

Apakah pseudo-code pendekatan yang disarankan? Untuk programmer pemula, saya katakan ya. Ini membantu programmer baru belajar bagaimana menerjemahkan masalah ke dalam kode tanpa khawatir tentang sintaks yang tepat dari bahasa tersebut. Ini membentuk proses pemikiran dan dapat membantu menanamkan kebiasaan yang berguna (dan saya kira kebiasaan buruk juga). Inilah sebabnya mengapa digunakan di sekolah begitu banyak.

Apakah itu dipraktikkan dalam industri? Dalam pengalaman saya, tidak. Tidak ada yang punya waktu untuk kasar proyek antara dokumentasi (persyaratan, spesifikasi, papan cerita, kasus penggunaan atau apa pun yang mereka gunakan) dan kode aktual. Secara umum diasumsikan bahwa pemikiran yang cukup telah dimasukkan ke dalam masalah sebelum lampu hijau untuk kode. Pada titik itu, pengkodean proyek lebih penting daripada menambahkan satu lapisan lagi persiapan desain.

5
Corin

Pseudocode dapat berguna jika Anda tidak terbiasa dengan bahasa tersebut, atau jika Anda perlu mengubah konteks mental. Pada kesempatan langka yang saya tulis kodesemu, itu di atas kertas. Kadang-kadang melepaskan tangan Anda dari keyboard dan menulis di atas kertas dapat membantu mengatasi gangguan mental.

Tetapi sebagai bagian formal dari proses pembangunan? Tidak mungkin. Ini adalah alat yang secara sporadis bermanfaat bagi individu. Ada cara yang lebih baik untuk "tahu apa yang Anda tulis sebelum Anda menulisnya", seperti:

  1. mendefinisikan kontrak (kondisi sebelum/sesudah/invarian) dari metode ini sebelum Anda mulai
  2. TDD
  3. 1 dan 2 gabungan (tes tertulis untuk menjalankan kontrak)

Saya juga menyarankan agar mendapatkan segala jenis persetujuan sebelum Anda mulai menulis kode cenderung menyebabkan lebih banyak kerumitan daripada nilainya. Ulasan desain (pra-implementasi) dapat berguna, tetapi harus pada tingkat yang lebih tinggi daripada algoritma individu.

3
Ben Hughes

Saya pasti akan merekomendasikan pseudocode. Ini membantu Anda mengklarifikasi apa yang akan Anda lakukan dan mengidentifikasi item yang mungkin Anda lupakan atau potensi masalah. Jauh lebih mudah/lebih cepat untuk memperbaiki kode Anda ketika masih dalam tahap perencanaan daripada menunggu sampai Anda sudah mengkodekannya.

3
Rachel

Satu-satunya waktu saya menggunakan kodesemu dalam 10 tahun terakhir adalah wawancara ketika kami mengerjakan papan tulis dan bahasa tertentu tidak masalah.

Ini tentu membantu untuk berbicara melalui proses/algoritma dalam istilah yang longgar tanpa macet dengan sintaks. Misalnya. menulis kelas C++ yang memiliki properti C #, hanya untuk menggambarkan intinya.

Ini memiliki tempat, tetapi hanya boleh digunakan di mana diperlukan (itu adalah pekerjaan yang akan Anda buang) dan tentu saja bukan bagian dari proses formal, kecuali jika Anda memiliki standar tipe ISO yang bersikeras untuk itu.

2
JBRWilkinson

Bagi saya dan orang-orang yang telah bekerja dengan saya selama beberapa tahun terakhir, kodesemu telah berubah menjadi kode nyata yang tidak sepenuhnya sempurna. kecuali jika Anda bekerja dengan banyak bahasa pada saat yang sama, kebanyakan orang tampaknya mulai berpikir dalam pola umum bahasa utama mereka. Saya telah bekerja di .net toko untuk sementara waktu sehingga coretan papan tulis kebanyakan orang di sekitar kantor cenderung terlihat seperti vb atau c # dengan beberapa tanda baca hilang.

Latihan ini masih berharga ketika memperdebatkan pilihan dan semacamnya, tetapi bahasa agnostiknya cenderung melayang ketika Anda menghabiskan lebih banyak waktu dengan beberapa bahasa.

2
Bill

Semakin banyak, pseudocode ditulis secara grafis dengan alat-alat seperti UML. Misalnya, cobalah yUML .

alat online untuk membuat dan menerbitkan diagram UML sederhana. Ini membuatnya sangat mudah bagi Anda untuk:

  • Cantumkan diagram UML di blog, email, dan wiki.
  • Posting diagram UML di forum dan komentar blog.
  • Gunakan langsung dalam alat pelacakan bug berbasis web Anda.
  • Salin dan tempel diagram UML ke dalam dokumen MS Word dan presentasi PowerPoint ...

... YUML menghemat waktu Anda. Ini dirancang untuk mereka yang suka membuat diagram dan sketsa UML kecil.

Tanpa yUML, membuat diagram UML mungkin melibatkan memuat alat UML, membuat diagram, memberinya nama, mengutak-atik tata letak, mengekspornya ke bitmap, dan kemudian mengunggahnya secara online di suatu tempat. kamu tidak membuat kamu melakukan semua itu ...

2
mouviciel

Saya akan tidak setuju dengan jawaban sebelumnya dan mengatakan tidak, tetapi dengan peringatan: Anda dapat menyingkirkan kode psued hanya jika Anda tergesa-gesa didedikasikan untuk refactoring kode Anda untuk menangani masalah yang muncul. Psuedocode, pada intinya, adalah cara mendefinisikan kode Anda sebelum Anda mendefinisikan kode Anda; ini adalah abstraksi yang tidak perlu dalam banyak keadaan, dan karena kode Anda tidak akan pernah sempurna pertama kali (dan kemungkinan, tidak mengikuti desain psuedocode sampai selesai), sepertinya tidak cocok bagi saya.

2
EricBoersma

Jika Anda menulis COBOL atau C, pseudocode mungkin membantu karena menulis kode sebenarnya akan lebih lama, dan jika Anda dapat memverifikasi algoritma/persyaratan Anda dari pseudocode, Anda dapat menghemat waktu.

Dalam bahasa yang lebih modern, pseudocode tidak masuk akal. Apa yang akan bekerja lebih baik adalah menulis metode bertopik, dan mengisi logika tingkat atas, dan sedetail yang diperlukan untuk memverifikasi algoritma dan persyaratan, semua ini dalam kode aktual. Anda kemudian dapat menunjukkan kode itu kepada Ketua Tim untuk disetujui, dan kode asli Anda sudah dimulai.

2
Larry Coleman

Kerja bagus. Anda memulai diskusi yang bagus. Pada saya, saya biasa menulis kode pseudo ketika saya sedang belajar pemrograman untuk memahami berbagai loop dan algoritma. Ini lebih dari satu setengah dekade yang lalu. Hari-hari itu, bahkan bahasa pemrograman pun tidak begitu kuat ... dan pemrograman berbasis acara adalah masa depan. Sekarang dengan 4GL dan 5GL, kami berpikir dalam bahasa itu sendiri daripada bahasa Inggris biasa. Ketika kita memikirkan masalah, kita berpikir dalam hal objek dan operasi. Dan sampai itu adalah algo yang kompleks, menulis kode pseudo (atau P-S-E-U-DO-Codes, hanya bercanda) tidak masuk akal. Lebih baik, mewakili solusi secara grafis.

1
devcoder

Ada beberapa keadaan di mana pseudocode cenderung pecah dalam pekerjaan saya, yaitu di dunia akademis di mana pemrograman cenderung digunakan sebagai alat atau "dan sekarang kami menyelesaikannya" mengisi di tengah-tengah proyek:

  1. Ketika kode akan lebih kontraproduktif dengan pemahaman aktual tentang apa yang akan terjadi daripada pseudo-code. SAS misalnya, akan mengambil setengah papan tulis melakukan beberapa tugas pemrograman yang cukup mendasar. Lihat juga C, yang telah dibahas beberapa poster lainnya.
  2. Dengan banyak analisis data dan pengkodean statistik, ada kecenderungan untuk mengutak-atik kode ketika hasilnya dihasilkan. Pseudocode agak lebih mudah digunakan untuk "di sini terletak proses bolak-balik, jika plot diagnostik tidak terlihat benar, coba X".
  3. Siswa belajar banyak bahasa pemrograman yang berbeda. Misalnya, di antara orang yang saya kenal, masalah statistik mungkin dianalisis dalam SAS, R atau Stata. Sesuatu yang memerlukan sesuatu yang lebih dekat dengan pemrograman tradisional mungkin dilakukan dalam R, Matlab, C, C++, Java, Python ... itu benar-benar tergantung pada apa yang siswa tertentu sedang mengimplementasikan program, dan untuk tujuan apa. Tapi itu masih berguna untuk Java dan Python orang-orang dan orang-orang Matlab untuk memiliki ide bersama tentang apa yang dilakukan orang lain, dan bagaimana - pendekatan, daripada kode itu sendiri, berfungsi.
0
Fomite

Ini bukan pertanyaan ya/tidak. Sebaliknya, kita harus bertanya-tanya kapan untuk menggunakan pseudo-code. Penting untuk memahami masalah sebelum merancang solusi, dan penting untuk memiliki pandangan yang jelas tentang solusi sebelum Anda mengimplementasikannya. Pseudo-code dapat digunakan dalam langkah-langkah berikut:

  1. Saat mendefinisikan masalah, itu umum untuk menuliskan kasus penggunaan, kadang-kadang menggunakan urutan tindakan.
  2. Saat merancang solusi. Diagram kelas bagus, tetapi mereka hanya menggambarkan bagian "statis", yaitu data. Untuk bagian dinamis, segera setelah Anda perlu berurusan dengan loop dan data non-sepele, saya menemukan kode semu untuk menjadi metode terbaik yang tersedia. Alternatif grafis termasuk mesin negara (baik untuk aliran kontrol kompleks dengan sedikit data) dan diagram aliran data (baik untuk aliran sederhana dengan data kompleks).
  3. Saat menerapkan solusi (atau sebelum). Beberapa bahasa pemrograman sulit dibaca (pikirkan, Assembly). Representasi alternatif dapat bermanfaat dalam kasus ini. Jika Anda tidak terbiasa dengan bahasa, itu juga layak dilakukan.

Pseudo-code yang sebenarnya adalah kode yang tepat dalam bahasa tingkat tinggi juga digunakan, biasanya disebut prototyping.

Selain mencapai pemahaman, pseudo-code juga baik untuk komunikasi.

Jika Anda bertanya-tanya apakah Anda harus menggunakan pseudo-code secara teratur, saya pribadi menentang semua jenis aturan kaku. Ini bisa dengan mudah berubah menjadi pemborosan waktu yang membosankan jika digunakan untuk masalah sepele yang dipahami semua orang dalam tim. Menggunakan pseudo-code untuk spesifikasi yang Anda pertahankan sepanjang umur proyek juga bisa mahal dan menawarkan sedikit nilai.

0
Joh

Tergantung pada bahasa yang digunakan, dan keakraban Anda dengannya.

Banyak bahasa modern seperti Python atau Java sudah sangat dekat dengan pseudocode sehingga menulis beberapa pseudocode ad hoc terlebih dahulu adalah pemborosan, IMHO. Lebih baik lakukan saja segera) menggunakan pendekatan tracer bullet .

Ini adalah kesepakatan yang berbeda jika Anda membuat beberapa tingkat rendah, dekat dengan hal-hal logam, atau belum nyaman dengan bahasa yang Anda gunakan. Maka pseudocode pasti bisa bermanfaat.

0
Joonas Pulakka