January 3, 2015 · windows komut satırı shell bash

Microsoft'a güçlü bir komut satırı için açık mektup

Steve Ballmer zamanında “sözde”, Satya Nadella ile birlikte ise kısa zamanda “özde” geliştirici dostu olan Microsoft’a açık mektubumdur.

Öncelikle hayatımda profesyonel olarak kazandığım gelirin büyük çoğunluğu Microsoft teknolojileri üzerinden oldu, 1997 yılından bu yana Microsoft teknolojilerini kullanarak yazılım geliştiriyorum. “Microsoft yazılımcısı” olduğum kadar, son 5-6 senelik yükselen trendlerle birlikte Linux – Özgür Yazılım cephesinde de yazılım geliştirme fırsatım oldu. Ve eminim tek alanla kısıtlı kalmayan, birden fazla platforma hakim olan tek yazılımcı değilim.

Microsoft şu ana dek kendi dünyası dışındaki araçların çoğunu “port” etti. .NET oldukça güçlü bir oluşumdu ve eğer eksik olduğu bir cephe oluşursa anında kendi alternatifini oluşturuyordu. Hibernate yerine NHibernate, GitHub yerine CodePlex, PIP/NPM yerine NuGet, Make yerine MSBuild, StyleCop, NUnit, Entity Framework vb. Bunlardan bazıları benim nezlimde sınıfta kalmış, bazıları ise güçlü birer araç olarak halen varlığını korumaktadır.

Uzun süredir ASP.NET yazarken bile Grunt’dan, NPM’den, PhantomJs’den yardım alırdım ama bu araçlar Microsoft platformları için üvey evlatlardı. Fakat şu sıralar ASP.NET MVC, Azure ve son olarak VS 2013 ile bir şeylerin değiştiğini hissedebiliyorum. Yalnızca Microsoft’un geliştirdiği değil, community’den gelen, community’nin desteklediği araçlar da kendine .NET ve Microsoft ekosisteminde yer bulabilmeye başladılar.

Fakat ne yazık ki Windows halen bir geliştirici için çağın gereksinimlerini karşılayabilen bir platform değil. Yanlış anlaşılma olmasın, Windows inanılmaz olgun bir sistem, bir çok avantaja sahip fakat “eksik”. Ben bu eksikler arasından bana göre en kritik olanına, komut satırına odaklanmak istiyorum.

“Madem Microsoft ASP.NET vNext açılımını yapacak kadar olgunlaştı, neden yazılımcılar için daha fazlası olmasın?” motivasyonu ile Windows 10’un bir milat olmasını beklerken, ben kendi bulabildiğim eksikleri saymaya çalışacağım.

Güçlü Komut Satırı:
Öncelikle bana lütfen PowerShell demeyin. PowerShell’e işiniz düşmediği sürece PowerShell kullanmazsınız, ben şahsen yolunu bile bilmiyorum. İşletim sisteminin kendi shell’ini esas alıyorum. Windows 10’da ilk kez komut satırı için bir geliştirme gelecek yıllar sonra, o da copy-paste tuşları. Komut satırında her şeyden önce bash kadar yetenekli olmalı. Neden “echo `ls`” gibi bir komut veremiyorum? Neden aliaslar yok?

Komut Satırı Renk Kodları:
16’lık ANSI renk kodları ben Quick Basic kullanırken yeterli idi. Fakat 88/256’ın şu anda geçerli olması gereken standart olduğuna inanıyorum.

GNU Araçları:
Şu anda GNU araçlarını haricen Windows’a kurup çalıştırabiliyorum. Oysa ki bunlar işletim sistemi ile birlikte gelebilir. İnsanlar type, find, mklink gibi komutları ezbere bilmiyorlar ama cat, grep, ln bir çok kişi tarafından halihazırda benimsenmiş durumda. Ayrıca ssh, curl gibi şu anda komut satırında yararlanılamayan araçlar da bir takım yazılımların dağıtılmasında anahtar görevi görüyor.

Örnek:

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Paket Yöneticisi:
“Git” kurmak istiyorum. Ve bunu yalnızca komut satırından çalıştıracağım. Bunun için msysgit kurmak durumunda kalıyorum. Oysa ki Debian’da olsam “apt-get install git” yazdıktan sonra git kullanabilir hale gelecektim.

Path Ayracı:
Dosya pathleri için “/” ayracı artık Windows-dışı sistemlerde bir standart. Windows bir noktaya kadar pathleri “/” ile kullandığımızda bir çevirim gerçekleştiriyor. Fakat bunun Windows için de standart olması ne kaybettirir? /media/c/Program Files/ benzeri bir yapı belki Linux’un avantajlarından biri olan dizin-seviyesi partition desteği için ilk adım olabilir.

CMD.EXE yerine Bash:
Çok radikal bir fikir olmasa Windows da bash kullansın diyebilirdim. Geriye dönük uyumluluk için CMD.EXE kalmaya devam eder, geliştirilmeye devam eden bash ise bir port olarak Windows’un komut arayüzü olurdu. Böylece shell scriptler de destekleniyor olurdu. Ama bunun yakın gelecekte olmasının mucize olduğunu düşünüyorum.

Benim tespitlerim bu kadar.

Yazılımcılar olarak bir çok araç kullanıyor ve yazıyoruz. Bu araçların kullanılması için komut satırı genelde önem arz ediyor. Modern web frameworkleri komut satırından vazgeçmeyi bırakalım, tamamiyle komut satırı kullanımına yönelmiş durumdalar. Bu araçları yazanlar Linux ve OS X için ortak komut yazabiliyorken uyumsuzluk çıkaran Windows için bu komutları yazmaya tenezzül dahi etmiyorlar.

Maddeleri “uygulanabilir”den “fantezi”ye doğru sıralamaya özen gösterdim. Bir gün işin Windows tarafında da kendimi “eksik hissetmeyeceğim” günü iple çekiyorum.

  • LinkedIn
  • Tumblr
  • Reddit
  • Pocket
Comments powered by Disqus