Jumat, 21 Januari 2022

dotnet dari MS yg sudah cross platform

.


.

belakangan ini sya tertarik dengan salah satu project opensource dari luar untuk aplikasi Computer Aided Engineering (CAE) ada diskusi langsung dengan pembuatnya melalui forum dan email. sya mempelajari sekilas bahasa pemrograman yg digunakannya, ternyata sesuatu yg baru bagi saya yaitu C# .Net dari Microsoft. walau sudah lama mendengar dan mengetahui, hal tersebut membuat sya kurang tertarik. namun karena project yg sya minati menggunakan bahasa tersebut, menjadikan sya ingin lebih mengenal dan (mungkin) mengaplikasikan atau mengkonversi source dari program jadi yg sudah sya buat dengan bahasa C (sebagian) dan Python (kebanyakan). awalnya berpikir menggunakan Visual Studio Community untuk IDE dan compiler, namun karena besarnya file installer (2.29Gb Net only)  untuk di download serta tidak tersedianya untuk OS Linux maka sya mencari info alternative.  menemukan cara lain yg lebih sederhana yaitu menggunakan distribusi installer .Net SDK (186Mb) yg memang sudah cross platform (Windows, Linux, Mac).  tambahan untuk IDE adalah Visual Studio Code (76.2Mb), namun kali ini sya hanya menggunakan text editor SciTe.

.


(source: Microsoft, 2021)

.

mempelajari lebih lanjut, dukungannya kepada Linux cukup baik terlihat dengan adanya support terhadap salah satu distro terkenal yaitu Ubuntu bahkan untuk versi 16.04(LTS) yg sudah di release sejak sekitar 6 tahun yg lalu. saat ini sya menggunakan OS Windows 10 64bit, setelah instalasi dapat dilakukan check pada command prompt sebagai berikut,

.


.

memulai project aplikasi console dengan perintah berikut, maka akan membuat file template dasar beserta folder dan setting

.


.


.

migrasi awal dari sya sebagai pengguna bahasa pemrograman C dan Python cukup membantu memahami dan menerapkannya pada pemrograman C#. disini sya lakukan modifikasi sesuai keinginan dan tujuan pembuatan program. contoh sederhana menghitung luas, keliling dan berat dari besi tulangan dengan jumlah dan panjang tertentu. hasil program yg ditampilkan dibuat sejelas mungkin agar menghindari user membaca berulang program manual references, untuk itu tentunya diperlukan baris kode yg lebih banyak dari biasanya.

.


.


.

untuk pembacaan dan penyimpanan data, sya lebih suka menggunakan format XML ketimbang plain text biasa. pertimbangan lebih terorganisir dan mudah dijangkau/diakses karena definisi tiap elemen sudah ditentukan. juga data masukan dan hasil keluaran dapat disimpan dalam satu file yg sama. cukup berguna untuk pengolahan jumlah data yg besar, banyak program opensource atau commercial saat ini mendukung format file tersebut.

.


.

.
.
sekilas terlihat sudah benar dan sesuai pembacaan tiap data dan nilainya, padahal ada yg belum dan terlewat pada pemisahan seperti yg diharapkan berikut. perlu dicari kemudian, agak kurang cepat adaptasi saat sya migrasi dari xml.etree.ElementTree di IronPython. memang perlu usaha lebih jika menggunakan C# sebagai konsekuensi speed, performances & compatibilities yg dingin dicapai pembuat program.
.


.

terkadang diperlukan output data dalam format spreadsheet sehingga dapat diolah lanjut, untuk tujuan khusus tersebut diperlukan instalasi library terlebih dahulu. sebagai berikut,

.

.

.
.
contoh sederhana diatas hanya menyimpan data masukan. data keluaran seperti luas, keliling dan berat dapat disimpan dalam format file XLSX tersebut. rumusan dapat ditentukan langsung untuk menampilkan hasil tanpa melakukan perhitungan terlebih dahulu pada C# karena akan dilakukan otomatis oleh library tersebut. dapat juga hanya membaca isi file atau melakukan perubahan/editing. banyak juga library lain yg menarik untuk diterapkan pada aplikasi CAE dapat di install secara mudah dan lebih terjamin kompatibilitasnya.
.


.


.
aplikasi desain sipil/struktural banyak dijembatani format file CAD yg sudah ada dikenal luas seperti DXF, untuk tujuan pembacaan dan penggambaran juga dapat dilakukan dengan instalasi tambahan library berikut,
.
.

