Saya sedang melihat-lihat beberapa web server yang berbeda pagi ini ketika saya menemukan G-WAN . Seperti yang saya pahami, ini adalah server web yang ditulis dalam C dan Anda harus memanfaatkannya dengan menulis situs web / aplikasi web Anda dalam C. Satu manfaat yang jelas adalah kecepatan seperti yang disarankan situs G-WAN.
Namun, di forum, pencipta G-WAN bertanya mengapa tidak menggunakan C untuk aplikasi berbasis web dan saya tidak dapat memikirkan satu alasan pun selain itu sulit (bagi saya, saya pemula dalam hal C). Pasti ada lebih banyak alasan mengapa kita semua menggunakan PHP, Python, Ruby dll selain karena mudah dikembangkan dalam bahasa-bahasa ini. Saya tidak melihat itu sebagai alasan yang bagus.
Jadi saya katakan kepada Anda: Mengapa Anda tidak menggunakan C untuk aplikasi web Anda?
sumber
Jawaban:
Dibutuhkan banyak kehati-hatian untuk mendapatkan program C yang benar dan aman. Perhatian itu berarti Anda harus memiliki orang yang sangat baik yang menulis program Anda. Itu berarti Anda membayar lebih.
Selain itu, C tidak memiliki keuntungan menggambar dari pustaka fungsionalitas standar tunggal yang sangat besar seperti yang dimiliki .NET (dan platform web-sentris utama lainnya). Jadi Anda mungkin harus membeli komponen, atau melakukan interop, atau menggulung fungsionalitas Anda sendiri yang datang "gratis" dengan lebih banyak, haruskah kita mengatakan bahasa "web-sentris" seperti PHP atau C # atau Ruby atau apa pun. Itu berarti Anda membayar lebih.
Tambahkan semua itu pada fakta bahwa kecepatan komputasi single-threaded tidaklah begitu penting di web. Jika Anda membutuhkan lebih banyak skalabilitas, sebagian besar organisasi secara ekonomis dapat memberikan lebih banyak inti pada masalah dan baik-baik saja. Ini tidak berlaku untuk semua orang, tentu saja. Saya membayangkan bahwa inti mesin Google ditulis dalam C atau bahasa serupa tidak hanya untuk kecepatan, tetapi untuk menghemat uang nyata dalam biaya listrik.
sumber
Bersenandung...
Sepertinya saya agak terlambat dalam diskusi ini - tetapi saya baru menemukannya sekarang. Dan saya berterima kasih kepada kalian semua atas masukan yang begitu banyak.
Saya penulis G-WAN, yang menjelaskan bahwa saya telah serius menangani masalah ini: G-WAN lebih cepat daripada semua Server Web lainnya (tanpa pemrosesan) dan semua Server Aplikasi Web lainnya (pemrosesan apa pun yang dapat Anda bayangkan).
Ya, ANSI C juga memungkinkan untuk memproses lebih banyak konten statis - dengan CPU yang kurang kuat (ANSI C tidak hanya tentang membuat konten dinamis terbang).
Omong-omong, G-WAN menggunakan skrip C (tidak diperlukan compiler dan linker C) sehingga siklus / penundaan kompilasi / penautan tidak ada.
Dalam proses membandingkan G-WAN dengan .NET Java dan PHP, saya menulis aplikasi serupa dalam 4 bahasa: http://gwan.ch/source/
Dan, yang membuat saya kaget, bahasa skrip modern tidak lebih mudah digunakan.
Salah satu bagian dari pekerjaan yang sangat membuat frustrasi adalah mencari dengan putus asa panggilan API 'ajaib' yang akan melakukan apa yang ingin Anda lakukan.
Pikirkan tentang bagaimana melakukan 'ribuan cantik' dalam:
C #
Jawa
PHP
ANSI C
"..." berarti bahwa beberapa konfigurasi awal, atau pemrosesan pasca, diperlukan. ANSI C jelas lebih mudah digunakan dan diingat.
Ketika PHP memiliki lebih dari 5.900 panggilan API (C # dan Java tidak jauh dari sana), menemukan panggilan API yang tepat merupakan tantangan tersendiri. Waktu yang terbuang untuk menemukan ini (dan kemudian untuk menemukan seberapa buruk penerapan panggilan API asli ), waktu untuk mempelajarinya untuk saat berikutnya Anda membutuhkannya, selama ini membuat Anda kehilangan waktu yang diperlukan untuk menyelesaikan aplikasi Anda masalah.
Saya telah membaca (di atas) bahwa PHP lebih ringkas daripada ANSI C? Lalu mengapa menggunakan
"//:: this is a comment ::"
daripada"// this is a comment"
? Mengapa memiliki sintaks 'cukup ribuan' yang begitu rumit?Argumen umum lainnya adalah bahwa Java dan sejenisnya menyediakan panggilan khusus untuk aplikasi Web.
Saya tidak dapat menemukan apa pun untuk menghindari HTML di Java, jadi saya menulis versi saya:
Apakah Anda yakin bahwa kode yang sama di ANSI C akan lebih kompleks? Tidak, itu akan jauh lebih sederhana dan lebih cepat.
Java (berasal dari C) mengharuskan programmer untuk menghubungkan string multi-baris dengan '+'
C # (berasal dari C) mengharuskan programmer untuk menghubungkan string multi-baris dengan '+'
PHP (berasal dari C) mengharuskan programmer untuk hubungkan string multi-baris dengan '.'
ANSI C tidak memiliki persyaratan yang sekarang sepenuhnya bodoh (usang).
Jadi, apakah kemajuan yang begitu nyata diklaim oleh bahasa modern? Saya masih mencarinya.
Hormat kami,
Pierre.
sumber
, amount)
, PHP tidak masalah apa adanya, dan contoh ANSI C Anda membutuhkan dua argumen lagi (panjang buffer dan buffer). Dengan pengecualian khusus pada Java, contoh Anda tampaknya membuktikan hal yang sebaliknya. Selain itu, saya belum pernah melihat//:: comment ::
sintaks itu sebelumnya; PHP tentu tidak membutuhkannya.Alasan yang sama kami tidak menggunakan C untuk sebagian besar pemrograman. Manfaatnya (yang sebagian besar adalah kinerja) tidak melebihi biayanya (waktu pengembangan, kurangnya manajemen memori otomatis, kurangnya perlindungan otomatis dari buffer overflow, memiliki tahap kompilasi antara tahap edit dan pengujian, dll).
sumber
Sebagian besar aplikasi jaringan, terutama server web, jauh lebih "terikat I / O" - yaitu mereka mampu memompa keluar data jauh lebih cepat daripada yang dapat diterima jaringan. Oleh karena itu, sesuatu yang sangat efisien CPU bukanlah kemenangan besar, sedangkan sesuatu yang dapat diskalakan dan dipelihara. Jadi tidak ada alasan untuk menerima kekurangan C dan kehilangan keuntungan dari lingkungan yang dikelola seperti Java, .NET, Python, Perl atau bahasa lainnya.
sumber
C bukanlah bahasa yang nyaman untuk memanipulasi string.
Bandingkan C #:
Sesuai C:
sumber
printf
harus melakukan pekerjaan itu.Jika kesulitan dan kompleksitas bukanlah masalah sama sekali (ha!), Maka saya tidak akan berhenti di C. Saya akan menulis perakitan x86. Sudah bertahun-tahun sejak saya menggunakan server web apa pun yang bukan x86, dan sepertinya semakin kecil kemungkinannya setiap hari.
Menggunakan C (daripada perakitan, atau sesuatu yang lebih tinggi levelnya) menunjukkan bahwa C adalah sweet spot efisiensi programmer dan efisiensi komputer.
Untuk program yang saya tulis, hal ini tidak terjadi: C tidak cocok dengan jenis program yang ingin saya tulis, dan keuntungannya dibandingkan dengan macro assembler yang layak tidak terlalu signifikan. Program yang saya tulis saat ini tidak sulit dalam HLL pilihan saya, tetapi kerumitannya baik dalam assembly maupun C akan sangat tinggi sehingga tidak akan pernah selesai. Saya mengakui bahwa programmer yang cukup pintar dengan waktu yang cukup dapat membuatnya berjalan lebih cepat dalam perakitan atau C, tetapi saya bukan programmer itu.
sumber
sumber
eval
dan phpinclude
? Tolong, di C / C ++ Anda tidak menyatakan bahwa Anda ingin mengeksekusi kode arbitrer, itu hanya dilakukan.eval
bukan bug, itu maksud programmer. Di C / C ++, bug apa pun dapat menyebabkan eksekusi kode jarak jauh, dalam bahasa dinamis, ini tidak terjadi kecuali beberapa orang bodoh mengotak-atikeval
.Saya tahu pertanyaan ini telah dijawab sampai mati, tetapi sejauh ini ada 2 hal yang tidak disebutkan yang sangat penting untuk sukses dalam paradigma pemrograman apa pun, dan terutama dalam pengembangan web di mana Anda mendapatkan banyak orang yang belum tentu programmer, bekerja dengan kode.
Jika saya memiliki aplikasi penting yang membutuhkan kinerja ekstrem, saya akan menggunakan C, tetapi akan memakan waktu lebih lama untuk menulis, sehingga saya tidak akan pernah bisa memasarkannya. Sampai ada yang # 1 atau # 2 itu tidak layak bagi saya untuk menggunakannya.
sumber
C adalah bahasa tingkat rendah untuk banyak tujuan: tanpa OOP, banyak manajemen sumber daya manual.
Penggunaan C untuk web terbatas, misalnya Klone . Ini sebagian besar digunakan untuk kasus aplikasi tertanam sumber daya rendah.
Namun ada kerangka web C ++ seperti CppCMS yang digunakan untuk pengembangan aplikasi web berkinerja tinggi.
C ++ memungkinkan Anda menikmati abstraksi tinggi dan akses halus ke apa yang Anda lakukan, memberikan opsi yang jauh lebih baik untuk menerapkan dan mengembangkan aplikasi besar.
Tetapi Anda menggunakannya jika kinerja dan penggunaan sumber daya jauh lebih penting daripada waktu ke pasar dan biaya pengembangan karena umumnya pengembangan web lebih cepat menggunakan kerangka kerja web yang baik untuk bahasa seperti Java, Python, atau PHP. Juga umumnya ada programmer yang kurang kompeten untuk C ++ kemudian bahasa Java / P * dengan gaji yang sama.
Jadi ini pertanyaan tentang prioritas, juga ada lebih sedikit alat untuk pengembangan Web C ++ lalu untuk PHP / Python / Perl atau Java.
sumber
@Bayu_joo
FUD beraksi:
Sebenarnya tidak. Mereka tidak menskalakan sama sekali secara vertikal dan menskalakan sangat buruk secara horizontal. Lihat: http://gwan.ch/en_scalability.html di mana dijelaskan berapa banyak masalah yang dihadapi orang-orang yang berkinerja buruk.
Salah lagi. Jika pustaka PHP telah ditulis dalam C maka mereka dapat langsung digunakan dari C -secara langsung memberikan 'produktivitas unik' yang Anda klaim dimiliki PHP.
FUD murni (lihat jawaban di atas).
HipHop jauh lebih cepat dari PHP, tidak diragukan lagi. Tetapi jika Anda membandingkan HipHop dengan implementasi biasa-C, Anda memiliki dua lapisan overhead:
Plus, HipHop telah ditulis dalam mode Akademik yang tidak efisien dan tidak mengerti (terlepas dari kenyataan dunia nyata). tentu saja, ini dapat mengesankan pembuat kode PHP tetapi menunjukkan kode ini ke programmer yang tertanam dan dia akan merasa kasihan pada Facebook.
"Bahasa yang tidak memiliki segalanya sebenarnya lebih mudah untuk diprogram daripada beberapa yang memiliki" --Dennis M. Ritchie
Tidak seperti (kebanyakan) bahasa pemrograman PENGGUNA AKHIR, Dennis tahu beberapa hal tentang masalah ini, tampaknya.
sumber
Ini adalah alasan keseluruhan dan satu-satunya yang dibutuhkan. Ini memiliki banyak manfaat, yang utamanya adalah waktu untuk memasarkan. Jika Anda bisa mendapatkan aplikasi Web Anda online dalam sebulan menggunakan PHP daripada dua bulan menggunakan C, Anda mungkin menang. Jika Anda dapat menambahkan fitur baru dalam seminggu menggunakan Ruby on Rails daripada dua minggu menggunakan C, sekali lagi Anda menang. Jika Anda dapat memperbaiki bug dalam sehari menggunakan Python daripada dua hari menggunakan C, Anda menang sekali lagi. Jika Anda dapat menambahkan fitur karena Anda menggunakan bahasa X yang tidak dapat ditambahkan pesaing Anda sama sekali karena mereka menggunakan bahasa Y dan terlalu sulit dalam bahasa tersebut karena keterbatasan sumber daya, maka Anda pasti menang.
Dan dengan "menang" yang saya maksudkan adalah Anda tidak kalah. Pesaing Anda menggunakan bahasa dan kerangka kerja tingkat tinggi untuk mengembangkan situs mereka, jadi jika Anda menggunakan C, Anda tidak bersaing dengan orang lain yang menggunakan C, Anda kalah melawan orang lain yang tidak menggunakan C. Hanya untuk bersaing, Anda harus untuk menggunakan alat dengan tingkat abstraksi yang serupa.
Jika kinerja menjadi masalah, Anda dapat menulis ulang bagian lambat situs Anda dalam bahasa yang berkinerja lebih baik. Atau Anda bisa melempar lebih banyak perangkat keras padanya. Sungguh, masalah kinerja adalah apa yang kita sebut "masalah bagus untuk dimiliki" - artinya Anda sudah berhasil. Tetapi menghabiskan lebih banyak waktu untuk mengembangkan fungsionalitas dasar situs Anda jarang menjadi pilihan. Menuliskannya dalam C agar berjalan lebih cepat adalah pengoptimalan prematur, yang, seperti yang dikatakan Knuth, adalah akar dari semua kejahatan.
Semua ini menyiratkan bahwa jika Anda dapat menggunakan bahasa dengan tingkat abstraksi yang lebih tinggi daripada Python atau Ruby, Anda dapat menang melawan orang-orang yang menggunakan Python atau Ruby. Kisah Paul Graham tentang bagaimana dia dan timnya menggunakan LISP sebagai "senjata rahasia" dalam mengembangkan situs Web mungkin bermanfaat. http://www.paulgraham.com/avg.html
Tentu saja, jika Anda mengembangkan situs untuk hiburan Anda sendiri, lakukanlah dalam bahasa apa pun yang Anda inginkan. Dan jika situs Anda terikat dengan CPU (hampir tidak ada; mereka biasanya terikat I / O) maka gunakan bahasa dengan kinerja tercepat yang Anda bisa. Namun, jika Anda mencoba berinovasi, gunakan bahasa tingkat tinggi dengan abstraksi terbaik yang dapat Anda temukan.
sumber
Anda pikir menjadi mudah bukanlah alasan yang baik. Saya pikir itu alasan yang bagus. Jika Anda membutuhkan performa terbaik maka C tidak apa-apa, tetapi bahasa lain memisahkan hal-hal yang sulit untuk meningkatkan produktivitas, pemeliharaan, dan mengurangi kerusakan.
sumber
Pertimbangkan bahwa saya bukan pengembang web tetapi akan menanyakan pertanyaan ini dan menawarkan satu atau dua poin.
Situs web apa yang hanya ditulis dalam satu bahasa? Serius benang ini sepertinya menganggap satu palu cocok untuk semua paku.
Kapan terakhir kali seseorang dengan serius menyatakan bahwa C itu rumit? Maksudku benar-benar teman-teman Anda tidak bisa mendapatkan level yang lebih rendah. Saya tidak membicarakan C ++ di sini karena keduanya sering dirujuk secara kolektif.
C memiliki masalah keamanan, yang tidak dapat disangkal tetapi apakah mereka kurang dari apa yang terlihat di kludges yang disebut PHP & Perl? Dalam kedua kasus situs web yang aman adalah fungsi dari disiplin programmer.
Dalam acara apapun off untuk komentar. Kesulitan menggunakan bahasa tertentu sangat bergantung pada masalah yang dihadapi C & terutama C ++ dapat mengarah pada solusi cepat untuk masalah di tangan yang berpengalaman.
Penggunaan industri untuk server web, yaitu server / situs tertanam tidak memiliki pilihan bahasa yang mungkin dimiliki server web normal. Jadi Anda akhirnya menggunakan varian C atau mungkin sesuatu seperti BASIC. Tujuan Anda adalah menawarkan fungsionalitas yang dibutuhkan perangkat dan tidak perlu khawatir tentang bahasa. Pada server web arus utama, cara untuk melakukannya adalah dengan bahasa tingkat tinggi hampir sepanjang waktu. Jauhi besi besar dan kebebasan pemrograman Anda keluar dari pintu.
Tanpa Perpustakaan yang tepat, akan sangat bodoh dalam banyak kasus untuk melakukan proyek web dasar di C. Kurangnya perpustakaan standar yang baik adalah hal yang sangat negatif di sini.
sumber
Berikut adalah beberapa kode terkait web lainnya yang ditulis dalam C yang layak untuk dilihat saat membuat perpustakaan C Anda sendiri untuk web:
sumber
Nah, mengingat fakta bahwa pengembangan Web adalah masalah memiliki perpustakaan yang berguna (jenis yang digunakan oleh PHP) maka saya tidak melihat bagaimana C tidak akan berguna.
Bagaimanapun, logika proseduralnya sama: do while, for, if then else, dll. Apakah ini C, PHP, .Net atau Perl.
Dan tes atau loop C tidak lebih sulit untuk ditulis karena ditulis dalam C.
Kebanyakan pustaka PHP dibuat dalam bahasa C sehingga argumen yang hilang-C-libraries-for-the-Web tidak terlalu meyakinkan.
Dugaan saya adalah bahwa C tidak diiklankan sebagai bahasa pemrograman web dengan promotor dari Java (SUN) dan Net (MICROSOFT) karena mereka memiliki mereka sendiri proprietary (berat dipatenkan) aset intelektual untuk dorongan untuk adopsi.
Sebagai standar gratis (tidak dipatenkan), C tidak menawarkan pegangan 'lock-in' pada pengembang ... oleh karena itu, mungkin upaya lobi yang berat di sekolah dan universitas untuk memastikan bahwa uang pembayar pajak akan mendanai pengadopsian suatu teknologi inferior yang didukung oleh kepentingan pribadi.
Jika C cukup baik untuk IBM dan MICROSOFT (mereka tidak mengembangkan produk mereka dalam PHP atau .Net) tetapi tidak cukup baik untuk pengguna akhir, maka pengguna akhir mungkin bertanya-tanya mengapa mereka diundang untuk menderita standar ganda ini.
sumber
Saya akan menggunakan C untuk aplikasi web jika:
G-WAN menjalankan kode sebagai skrip, ya skrip C seperti Play! Kerangka tidak untuk Java. G-WAN sangat cepat dan memiliki API yang mudah. G-WAN memungkinkan untuk menggunakan C / C ++ untuk aplikasi web saat server lain gagal melakukannya.
Satu hal yang jelas: Anda membutuhkan pemrogram yang baik untuk menulis situs web dalam C, pengembang yang jelek dapat membuat situs dengan spageti PHP :-) Ada pendeteksi kebocoran dan bahkan pengumpul sampah untuk C.
sumber
Semua bahasa yang Anda sebutkan sebenarnya ditulis dalam C / ++. Satu-satunya perbedaan adalah kelas dan pustaka lanjutan yang dibuat dari C yang membentuk apa yang sekarang menjadi bahasa penerjemah lainnya. Itu juga mengapa mereka disebut sebagai bahasa scripting.
Anggap saja seperti memanggang kue (PHP / JS):
Tapi bayangkan harus membuat semua elemen yang terdiri dari hal-hal itu. (C / ++)
C adalah dasar dari banyak bahasa modern. Ini adalah bahasa yang hebat dan hampir menjadi bahasa paling kuat yang sedang dirakit. Anda dapat melakukannya, Anda hanya perlu berinvestasi untuk membuat semua kode yang telah dilakukan oleh bahasa lain ini. Seperti membuat kue dari tabel periodik.
Pelajari itu, Anda benar-benar dapat membuatnya melakukan apa saja!
sumber
Penanganan string di C dapat dibuat lebih mudah dengan menggunakan:
atau:
Library String Terkelola (untuk C)
http://www.cert.org/secure-coding/managedstring.html
sumber
"domachine" menulis:
Pernahkah Anda bertanya-tanya dalam bahasa apa penerjemah PHP portabel ditulis?
Dalam ANSI C.
Jadi, sebelum Anda mengabaikan portabilitas ANSI C lagi, tanyakan pada diri Anda dalam bahasa apa bahasa pemrograman favorit Anda telah ditulis ... (tip: hampir semua ditulis dalam C / C ++).
Kompiler ANSI C tersedia di semua platform tempat saya bekerja -dan hal yang sama tidak berlaku untuk PHP dan runtime besarnya.
Begitu banyak untuk argumen portabilitas .
sumber
Mirip dengan G-WAN, tetapi untuk Cocoa / Objective-C adalah Bombax, kerangka aplikasi web.
http://www.bombaxtic.com
Berbicara tentang Objective-C Saya tidak dapat menahan diri untuk tidak menunjukkan MacRuby, yang berpotensi merevolusi cara kami membuat aplikasi web suatu hari nanti.
sumber
Poin lain mungkin adalah ketergantungan platform. C perlu dikompilasi menjadi kode asli. Kode ini tidak berjalan di semua platform.
Bahasa yang ditafsirkan dijalankan di mana pun ada penerjemah. Banyak penyedia, misalnya, menyediakan Penerjemah PHP yang diinstal di server mereka, tetapi dengan OS Windows. Jika Anda sekarang mengembangkan di mesin Linux. Anda punya masalah.
Tentu saja masalah ini dapat diselesaikan tetapi Anda melihat keuntungan dari pengembangan di PHP dalam kasus khusus ini.
Semoga ini bisa membantu, salam domachine
sumber
PHP, Python, dan sebagainya mudah untuk ditingkatkan dengan membuang perangkat keras pada masalahnya.
Misalkan diperlukan upaya 1 orang 1 tahun untuk mengembangkan aplikasi di PHP, dan biaya 3 tahun untuk melakukannya di C (karena C memerlukan lebih banyak upaya untuk melakukan hal yang sama). Itu berarti kebutuhan perangkat keras yang berkurang dari kode C harus mewakili gaji 2 tahun agar C menjadi menarik. Dalam prakteknya itu (hampir) tidak pernah terjadi.
Seperti semua aturan, ada pengecualian. Skala Facebook begitu besar sehingga perangkat keras membutuhkan biaya perawatan yang cukup besar. Itulah mengapa mereka mengembangkan HipHop , yang mengkompilasi silang PHP ke C ++. Ini menghadirkan yang terbaik dari kedua dunia: kesederhanaan pemrograman dalam PHP, dan kinerja mentah C ++. Facebook masih dikembangkan dalam PHP, tetapi ketika Anda menggunakannya, itu semua adalah kode asli.
sumber
Pada akhirnya Anda benar-benar dapat menggunakan bahasa apa pun untuk mengembangkan situs, termasuk assembler (melalui CGI, dll.). Jika Anda bermaksud mengapa kami tidak menggunakan bahasa yang dikompilasi, nah, kami sudah punya .NET, Java dan lainnya.
sumber
Anda harus mencintai apa yang Anda lakukan untuk mencapai hasil. Bahasa seperti java dan php dibuat dengan banyak upaya untuk membuat hidup orang lebih mudah. Php khususnya telah menguntungkan banyak pemrogram web belajar mandiri hari ini. Anda dapat melihat jenis dukungan yang dimilikinya dalam dunia pengembangan web.
Java iam yakin ditulis untuk memberi Anda bantuan dalam segala hal yang mungkin dilakukan di dunia saat ini. Buku yang sangat besar adalah indikasi yang jelas, dan itu adalah binatang buas jika Anda menjulang untuk pengembangan web juga. Hal yang sama berlaku untuk Python. Ini adalah bahasa dan platform yang begitu fantastis. Tidak heran mereka sangat populer.
Saya adalah pemuja C dan sebagian karena keterbatasan tertentu yang menghalangi saya untuk melihat bahasa lain seperti php. Saya menulis dalam C setiap hari dan setiap hari saya bangga untuk e dan mempelajari hal baru juga. Ini membuat saya merasa sangat senang dan saya juga mulai belajar tentang bagaimana C adalah pilihan default saat menulis aplikasi untuk situs web melalui Cgi. Ini diabstraksi di platform lain dan ketika Anda mengembangkan situs web yang berkaitan dengan database dan layanan web, Anda perlu tahu apa yang terjadi di balik layar.
Namun jika Anda mengetahui semua itu dan masih ingin menggunakan bahasa scripting, pasti ada alasan yang sah, dan kami tidak perlu ada orang yang menyarankan untuk tidak melakukannya.
sumber