Bu sunumda script tabanlı dillerin bugün ki konumu, temel özellikleri, farklı geliştirme ortamları ile olan karşılaştırmaları ve gelecekte konumlanacak yerleri üzerinde durulmaktadır.
1. Script Tabanlı Dillerin
Önemi ve Geleceği
Burak Selim Şenyurt
www.buraksenyurt.com
ING Bank – Kıdemli Yazılım Danışmanı
2. Scripting
• Yorumlayıcı eşliğinde, özel çalışma
ortamlarında işletilebilen betik temelli
programlama biçimi.
OS shell
Embedded
Devices
Web Pages
Software
Applications
DSL
Game
Systems
14. Muhammed Cuma
Tahiroğlu’nun Damdan Düşenler
yazısında belirttiği üzere,
“İnsanlar script dillerinin
basitliğini seviyor ama kodun
artmasıyla ortaya çıkan
cehennem ateşinden endişeliler.”
Geçtiğimiz günlerde klasik asp ile yazılmış kodların olduğu bir prod sunucusunda bug-fix yapmak zorunda kaldım. ASPnin kullandığı .net 1.1 ile yazılmış bir dll vardı. Kaynak kodlarınu buldum ama derlenip global assembly cache’e atılmalıydı. Makinede gacutil yüklü değildi. Ne var ki powershell script kullanarak ilgili .Net assembly’ları yardımıyla bu işi yapabildim. Anlık komut satırında bir betik kodu yardımıyla.
Başka örnek kullanım alanları.
TFS de Powershell ile script desteği mevcut.
Cloud sistemlerinden olan Azure’da da Powershell script desteği mevcut.
Hatta artık bir drone’u Node.js sayesinde web arayuzunden uçurmak da mümkün.
Powershell de müzik bile çalabilirsiniz.
https://social.technet.microsoft.com/wiki/contents/articles/20989.music-from-the-command-line-performed-by-powershell.aspx#The_Imperial_March_Star_Wars
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(659,500)
[console]::beep(698,350)
[console]::beep(523,150)
[console]::beep(415,500)
[console]::beep(349,350)
[console]::beep(523,150)
[console]::beep(440,1000)
[console]::beep(37,1)
Script diller uygulamalarda(VB for Microsoft Office vb), web tarayıcılarındaki sayfalarda(javascript vb), işletim sistemlerine ait kabuklarda(shell – Unix BASH, Windows Powershell vb), gömülü cihazlarda, DSL tarafında (Lua gibi), oyun sistemlerinde(Second Life Virtual World) karşımıza çıkar
Öğrenilmesi kolay, hızlı çalışan az sayıda kod ifadesi etkileşimli ile sonuç almamızı sağlayan temel bir modeli esas alır.
Klasik bir derleme yaklaşımında en bilinen örnek ‘Hello World’ ü deneyimleyelim. Bu kadar yeterli değil. Derlemek ve çalıştırmak lazım.
Ancak betik bir dilde kodu derlemeye gerek yoktur. Main gibi bir deklarasyon yoktur.
Senaryoyu zenginleştirelim.
Her bir satırında kayıt bilgisi içeren bir sistem dosyasını satır satır okuyup her bir satır için veritabanına parametre bazlı SQL sorgusu göndermek istediğimizi ve geriye bir dönüş almayı beklediğimizi düşünelim. JAVA tarafında kaba taslak yukarıdaki gibi bir senaryo söz konusu olur.
Sıkıntı JAVA gibi derlemeli dillerin stres etkisi olmasıdır. Bakımları(Maintanance) gerekir. Çalışmadan önce derlenmeleri(compile) de şarttır. Belli bir tip sistemine(type system) bağlıdırlar. Integer, floating point number, char, array vb...
Aynı örneği Unix tabanlı bir sistemde bash script’leri ile de gerçekleştirebiliriz.
Bash Script ile aynı örneğin yazılması.
Tabii bu tip bir çalışma modelinin de sıkıntıları vardır.
Kod yazan kodlara destekleri güçlüdür(Meta Programming)
Daha çok dynamic type sistemini kullanırlar(Duck Typing ön plandadır)
Yorumlamalıdırlar ve hemen reaksiyon verirler. Yani bir değişiklik sonrası kodu tekrar derleyip taşımamıza gerek yoktur. Bu aynı zamanda dikkatli olunmasını da gerektirir.
Yorumlayıcıların olduğu her mimari platformda çalışabilirler.
Popüler script dilleri. IEEE istatistiklerine göre.
2016 yılındaki Stackoverflow developer anketine göreyse…
Bana bu bilgiyi kazandırdığı için Da Vinci Görkem Özdoğan’a çok teşekkür ederim. http://gorkemozdogan.net/javascript/data-vinci-8-javascript/
Script Diller vs Derlemeli Diller
Derlenmiş Diller
Aşırı Kurumsallık
Ağır geliştirme süreleri
Çok fazla özellik(Günlük hayata fazla)
Muhammed Cuma Tahiroğlu diyor ki
TFS de Powershell ile script desteği mevcut.
Cloud sistemlerinden olan Azure’da da Powershell script desteği mevcut.