.
pada penggunaan library ini sya masih stuck belum ketemu penentuan dimensi pada gambar dikarenakan dokumentasi pembuatnya yg kurang jelas, ada library DXF lain yg lebih lengkap dokumentasinya namun masih gagal saat proses compiled. nanti perlu perbandingan lanjut pemilihannya berdasarkan kelebihan dan kekurangan masing-masing.
.

.
**updates
menggunakan library DXF yg lain sebelumnya gagal saat compiled, ada yg tertinggal pada penentuan setting tambahan System.Drawing.Common. kemungkinan library ini yg akan digunakan, pertimbangan dokumentasi lebih lengkap dan dukungan pengguna lain yg sudah banyak. apabila pembuat familiar dengan perintah pada program AutoCAD saat penggambaran maka akan mempermudah memahami dokumentasi dan menerapkannya karena constructor adalah identik/sama. 
.

.

.



.
sering juga ada kebutuhan pembuatan chart, plot atau graph data X/Y dari tabulasi hasil perhitungan agar dapat terwakilkan dengan cukup jelas. untuk itu perlu library khusus, misal sebagai berikut.
.

.


.

.
untuk library visualisasi object tiga dimensi masih belum berhasil walau sudah selesai compiled, ditampilkan error message seperti dibawah dan juga Windows Form gagal menampilkan object yg sya buat yaitu cylinder. kelihatannya disebabkan dynamic linked libraray (dll) yg diambil dan digunakan belum lengkap, perlu dicari kemudian.
.

.
.
.


.

secara pribadi, sya bukan hardcore programmer yg menekuni secara terus menerus dan berkelanjutan. karena memang banyak bekerja sebagai designer, namun kenyataannya terkadang bahkan sering juga memerlukan program khusus untuk kepentingan internal sendiri agar mempercepat kerja sehingga menghemat waktu dan tenaga, juga untuk menghindari pekerjaan perulangan yg terlihat membosankan. selama ini lebih banyak ke problem solving ketimbang graphical user interfaces, sebenarnya jika melihat algorithma untuk perhitungan desain sipil/struktural tidak terlalu rumit. kebanyakan aritmetika biasa: penjumlahan, perkalian pembagian, min/maks, pangkat, akar, konversi satuan/units dan beberapa pencabangan atau iterasi. seperti contoh sederhana diatas, hanya dengan penggunaan aritmetika sederhana sudah dapat mengitung berat tulangan yg digunakan dalam suatu konstruksi gedung beton bertulang, dapat dikembangkan juga untuk volume beton dan luasan bekisting untuk tujuan Bill of Materials (BoM). begitu juga dengan aplikasi desain struktural, seperti perencanaan balok/kolom beton bertulang atau struktur baja atau pelat dan pondasi terlihat hanya ada tambahan pencabangan dan iterasi saja sudah dapat menyelesaikan masalah yg melelahkan jika dikerjakan manual kalkulator tangan. penekanan lebih terhadap alur program (flowchart) dan implementasi dari pengetahuan perencana (knowledge based) ketimbang penguasaan semua materi bahasa pemrograman. dapat diartikan saat implementasi maka penggunaan bahasa program lebih cenderung monoton itu-itu saja. berbeda halnya untuk aplikasi khusus, kadang sya stuck juga terhenti belum ketemu berkelanjutan dikemudian waktu karena memang belum ada dedikasi khusus. 

.


(source : Microsoft, 2021)

.

bahasa C# (Microsoft) yg up to dates diketahui lebih cepat (dapat jauh) dibanding IronPython (Microsoft) yg out dates terutama pada saat recursivelooping dan iterasi, dapat dibuat compile static atau dynamic juga, dapat dibuat dan berjalan di Linux, kompatible dengan project opensource yg sya minati untuk kemudahan integrasi. karena pertimbangan tersebut kemungkinan besar bahasa pemrogram C# yg akan sya gunakan kedepannya migrasi menggantikan IronPython berikut konversi source code yg sudah banyak sya buat selama ini. walau ada yg beberapa yg belum selesai seperti kolom biaksial beton bertulang atau komposit pembuatan permukaan runtuh (failure surface) tiga dimensi karena lama sekali tidak disentuh lagi dan kurangnya motivasi akibat tersedianya program jadi non/komersil yg sudah ada beredar.

.

0 komentar:

Posting Komentar