- Pada awal 1990-an, IDE berbasis teks menawarkan fitur luar biasa bahkan di perangkat keras yang terbatas
- Seri Borland Turbo, yang saat itu merupakan IDE representatif, menghadirkan lingkungan yang sebanding dengan IDE modern, lengkap dengan penyorotan sintaks, integrasi compiler, debugging, bantuan, dan lainnya
- Vim dan Emacs di Linux bisa dikustomisasi, tetapi memiliki keterbatasan karena sulit dipelajari dan tidak intuitif bagi pemula
- Belakangan ini TUI (text UI) dan fitur IDE perlahan bangkit kembali berkat teknologi baru seperti LSP, tetapi masih belum memiliki rasa keterpaduan seperti pada era 1990-an
- Kelebihan IDE TUI adalah akses jarak jauh, konsumsi sumber daya yang ringan, dan kebebasan open source, sedangkan IDE modern justru makin menonjol dengan gejala membengkak karena penambahan fitur
Pendahuluan: Kenangan tentang IDE berbasis teks pada awal 1990-an
- Pada akhir 1980-an hingga awal 1990-an, penulis menikmati membandingkan lingkungan pengembangan lama dengan masa kini dengan mengalaminya kembali lewat DOSBox
- IDE berbasis teks saat itu memiliki banyak fitur meskipun dibatasi oleh perangkat keras
- Setelah itu, sebagian besar fitur tersebut menghilang untuk waktu yang lama seiring bangkitnya sistem operasi berbasis jendela, dan baru belakangan ini sebagian mulai muncul kembali
Editor awal dan lingkungan TUI
- Pada 1990-an, sebagian besar program DOS menggunakan Text User Interface (TUI) layar penuh yang mendukung jendela berbasis teks, warna, bayangan, bahkan mouse
- Setiap program memiliki desain yang berbeda, tetapi cepat dipelajari berkat cara kerja yang mirip
- Mulai versi 5 (1991), MS-DOS menyediakan editor TUI bawaan, tetapi pengguna harus menutup editor untuk melakukan kompilasi/menjalankan program, lalu saat membukanya lagi harus mencari posisi kerja sebelumnya, yang cukup merepotkan
- Ada juga alat berbasis TSR (program yang tetap tinggal di memori) seperti SideKick Plus (1984), yang memungkinkan penyuntingan kode dan build secara efisien pada OS yang belum mendukung multitasking
- Bahkan sejak pertengahan hingga akhir 1980-an, IDE awal seperti Turbo Pascal, QuickBASIC sudah muncul dan menawarkan pengalaman pengembangan yang terintegrasi
Seri Borland Turbo: puncak IDE terintegrasi
- Borland Turbo C++, Turbo Assembler, Turbo Pascal, dan lainnya memang dikhususkan untuk bahasa tertentu, tetapi menawarkan TUI layar penuh dan fitur yang kuat
- Fitur utama:
- Penyorotan sintaks untuk meningkatkan keterbacaan kode
- Integrasi compiler serta peringatan/diagnostik
- Sistem proyek/build dan multi-jendela
- Debugger (breakpoint, call stack, dan sebagainya)
- Bantuan/manual referensi bawaan
- Semua fitur ini menghadirkan lingkungan yang mandiri dan intuitif bahkan tanpa internet pada awal 1990-an
Perbandingan dengan lingkungan Linux saat itu
- Linux juga didominasi alat berbasis teks, tetapi TUI layar penuh tidak umum
- Vim dan Emacs yang direkomendasikan di buku dan komunitas memang dapat diperluas fiturnya, tetapi dari sudut pandang pemula terasa kurang ramah dan kurang intuitif
- Misalnya, Emacs memiliki jendela yang polos, warna terbatas, dukungan mouse yang tidak stabil, serta antarmuka menu yang sulit dan asing
- IDE seperti Borland Turbo C++ memungkinkan orang membuat program “Hello World” dan menjelajahi lingkungannya hanya dalam beberapa menit, bahkan tanpa pengetahuan awal apa pun
IDE berbasis teks masa kini
- Saat ini, lingkungan yang paling mirip dengan IDE TUI lama adalah RHIDE, Free Pascal, QB64
- RHIDE hampir sama dengan Turbo C++, tetapi khusus DOS dan pengembangannya telah dihentikan
- Free Pascal mendukung lingkungan Unix dan menawarkan lingkungan terintegrasi yang kuat, termasuk kalkulator bawaan, tabel ASCII, dan lain-lain
- QB64 terlihat seperti TUI, tetapi sebenarnya simulasi GUI dan tidak dapat dijalankan di terminal
- Free Pascal dan QB64 masih terus dikembangkan hingga belakangan ini, tetapi popularitasnya di kalangan umum terbatas karena menonjolkan bahasa yang sudah tua
IDE konsol modern yang sesungguhnya
- Sebagai lingkungan pengembangan terintegrasi berbasis teks modern, Neovim, Doom Emacs, Helix cukup terkenal
- Berkat beragam plugin, mereka dapat menghadirkan pengalaman setingkat IDE, tetapi masih kurang dalam keterpaduan dan intuisi per bahasa seperti keluarga produk Borland
- Belakangan GNU Nano dan sejenisnya juga mendapat perhatian sebagai editor TUI sederhana, tetapi karena tidak memiliki fitur IDE, rasanya mirip WordStar
- Pada akhirnya, editor konsol masa kini masih belum menyamai tingkat pengalaman era 1990-an, atau baru sekadar memulihkan fitur yang sudah ada 30 tahun lalu
Kebutuhan akan IDE TUI
- Walaupun fitur remote milik VSCode sangat baik, IDE TUI tetap unggul karena dapat langsung digunakan setelah masuk ke mesin jarak jauh via SSH
- Selain itu, ekstensi remote VSCode bukan open source, dan pada sebagian OS (seperti FreeBSD) juga tidak berfungsi, sehingga ada keterbatasan
- IDE TUI menggunakan sumber daya lebih sedikit dan karena itu lebih berguna di lingkungan jarak jauh
Gejala pembengkakan dan "Bloat"
- Borland Turbo C++ mencakup semua fitur, tetapi saat dipasang ukurannya di bawah 9MB dan dapat berjalan dalam RAM 640KB
- Doom Emacs saat ini membutuhkan lebih dari 500MB, dan IDE modern bisa mencapai beberapa GB sehingga masalah pembengkakan menjadi serius
- VSCode cukup ringan di angka 350MB, tetapi karena berbasis Electron, konsumsi sumber daya sistem nyatanya tetap besar
- Memang ada beberapa kemajuan seperti fitur dan refactoring, tetapi tingkat inovasinya terbatas jika dibandingkan dengan 30 tahun lalu
- Bantuan kode AI memang perubahan terbaru, tetapi pada praktiknya tetap didominasi oleh layanan jarak jauh
Kesimpulan
- Penulis saat ini memanfaatkan beragam lingkungan pengembangan seperti Doom Emacs, Vim, VSCode, IntelliJ, dan lainnya tergantung situasi
- Pengalaman pengembangan yang menyatu serta efisiensi yang ditawarkan IDE TUI 30 tahun lalu sangat kontras dengan pembengkakan dan fragmentasi IDE modern
- Nilai dan potensi IDE berbasis teks tetap relevan, dan evolusi maupun kebangkitannya masih layak untuk terus diperhatikan
1 komentar
Komentar Hacker News
Saya cukup terkejut menyadari bahwa Visual Basic dulu adalah yang terbaik di ranah pemrograman grafis. Dulu, dalam sehari kita bisa mengembangkan aplikasi GUI tingkat menengah dengan sangat cepat. Yang paling mendekati itu mungkin C# WinForms, tetapi setelahnya semua alat terasa tidak mempertimbangkan sudut pandang pengembang individu, yang cukup disayangkan. Saya mengusulkan paradigma pengembangan baru yang kuat berupa pengembangan berbasis voice/speech (SDD/VDD). Harapannya, kita terbebas dari penderitaan mengetik terlalu banyak, dan interaksi dengan AI menjadi senatural percakapan dengan rekan kerja. Namun, agar ini benar-benar terwujud, model AI harus menjadi jauh lebih cepat
Delphi saat itu pun lebih unggul daripada Visual Basic, dan sampai sekarang masih bisa digunakan. Lazarus juga masih bertahan. Memang, C# WinForms adalah pengalaman yang paling dekat dengan Delphi
Saya merasa Qt Creator memberikan pengalaman yang mirip dengan VB6. Penasaran apakah Anda pernah mencobanya
Menurut saya Emacs masih menyediakan semua ciri ini. Hanya saja, hal yang penulis sebut “nontradisional” sebenarnya lebih karena ia tidak terbiasa dengan konvensinya. Emacs sepenuhnya terdokumentasi sendiri dan interaktif. Antarmuka berbasis teks terbaik yang pernah saya gunakan adalah Magit di dalam Emacs (https://magit.vc/). Saya berharap lebih banyak bagian Emacs menjadi seperti Magit. Walaupun IDE-nya berbeda, untuk klien git saya memakai Emacs
Emacs adalah alat bersejarah yang sudah ada bahkan sebelum Apple mengembangkan shortcut cmd-z/x/c/v. Pada masa itu, shortcut editor programmer yang dominan adalah keluarga Wordstar (misalnya pada sebagian besar produk Borland). Ada IDE luar biasa dari 30~40 tahun lalu yang sekarang kurang dikenal. Contohnya, Apple MPW (1986) adalah editor GUI di mana setiap jendelanya menjadi shell Unix, dan jendela maupun pekerjaan pengeditan bisa dikendalikan dengan shell script, plus sudah ada sistem manajemen source code bawaan. Jika mengetik perintah lalu menekan option-Return, akan muncul jendela GUI berbasis 'Commando' yang memungkinkan semua opsi dipilih. Apple Dylan (1992-1995) adalah IDE kuat bergaya Lisp/Smalltalk, dan THINK Pascal serta C (1986), Metrowerks Codewarrior (1993), juga Macintosh Allegro Common Lisp, semuanya inovatif. Sungguh menakjubkan bahwa IDE secanggih itu bisa diwujudkan di lingkungan 8~40MHz M68000 dengan RAM 2~32MB pada era 80-an hingga awal 90-an
Soal pendapat bahwa Emacs terdokumentasi sendiri dan interaktif, kenyataannya saat pertama kali mencobanya saya bahkan tidak bisa dengan mudah mengetahui cara menyimpan dokumen. Mungkin lebih baik daripada vi, tetapi masih kurang ramah untuk pemula yang langsung memakainya tanpa penjelasan
Magit benar-benar luar biasa. Saya penasaran bagaimana mereka bisa memikirkan model data seperti itu. Rasanya seperti mengimplementasikan sesuatu yang melampaui model data git itu sendiri. Dibandingkan git porcelain yang terkesan berantakan, Magit punya struktur yang sistematis
IDE bergaya Turbo-Vision memungkinkan kita memahami sebagian besar fungsi hanya dengan mengetahui beberapa tombol seperti Alt, Tab, Return, Esc, dan tombol arah, sedangkan Emacs tidak punya konsistensi pengoperasian seperti ini
Saya sudah memakai Emacs lebih dari 25 tahun, jadi sekarang sudah sepenuhnya terbiasa
Turbo Pascal benar-benar luar biasa. Awalnya saya ragu memakainya karena itu implementasi Pascal yang nonstandar, tetapi alat pesaing jauh lebih mahal dan kurang kuat. Setelah mencobanya sendiri, saya langsung terpikat. Saya merasakan IDE yang cepat dan intuitif di IBM PC. Di antara IDE modern, Intellij sudah lebih dari 25 tahun jauh mengungguli para pesaingnya. Saya sudah lama tidak memakai produk Microsoft, jadi tidak punya pengalaman dengan VSCode. Eclipse juga lambat, kurang intuitif, dan banyak bug. JetBrains adalah perusahaan langka yang tetap memegang misinya dan mempertahankan keunggulan. Sangat mengesankan bagaimana mereka terus mendukung berbagai bahasa, standar, dan alat sambil tetap menjaga kualitas yang luar biasa
Visual Studio masih mendukung WinForms dan desainer form grafis, sehingga sangat mirip dengan pengalaman Delphi di akhir 90-an. Itu karena WinForms memang secara terang-terangan meniru VCL
Tapi masalah penggunaan resource cukup besar. Karena saya tidak bisa memakai neovim di cloud desktop, saya akhirnya memakai ideavim, tetapi meskipun sudah 4 core dan RAM 16GB, begitu beberapa proyek dibuka semuanya mulai tersendat. Mungkin ada pengaruh software keamanan perusahaan, tetapi VSCode tidak terasa seberat itu
IDE Turbo Pascal benar-benar melampaui zamannya dan bahkan di CP/M (terutama Z-80) terasa sehebat sihir. Jauh lebih baik daripada apa pun yang ada pada masanya
Tulisan ini dari tahun 2023, jadi judulnya sepertinya harus diperbarui menjadi 32 tahun yang lalu. Hal yang paling saya sayangkan dari TUI saat ini adalah framework asynchronous yang sering mengabaikan input tombol. TUI sebelum tahun 2000 akan menahan input tombol meskipun sistem belum siap. Sebaliknya, framework TUI modern yang “berbasis web” akan begitu saja mengabaikan tombol yang ditekan sebelum event listener terdaftar. Selain masalah ini, TUI masih berjalan dengan baik. Neovim, berkat LSP dan plugin, punya fitur terbaik sepanjang masa. Memang bukan TUI berbasis mouse, tetapi dari sisi produktivitas sangat unggul
Pada era DOS, terminal sungguhan memang punya buffer input tombol, dan orang yang sudah akrab dengan antarmukanya bisa mengetik beberapa tombol lebih dulu hingga melampaui UI. Input menumpuk di buffer lalu seolah muncul dan hilang seketika di layar. Struktur seperti ini tetap bisa diimplementasikan dengan framework modern, tetapi harus ditangani dengan hati-hati
Saya juga mengalami hal seperti ini pada 1984, jadi sebenarnya cakupannya sampai 41 tahun yang lalu. Proyek-proyek awal seperti itulah yang dominan sampai produk GUI seperti Visual Studio 1.0 atau NetBeans muncul. Ini sebelum vim (1991), tetapi rasanya seperti menginginkan floating window alih-alih ncurses
Fenomena input tombol yang diabaikan ini terasa sangat menyebalkan. Dulu kita bisa memakai komputer dengan kecepatan luar biasa lewat kombinasi shortcut yang cepat, tetapi sekarang rasanya seperti berjalan di dalam molase lengket
Saya sempat bingung kapan tepatnya yang dimaksud 30 tahun lalu, berharap akan muncul browser sistem GUI Smalltalk, tetapi yang datang justru DOS TUI sehingga agak mengecewakan. Namun saya jadi senang bernostalgia tentang Turbo C/Pascal, MS C 4.0, dan CodeView. Alat-alat ini juga bisa dipakai pada mode 43 baris dan 50 baris
Saya pikir terlalu bergantung pada IDE tertentu bisa merugikan daya saing kita maupun kualitas kode kita. Kalau bicara terminal IDE, terminal GNU/Linux justru adalah aplikasi terbaik. Dengan beberapa terminal di tiling window manager, produktivitas bisa dimaksimalkan. Scaling modern pada layar besar juga sangat baik dari sisi ergonomi pengembang
Sampai sekarang saya masih mengembangkan dan memakai editor/IDE berbasis teks buatan sendiri (https://github.com/alefore/edge). Saya juga baru-baru ini menuliskan kesimpulan dari 10 tahun pengembangannya (https://github.com/alefore/weblog/blob/master/edge/README.md)
Pada masa kejayaan DOS, karakter dikelola sebagai array byte, dan atribut seperti warna latar serta warna depan dikelola dalam array terpisah. Jika ingin menulis 'A' pada posisi tertentu, kita cukup menulis 0x41 ke alamat memori. Memang ada sedikit wait state, tetapi tetap jauh lebih cepat daripada menampilkan lewat perintah ANSI pada terminal 9600 baud. Emacs bisa dipakai di terminal serial lambat atau emulator terminal pada workstation Sun, dan itulah latar belakang mengapa TUI berbasis shell kemudian menghilang
Meski tulisan ini berfokus pada IDE berbasis teks, menurut saya ini juga berlaku untuk IDE tradisional seperti Visual Basic atau Delphi. Untuk pemula, saya rasa IDE Python benar-benar dibutuhkan. Bukan berbasis teks, melainkan gaya Visual Basic, dengan semuanya terintegrasi dan mudah ditemukan strukturnya (ini penting!). Akan lebih baik jika GUI builder dan debugger juga disertakan. Editor kodenya cukup punya syntax highlighting, auto-complete, dan navigasi kode yang mudah. Misalnya, meletakkan tombol di jendela lalu double-click di editor GUI untuk langsung berpindah ke kode handler tombol tersebut. Dulu pernah ada orang-orang yang berkumpul dan membahas ide serupa, tetapi perbedaan pendapat soal framework GUI yang akan dipakai (Pyside, Dear PyGui, berbasis web, dll.) terlalu besar sehingga diskusinya mereda begitu saja. Karena Free Pascal sudah disebut, Lazarus (https://www.lazarus-ide.org/) yang merupakan tiruan Delphi juga layak disebut. Sangat bagus dan masih aktif dikembangkan. Hanya saja, Object Pascal kini tidak banyak dipakai sehingga terasa agak kuno
Saya sepenuhnya setuju bahwa dibutuhkan IDE Python terintegrasi untuk pemula, bergaya Visual Basic, dengan GUI builder dan debugger bawaan. Dulu ada IDE Python bernama Boa Constructor (https://boa-constructor.sourceforge.net/) pada tahun 2000, tetapi tidak pernah populer luas
Saya juga baru-baru ini merekam video proses membuat toy app dengan VB3 di Windows 3.11, dan tweet itu sempat “viral”. Pada akhirnya yang penting bukan TUI, melainkan pengalaman penggunaan yang terintegrasi
Bagi saya, Lazarus adalah standar IDE yang sesungguhnya. Lazarus dibuat dengan Lazarus, dan penulisnya benar-benar memakai produknya sendiri dengan serius sambil menyediakan contoh dan tutorial. Ini juga sangat baik untuk mengajarkan pemrograman kepada anak-anak. Seperti Microsoft Visual Studio, ia mengintegrasikan tagging, pencarian, bantuan, dokumentasi API, contoh widget, dan library. IDE lain tidak punya tingkat integrasi seperti ini, dan Xcode pun meski disebut IDE tetap terasa kurang dibanding Lazarus. Saya terlalu keras kepala sampai-sampai sudah 6 bulan membuat sendiri framework frontend UI dengan Go alih-alih JS, dan berharap suatu hari nanti juga bisa membuat IDE
IDE Borland adalah kebahagiaan yang sesungguhnya. Sampai sekarang saya belum menemukan alat modern yang memberi pengalaman setingkat itu. Tentu ada sedikit nostalgia, tetapi bahkan hanya mencari-cari alasan untuk memakai Free Pascal demi memunculkan antarmuka itu saja sudah menyenangkan. Saya juga suka Pascal. Saya juga memakai Sam dan Acme dari Plan 9, tetapi itu editor, bukan IDE. Saya lebih suka alat yang tidak mengganggu dan memberi ruang untuk berpikir. Ada banyak hal yang bisa dipelajari dari TUI lama. Misalnya, membuka shell dari menu File untuk menjalankan sesuatu lalu kembali lagi itu sepenuhnya dapat diterima, bahkan terasa heroik. Dan keybinding! TUI lama banyak mengadopsi pola shortcut WordStar, dan itu begitu membekas di tubuh sehingga Emacs terasa seperti mengetik sambil memakai sarung tangan oven. Saya lama menjadi pengguna setia joe (alias jstar). Sekarang saatnya menyalakan VM Dr. DOS, mencoba tantangan Advent of Code, dan sengaja berpesta nostalgia dengan cara yang tidak efisien
Software “profesional” pada era DOS (seperti Emacs) dirancang agar pengguna benar-benar hidup sepenuhnya di dalam software tersebut. Kita menyatu dengan mesin dan bisa memainkan shortcut dengan bebas seperti organis. Saya ingat melihat pegawai Fry’s Electronics mengoperasikan TUI begitu cepat sampai pekerjaan selesai dan hasil cetaknya keluar bahkan sebelum layarnya sempat tampil
Saya penasaran apa itu binding WordStar dan apa kelebihannya. Saya tertarik meneliti sejarah pola semacam ini dan keunggulan masing-masing pendekatan
Saya sangat setuju dengan tulisan yang bagus ini. Saya sendiri juga sedang mengembangkan editor kode tui bergaya Turbo Pascal pada waktu pribadi. Ke depannya saya berencana membenamkan make dan lldb juga
Saya menyukai banyak hal dari Plan 9, tetapi saya sama sekali tidak bisa beradaptasi dengan UI Acme yang sangat bergantung pada mouse. UI yang menuntut bidikan mouse presisi seperti itu pasti sangat tidak nyaman untuk dipakai lama-lama atau oleh orang dengan disabilitas
Kombinasi djgpp dan vi for dos 1991 adalah yang terbaik
Saya pernah memakai Java IDE bernama Visix Vibe dan juga Delphi, dan keduanya sangat meningkatkan produktivitas. Saya bisa memprediksi jadwal dengan mudah untuk pengembangan UI, penghubungan logika, hingga persiapan deployment ke pelanggan. Hal yang paling saya rindukan dari kedua IDE itu khususnya adalah tingkat integrasinya. Dengan menghubungkan database dan menghasilkan form, input serta validasi bisa langsung dilakukan, dan hanya dalam beberapa hari UI dapat dikembangkan sesuai kebutuhan proyek. Sekarang kita perlu lebih banyak desain dan pertimbangan agar UI, API, dan backend benar-benar terhubung dengan baik. Rasanya kita masih membutuhkan alat yang bukan sekadar AI pembuat kode UI, melainkan alat untuk benar-benar menggambar kode secara visual dan membangun program lewat UI. Jika seseorang merilis alat WYSIWYG yang benar-benar bagus untuk JUCE, saya rasa masa keemasan itu bisa datang lagi
Pada era DOS, ada array byte untuk mewakili karakter dan array atribut warna, lalu perangkat keras langsung menggambarnya. Menulis nilai ke alamat memori berarti langsung menampilkannya ke layar, jadi jauh lebih cepat daripada terminal serial lambat atau pendekatan berbasis perintah ANSI. Saat memakai Emacs di terminal workstation Sun, memang wajar kalau semuanya terasa lambat, dan itulah alasan TUI akhirnya menghilang