Yazılım geliştirmenin geleceği: Bilgisayarların geleceği P2

GÖRÜNTÜ KREDİSİ: Kuantumrun

Yazılım geliştirmenin geleceği: Bilgisayarların geleceği P2

    1969'da Neil Armstrong ve Buzz Aldrin, Ay'a ayak basan ilk insanlar olduktan sonra uluslararası kahramanlar oldular. Ancak bu astronotlar kameradaki kahramanlar olsa da, onların katılımı olmadan ilk insanlı Ay'a inişi imkansız olmayan binlerce isimsiz kahraman var. Bu kahramanlardan birkaçı, uçuşu kodlayan yazılımcılardı. Neden? Niye?

    O zamanlar var olan bilgisayarlar bugün olduğundan çok daha basitti. Aslında, ortalama bir kişinin yıpranmış akıllı telefonu, Apollo 11 uzay aracındaki (ve bu konuda 1960'ların tüm NASA'sındaki) herhangi bir şeyden birkaç kat daha güçlüdür. Ayrıca, o zamanlar bilgisayarlar, yazılımı en temel makine dillerinde programlayan uzman yazılım geliştiricileri tarafından kodlandı: AGC Montaj Kodu veya basitçe, 1'ler ve 0'lar.

    Bağlam için, bu isimsiz kahramanlardan biri, Apollo uzay programının Yazılım Mühendisliği Bölümü Direktörü, Margaret Hamilton, ve ekibi, günümüzün programlama dillerini kullanarak, çabanın çok küçük bir kısmı kullanılarak yazılabilecek bir dağ kodu (aşağıda resmedilmiştir) yazmak zorunda kaldı.

    (Yukarıdaki resimde, Apollo 11 yazılımını içeren bir kağıt yığınının yanında duran Margaret Hamilton görülmektedir.)

    Yazılım geliştiricilerin olası senaryoların yaklaşık yüzde 80-90'ını kodladığı günümüzde aksine, Apollo misyonları için kodlarının her şeyi hesaba katması gerekiyordu. Bunu perspektife koymak için Margaret'in kendisi şunları söyledi:

    "Kontrol listesi kılavuzundaki bir hata nedeniyle, randevu radarı anahtarı yanlış konuma yerleştirildi. Bu, bilgisayara hatalı sinyaller göndermesine neden oldu. Sonuç olarak, bilgisayardan iniş için tüm normal işlevlerini yerine getirmesi istendi. zamanının %15'ini tüketen fazladan bir sahte veri yükü alırken Bilgisayar (ya da daha doğrusu içindeki yazılım), yapması gerekenden daha fazla görev yapması istendiğini anlayacak kadar akıllıydı. astronot için bir alarm, şu anda yapmam gerekenden daha fazla görevle aşırı yüklendim ve sadece daha önemli görevleri, yani iniş için gerekenleri tutacağım ... , bilgisayar hata koşullarını tanımaktan daha fazlasını yapacak şekilde programlandı.Yazılıma eksiksiz bir kurtarma programları seti dahil edildi.Yazılımın eylemi, bu durumda, daha düşük öncelikli görevleri ortadan kaldırmak ve daha önemli olanları yeniden oluşturmaktı ... bilgisayar olmasaydıBu sorunu fark etti ve kurtarma eylemi yaptı, Apollo 11'in başarılı aya inişi olup olmayacağından şüpheliyim."

    — Margaret Hamilton, Apollo Uçuş Bilgisayar Programlama Direktörü MIT Draper Laboratuvarı, Cambridge, Massachusetts, "Computer Got Loaded", Mektup veri oluşturma, Mart 1, 1971

    Daha önce de ima edildiği gibi, yazılım geliştirme Apollo'nun ilk günlerinden beri gelişmiştir. Yeni üst düzey programlama dilleri, 1'ler ve 0'larla yapılan sıkıcı kodlama sürecini, kelimeler ve sembollerle kodlamanın yerini aldı. Eskiden günlerce kodlama gerektiren rastgele sayı üretme gibi işlevler artık tek bir komut satırı yazmakla değiştiriliyor.

    Başka bir deyişle, yazılım kodlaması her geçen on yılda giderek daha otomatik, sezgisel ve insancıl hale geldi. Bu nitelikler yalnızca gelecekte devam edecek ve yazılım geliştirmenin günlük yaşamlarımızda derin bir etkisi olacak şekillerde evrimine rehberlik edecek. Bu, bu bölümün Bilgisayarların Geleceği dizi keşfedecek.

    Kitleler için yazılım geliştirme

    1'leri ve 0'ları (makine dili) kodlama ihtiyacını kelimeler ve sembollerle (insan dili) değiştirme süreci, soyutlama katmanları ekleme süreci olarak adlandırılır. Bu soyutlamalar, tasarlandıkları alan için karmaşık veya ortak işlevleri otomatikleştiren yeni programlama dilleri biçiminde geldi. Ancak 2000'lerin başında, kodsuz veya düşük kodlu platformlar olarak adlandırılanları sunmaya başlayan yeni şirketler (Caspio, QuickBase ve Mendi gibi) ortaya çıktı.

    Bunlar, teknik bilgisi olmayan profesyonellerin, görsel kod bloklarını (semboller/grafikler) bir araya getirerek işlerinin ihtiyaçlarına göre uyarlanmış özel uygulamalar oluşturmasını sağlayan kullanıcı dostu, çevrimiçi panolardır. Başka bir deyişle, bir ağacı kesip onu soyunma dolabına dönüştürmek yerine, onu Ikea'nın önceden şekillendirilmiş parçalarını kullanarak yaparsınız.

    Bu hizmeti kullanmak hala belirli bir düzeyde bilgisayar bilgisi gerektirse de, artık bir bilgisayar bilimi derecesine ihtiyacınız yok. Sonuç olarak, bu soyutlama biçimi, kurumsal dünyada milyonlarca yeni "yazılım geliştiricisinin" yükselişini sağlıyor ve birçok çocuğun daha erken yaşta kod yazmayı öğrenmesini sağlıyor.

    Yazılım geliştiricisi olmanın ne demek olduğunu yeniden tanımlamak

    Bir manzaranın ya da bir kişinin yüzünün yalnızca bir tuval üzerine çekilebildiği bir zaman vardı. Bir ressamın yıllarca çırak olarak çalışması ve pratik yapması, resim sanatını, renklerin nasıl karıştırılacağını, hangi araçların en iyi olduğu, belirli bir görseli uygulamak için doğru teknikleri öğrenmesi gerekir. Ticaretin maliyeti ve bunu iyi bir şekilde gerçekleştirmek için gereken uzun yıllara dayanan deneyim, aynı zamanda ressamların az ve çok uzak olduğu anlamına geliyordu.

    Sonra kamera icat edildi. Ve tek bir tıklamayla, aksi takdirde boyaması günler ila haftalar alacak olan manzaralar ve portreler bir saniyede çekildi. Kameralar geliştikçe, ucuzladıkça ve artık en basit akıllı telefonlarda bile yer aldıkları bir noktaya kadar bollaştıkça, etrafımızdaki dünyayı yakalamak artık herkesin katıldığı yaygın ve gündelik bir aktivite haline geldi.

    Soyutlamalar ilerledikçe ve yeni yazılım dilleri her zamankinden daha rutin yazılım geliştirme çalışmalarını otomatikleştirdikçe, 10 ila 20 yıl içinde bir yazılım geliştiricisi olmak ne anlama gelecek? Bu soruyu yanıtlamak için, geleceğin yazılım geliştiricilerinin yarının uygulamalarını nasıl oluşturacaklarını gözden geçirelim:

    *Öncelikle, tüm standartlaştırılmış, tekrarlayan kodlama çalışmaları ortadan kalkacaktır. Onun yerine önceden tanımlanmış bileşen davranışları, kullanıcı arayüzleri ve veri akışı manipülasyonlarından (Ikea parçaları) oluşan geniş bir kitaplık olacak.

    *Bugün olduğu gibi, işverenler veya girişimciler, yazılım geliştiricilerin özel yazılım uygulamaları veya platformları aracılığıyla yürütmesi için belirli hedefler ve çıktılar tanımlayacaktır.

    *Bu geliştiriciler daha sonra uygulama stratejilerinin haritasını çıkaracak ve bileşen kitaplıklarına erişerek ve bunları birbirine bağlamak için görsel arabirimler (arttırılmış gerçeklik (AR) veya sanal gerçeklik (VR) aracılığıyla erişilen görsel arabirimler) kullanarak yazılımlarının ilk taslaklarını prototiplemeye başlayacaklar.

    *Geliştiricilerinin ilk taslaklarının ima ettiği hedefleri ve çıktıları anlamak için tasarlanmış özel yapay zeka (AI) sistemleri, daha sonra taslak yazılım tasarımını iyileştirecek ve tüm kalite güvence testlerini otomatikleştirecektir.

    *Sonuçlara dayanarak, AI daha sonra geliştiriciye çok sayıda soru soracak (muhtemelen sözlü, Alexa benzeri iletişim yoluyla), projenin hedeflerini ve çıktılarını daha iyi anlamak ve tanımlamak ve yazılımın çeşitli senaryolarda nasıl hareket etmesi gerektiğini tartışmak için ve ortamlar.

    *Geliştiricinin geri bildirimine dayanarak, yapay zeka yavaş yavaş amacını öğrenecek ve proje hedeflerini yansıtacak kodu oluşturacaktır.

    *Bu ileri geri, insan-makine işbirliği, bitmiş ve pazarlanabilir bir sürüm dahili uygulamaya veya halka satışa hazır olana kadar yazılımın sürümünden sonra yinelenecektir.

    *Aslında bu işbirliği, yazılım gerçek dünya kullanımına maruz kaldıktan sonra da devam edecek. Basit hatalar rapor edildiğinde, AI bunları yazılım geliştirme sürecinde ana hatlarıyla belirtilen orijinal, istenen hedefleri yansıtacak şekilde otomatik olarak düzeltecektir. Bu arada, daha ciddi hatalar, sorunu çözmek için insan-AI işbirliğini gerektirecektir.

    Genel olarak, geleceğin yazılım geliştiricileri 'nasıl'a daha az, daha çok 'ne' ve 'neden'e odaklanacaklar. Daha az zanaatkar ve daha çok mimar olacaklar. Programlama, niyet ve sonuçları bir yapay zekanın anlayabileceği ve ardından bitmiş bir dijital uygulamayı veya platformu otomatik olarak kodlayabileceği şekilde sistemli bir şekilde iletebilen insanlara ihtiyaç duyacak entelektüel bir alıştırma olacaktır.

    Yapay zeka odaklı yazılım geliştirme

    Yukarıdaki bölüm göz önüne alındığında, AI'nın yazılım geliştirme alanında giderek daha merkezi bir rol oynayacağını düşündüğümüz açıktır, ancak benimsenmesi yalnızca yazılım geliştiricilerini daha etkili hale getirme amacıyla değil, bu eğilimin arkasında iş güçleri de var.

    Yazılım geliştirme şirketleri arasındaki rekabet her geçen yıl daha da kızışıyor. Bazı şirketler rakiplerini satın alarak rekabet eder. Diğerleri yazılım farklılaşması üzerinde rekabet eder. İkinci stratejiyle ilgili zorluk, kolayca savunulamaz olmasıdır. Bir şirketin müşterilerine sunduğu herhangi bir yazılım özelliği veya geliştirmesi, rakipleri nispeten kolaylıkla kopyalayabilir.

    Bu nedenle şirketlerin her bir ila üç yılda bir yeni yazılım çıkardığı günler geride kaldı. Bu günlerde, farklılaşmaya odaklanan şirketler, giderek daha düzenli bir şekilde yeni yazılımlar, yazılım düzeltmeleri ve yazılım özellikleri yayınlamak için finansal bir teşvike sahipler. Şirketler ne kadar hızlı yenilik yaparsa, müşteri sadakatini o kadar fazla artırır ve rakiplere geçmenin maliyetini artırır. Artımlı yazılım güncellemelerinin düzenli dağıtımına yönelik bu kayma, "sürekli dağıtım" olarak adlandırılan bir eğilimdir.

    Ne yazık ki, sürekli teslimat kolay değil. Bugünün yazılım şirketlerinin ancak dörtte biri, bu eğilimin talep ettiği yayın takvimini uygulayabiliyor. İşte bu yüzden işleri hızlandırmak için yapay zeka kullanmaya çok fazla ilgi var.

    Daha önce ana hatlarıyla belirtildiği gibi, AI sonunda yazılım hazırlama ve geliştirmede giderek daha fazla işbirlikçi bir rol oynayacaktır. Ancak kısa vadede şirketler, yazılım için kalite güvence (test) süreçlerini giderek daha fazla otomatikleştirmek için kullanıyor. Ve diğer şirketler, yeni özelliklerin ve bileşenlerin piyasaya sürülmesini ve kod düzeyine kadar nasıl üretildiklerini izleme süreci olan yazılım belgelerini otomatikleştirmek için yapay zekayı kullanmayı deniyorlar.

    Genel olarak, AI, yazılım geliştirmede giderek daha fazla merkezi bir rol oynayacaktır. Kullanımına erkenden hakim olan bu yazılım şirketleri, eninde sonunda rakiplerine göre katlanarak büyümenin keyfini çıkaracaklar. Ancak bu yapay zeka kazanımlarını gerçekleştirmek için endüstrinin ayrıca donanım tarafındaki gelişmeleri de görmesi gerekecek - bir sonraki bölüm bu noktayı detaylandıracak.

    Hizmet olarak yazılım

    Her türden yaratıcı profesyonel, dijital sanat veya tasarım çalışması oluştururken Adobe yazılımını kullanır. Yaklaşık otuz yıl boyunca Adobe'nin yazılımını bir CD olarak satın aldınız ve gerektiğinde gelecekteki yükseltilmiş sürümleri satın alarak bu yazılımın kullanımına sonsuza kadar sahip oldunuz. Ancak 2010'ların ortalarında Adobe stratejisini değiştirdi.

    Adobe müşterileri, can sıkıcı derecede ayrıntılı sahiplik anahtarlarına sahip yazılım CD'leri satın almak yerine, artık Adobe yazılımlarını bilgisayar cihazlarına indirme hakkı için aylık bir abonelik ödemek zorunda kalacaktı; bu yazılım, yalnızca Adobe sunucularına düzenli ve sabit bir İnternet bağlantısıyla birlikte çalışacaktı. .

    Bu değişiklikle birlikte müşteriler artık Adobe yazılımına sahip değillerdi; gerektiği gibi kiraladılar. Buna karşılık, müşterilerin artık sürekli olarak Adobe yazılımının yükseltilmiş sürümlerini satın almaları gerekmiyor; Adobe hizmetine abone oldukları sürece, her zaman en son güncellemeleri piyasaya çıkar çıkmaz cihazlarına yükleyeceklerdi (genellikle yılda birkaç kez).

    Bu, son yıllarda gördüğümüz en büyük yazılım trendlerinden sadece bir tanesidir: yazılımın bağımsız bir ürün yerine nasıl hizmete girdiği. Microsoft'un Windows 10 güncellemesinin yayınlanmasıyla gördüğümüz gibi, yalnızca daha küçük, özel yazılımlar değil, tüm işletim sistemleri. Başka bir deyişle, hizmet olarak yazılım (SaaS).

    Kendi kendine öğrenen yazılım (SLS)

    Endüstrinin SaaS'a doğru kaymasına dayanarak, yazılım alanında hem SaaS hem de yapay zekayı birleştiren yeni bir trend ortaya çıkıyor. Amazon, Google, Microsoft ve IBM'in önde gelen şirketleri, yapay zeka altyapılarını müşterilerine bir hizmet olarak sunmaya başladı.

    Başka bir deyişle, yapay zeka ve makine öğrenimi artık yalnızca yazılım devlerinin erişimine açık değil, artık herhangi bir şirket ve geliştirici kendi kendine öğrenen yazılım (SLS) oluşturmak için çevrimiçi yapay zeka kaynaklarına erişebilir.

    Yapay Zekanın Geleceği serimizde AI'nın potansiyelini ayrıntılı olarak tartışacağız, ancak bu bölümün bağlamı için, mevcut ve gelecekteki yazılım geliştiricilerin, yapılması gereken görevleri öngören yeni sistemler oluşturmak için SLS oluşturacağını söyleyeceğiz ve bunları sizin için otomatik olarak tamamlamanız yeterlidir.

    Bu, gelecekteki bir AI asistanının ofiste çalışma tarzınızı öğreneceği ve belgeleri istediğiniz gibi biçimlendirmek, e-postalarınızı kendi ses tonunuzda hazırlamak, çalışma takviminizi yönetmek ve daha fazlası gibi sizin için temel görevleri tamamlamaya başlayacağı anlamına gelir.

    Evde bu, siz gelmeden önce evinizi önceden ısıtmak veya satın almanız gereken yiyecekleri takip etmek gibi görevler de dahil olmak üzere gelecekteki akıllı evinizi bir SLS sisteminin yönetmesi anlamına gelebilir.

    2020'lerde ve 2030'larda, bu SLS sistemleri kurumsal, hükümet, askeri ve tüketici pazarlarında hayati bir rol oynayacak ve her birinin kademeli olarak üretkenliğini artırmasına ve her türlü israfı azaltmasına yardımcı olacak. Bu serinin ilerleyen bölümlerinde SLS teknolojisini daha ayrıntılı olarak ele alacağız.

    Ancak, tüm bunların bir yakalaması var.

    SaaS ve SLS modellerinin çalışmasının tek yolu, İnternet'in (veya arkasındaki altyapının), bu SaaS/SLS sistemlerinin üzerinde çalıştığı "bulut"u çalıştıran bilgi işlem ve depolama donanımının yanı sıra büyümeye ve gelişmeye devam etmesidir. Neyse ki, takip ettiğimiz trendler umut verici görünüyor.

    İnternetin nasıl büyüyüp gelişeceği hakkında bilgi edinmek için şu yazımızı okuyun: İnternetin Geleceği diziler. Bilgisayar donanımının nasıl ilerleyeceği hakkında daha fazla bilgi edinmek için aşağıdaki bağlantıları kullanarak okumaya devam edin!

    Bilgisayarların Geleceği serisi

    İnsanlığı yeniden tanımlamak için ortaya çıkan kullanıcı arayüzleri: Bilgisayarların geleceği P1

    Dijital depolama devrimi: Bilgisayarların Geleceği P3

    Mikroçiplerin temelden yeniden düşünülmesini tetikleyen solan bir Moore Yasası: Bilgisayarların Geleceği P4

    Bulut bilişim merkezi olmayan hale geliyor: Bilgisayarların Geleceği P5

    Ülkeler neden en büyük süper bilgisayarları oluşturmak için rekabet ediyor? Bilgisayarların Geleceği P6

    Kuantum bilgisayarlar dünyayı nasıl değiştirecek: Bilgisayarların Geleceği P7    

    Bu tahmin için bir sonraki planlanmış güncelleme

    2023-02-08

    Tahmin referansları

    Bu tahmin için aşağıdaki popüler ve kurumsal bağlantılara başvurulmuştur:

    Bu tahmin için aşağıdaki Quantumrun bağlantılarına başvurulmuştur: