Apa saja faktor ekonomi (dan sejarah lainnya) yang menyebabkan bahasa pemrograman berorientasi objek menjadi berpengaruh? Saya tahu bahwa Simula memulai sesuatu, tetapi apakah adopsi bahasa OOP karena meningkatnya kebutuhan bisnis? Atau, apakah adopsi lebih karena hal-hal baru yang dapat dilakukan dengan bahasa OOP?
Sunting Saya sangat tertarik dengan apakah ada beberapa faktor yang terjadi di luar bahasa itu sendiri yang memungkinkan mereka untuk bertahan.
technology
programming-languages
ihtkwot
sumber
sumber
Jawaban:
Jawaban singkat
Saya pikir itu adalah churn proyek perangkat lunak sebelum hari OO. OO membantu dengan menambahkan konsep kritis yang fundamental - Model dunia nyata .
Bahasa pemrograman berorientasi objek pertama adalah Simula pada tahun 1967. Namun, pada saat itu pengembangan perangkat lunak pada umumnya masih di laboratorium lebih banyak dan sebagian besar paradigma masih lebih dekat dengan kasus perangkat keras .
Lebih dari satu dekade penuh pengembangan perangkat lunak untuk aplikasi perusahaan aplikasi komersial lainnya tumbuh dan pengembangan perangkat lunak meningkat pada tahun 1970-an. Bahasa yang masih bertahan sampai hari ini pada usia tersebut (sebelum 1980) adalah C, Cobol, Fortran dan sejenisnya. Sebagian besar bahasa ini bersifat prosedural. Lisp juga ada sejak hari itu - namun, saya tidak yakin apakah itu bahasa tujuan umum yang menonjol untuk pengembangan komersial. Istilah model Waterfall yang terkenal juga diciptakan pada awal tahun 1970-an.
Di sebagian besar lingkungan komersial, elemen terpenting yang muncul dalam pengembangan perangkat lunak adalah manajemen proyek. Ada kebutuhan yang mendesak untuk anggaran yang ketat dan setidaknya dapat diprediksi dan mengelola persyaratan untuk dibekukan untuk memastikan bahwa proyek mencapai garis akhir dengan terhormat. Selama periode ini juga merupakan salah satu Mythical Manmonths pada tahun 1975.
Saya kira pada akhir tahun 70-an orang-orang terbakar - karena bahasa prosedural tidak memenuhi janji-janji itu. Dan paradigma baru berorientasi objek yang memang ada sejak saat itu menjadikannya besar. Meskipun orang mungkin tidak setuju, saya pikir C ++ yang membantu keakraban dan pengalaman yang terbukti dan dari C, dan orientasi Janji Obyek (awalnya dengan nama C dengan Kelas) kembali pada tahun 1983 adalah batu penjuru untuk keberhasilan pemrograman berorientasi Objek.
Beberapa referensi untuk lebih banyak perspektif - http://journal.thedacs.com/issue/43/88
Jadi mengapa OO?
Saya pikir hari-hari itu (jika Anda melihat sudut pandang keberhasilan proyek) - masuk akal bahwa apa yang dapat Anda pahami dengan lebih baik akan dapat dikelola dengan lebih baik. Metodologi berorientasi objek dengan janji "..semuanya dalam hidup adalah objek" tampak lebih masuk akal bahkan sebelum itu terbukti bermakna. Kesuksesan praktis dari faktor ini adalah gagasan untuk mencontoh dunia nyata dan masalah yang ada secara memadai sebelum melompati senjata - yang saya pikir sesuatu yang secara fundamental baru yang ditawarkan OO yang tidak ditawarkan oleh paradigma lain hingga tanggal tersebut. Dan tentu saja mengingat bahwa paradigma ini memaksa Anda untuk berpikir sebelum mengkode lebih dari bahasa prosedural, ini menunjukkan keberhasilan yang terlihat pada proyek perangkat lunak yang digunakan dan sejak saat itu mereka menjadi populer!
EDIT
Saya juga akan menambahkan bahwa bahasa pemrograman berevolusi secara bersamaan bersamaan dengan konsep-konsep dasar seperti itu (paradigma OO, Aspect, mesin Virtual,) Setiap konsep baru dan pemikiran baru muncul hanya ketika bahasa pemrograman baru yang segar menguasainya - hanya menjaga keakraban tetapi mengubah dasar-dasar dari inti! Pada saat yang sama - konsep baru dan bahasa baru ini hanya muncul karena masalah bisnis baru. 1980-an - OO untuk perangkat lunak skala besar, Jawa 1990 di era Internet, PHP / ASP dan banyak lainnya untuk web. Inovasi dalam bahasa pemrograman juga sebagian besar didorong oleh kebutuhan pasar yang terputus-putus.
Singkatnya, awal '80 -an adalah usia di mana perangkat lunak komersial skala besar lepas landas - sementara proyek dengan bahasa prosedural memiliki masalah mereka, OO menunjukkan cahaya yang lebih baik dan membuat proyek lebih sukses.
sumber
Customer
kelas tidak memiliki metode sepertieatLunch
,goToWork
atausleep
, meskipun ini adalah apa yang pelanggan lakukan di dunia nyata . TheProduct
kelas memiliki beberapa metode, meskipun sebagian besar produk memiliki tepat ada perilaku sama sekali di dunia nyata . Oleh karena itu, saya berpendapat bahwa model OO hanya sesuai (kurang lebih) dalam hal sifat, tetapi tidak sama sekali dalam hal perilaku, dengan dunia nyata. Tetapi Anda tidak perlu OO untuk memiliki model data yang sesuai dengan objek dunia nyata. Hanya tipe rekam yang diperlukan.Saya pikir alasan terbesar adalah keberhasilan antarmuka pengguna grafis seperti X dan Windows. GUI terdiri dari beberapa objek yang memiliki perilaku sendiri, sesuatu yang dapat direpresentasikan oleh OO.
Di sisi lain, antarmuka pengguna berbasis teks (yang tidak mencoba menyerupai GUI) seringkali hanya mengikuti pola respons-perintah, yang dapat dengan mudah diimplementasikan dalam bahasa prosedural. Aturan bisnis dan hal-hal serupa telah diterapkan dengan bahasa prosedural selama beberapa dekade, tanpa terlalu banyak masalah, dan sampai sekarang masih banyak program OO untuk aplikasi bisnis yang lebih bersifat prosedural; dengan objek bodoh yang menyimpan data dan objek stateless yang berisi aturan bisnis; yang pertama bisa berupa catatan dalam bahasa prosedural, yang kemudian bisa menjadi, yah, prosedur.
sumber
Saya melihat OOP sebagai langkah evolusi alami dari kode prosedural:
Saya yakin seseorang dengan pandangan yang lebih luas akan berbaur, tetapi sepertinya ini adalah perkembangan alami dengan hanya memungkinkan pemrogram untuk menghasilkan kode lebih cepat: yaitu memungkinkan penggunaan kembali kode yang lebih besar.
Dalam pandangan ini, faktor eksternal terbesar adalah berkurangnya biaya tenaga kuda prosesor (dibandingkan biaya tenaga kerja pengembang untuk membuat program khas): menghitung overhead dalam menggunakan kelas-kelas OOP menjadi lebih sedikit perhatian daripada penghematan waktu pengembang. (Pengorbanan yang sama antara biaya CPU ini dengan biaya programmer telah memengaruhi banyak aspek pemrograman lainnya.)
sumber
Pada awalnya ada pemrograman imperatif (jika Anda bisa menyebutnya begitu). Instruksi sederhana yang memberi tahu mainframe apa dan bagaimana seharusnya menghitung. Bahasa pemrograman tersebut menggunakan lompatan tanpa syarat dan instruksi "tidak terstruktur" lainnya, kebanyakan dari mereka eksotis dengan standar saat ini.
Kemudian seseorang datang dengan struktur untuk pemrograman. Untuk, sementara, lakukan sementara dan pendahuluan yang kita kenal sekarang. Itu adalah inovasi besar karena sekarang aplikasi dengan aliran yang relatif kompleks dapat ditulis dan dipahami dengan mudah. Jadi pemrograman terstruktur lahir.
Kemudian datang beberapa orang lain yang mengatakan bahwa Anda perlu mengulang banyak kode di sana-sini dan itu adalah mimpi buruk untuk dipertahankan sehingga cara menggunakan kembali kode harus ditemukan. Orang-orang datang dengan prosedur dan fungsi untuk membatasi bit kode yang dapat digunakan kembali. Ini juga melahirkan prinsip enkapsulasi dan tanggung jawab tunggal.
Kemudian beberapa akademisi mengatakan bahwa fungsionalitas harus digabungkan dengan data yang sedang dikerjakannya. Kemudian mereka menambahkan konsep pewarisan untuk penggunaan kembali kode dan polimorfisme agar sesuai dengan cara klasifikasi logis bekerja di kehidupan nyata. Maka lahirlah bahasa pemrograman generasi ketiga dan OOP.
sumber