Hocam öncelikle cevap yazdığınız için teşekkür ederim. Şuanda aslında hiç bir dil tamamen bırakılmaz bunun bilincindeyim. Her dil ihtiyac doğrultusunda ve bilgimiz doğrultusunda kullanılıyor. Sadece node.js 'in cezbeden tarafı npm sayesinde bazı şeyleri daha çabuk hallediyor oluşumuz. Birde gelişen çağa ayak uydurmak. Tabi ki projelerde ihtiyaç doğrultusunda birden fazla dil kullanılmasından yanayım. Örneğin ben üniversite bitirme projemde bir 3-4 farklı akıllı kart bunların içinde c , ve python kullanmıştım. Webservis için php mobil uygulamasını 'da java ile yazmıştım. Hiç bir dil tamamen bırakılmaz aslında ama dediğiniz gibi ilgi çekici tarafı all-in-one oluşu ve diğer kütüphanelerine iot cihazların için olsa bile kolay adapte olacağım, biraz daha eğlenceli bir kod yazacakmışım gibi bir düşünce var içimde. Şuanda araştırma aşamasındayım. Node.js 'in iyi ve kötü yönlerini ne işlemleri için kullanılmalı gibi. Örneğin şeyi hala kafama otutturamadım php 'de biz en ufak bir post işlemi için bile o sayfa içinde bu işlemi alıp html in üzerinde işlem yaptırabiliyorduk. Fakat node.js 'te nasıl sürekli app.js 'e mi göndereceğiz ? Tüm kodlar orada mı toplanacak. Örneğin php ile proje oluştururken helper klasörü, class,inc klasörü gibi klasörlerde topluyordum kodlarımı ve html 'den ayrı tutuyordum sonrasında da ulaşmam kolay oluyordu php kodlarıma ve neyi nerede yaptığımı bile sonrasında revize etmem gerektiğinde çözebiliyordum.
Bunu node.js 'te araştırdığımda hala göremedim. Birde araştırmalarıma göre golang 'ın daha hızlı olduğunu söylüyordu bir sayfa. Şuan node.js içinde kafam aslında bayağı karışık hocam mantığını oturtamadığımı söyleyebilirim. Bir kaç proje örneğine bakacağım bugün yapısı ne şekilde işliyor nedir diye.Tabi ki bir yandan node.js öğrenirken php ile hali hazırda olan projelerimi kodlamaya devam edeceğim değirmenin dönmesi için. Zaten bir kez bir dile aşina olduktan sonrasında bana diğer dilleri öğrenmek kolay gibi geliyor geçiş yapabiliyoruz. Tabi birde kafamı karıştıran zaman yapısız olması ve kodların belirli bir sıraya göre işlememesiymiş node js tarafında. PHP 'de sonuç olarak kodlar yukarıdan aşağıya doğru çalışıyor ve diğer bir çok dilde c# olsun vs. vs. . Webservis için üniversite bitirmem projem zamanında node.js 'e bakıp 1-2 gün geçirip yapamayıp tekrar php 'ye dönmüştüm zaman kaybetmemek için ama bence bir girilip dile bakınılmalı içerisini biraz kurcalamalı daha sonrasında otomatik olarak zaten bizim için hangi dilin iyi olduğuna karar vereceğiz. Bir dili yazarken keyif aldıktan sonrasında hepsi otomatikman oluyor zaten hocam.
Tekrar merhaba,
nodejs'in npm'i varsa php'nin composer'ı var

Belki npm kadar büyük değildir (çünkü npm içinde frontend kütüphanelerde mevcut) ama çok özel olmadıkça bulamayacanız kütüphanenin olduğunu sanmıyorum, nodejs'de php'de çağın dışında diller değiller ki bugün hala c ve c++ yoğunlukla kullanılıyor, hatta fortran bile. Eğlence kısmı tamamen size kalmış ama söylediklerim yanlış anlaşılmasın, diyelim ki; bir mobil uygulama yazıyorsunuz bunun frontend kısmını (uygulama tarafını) tabi ki reactnative ya da flutter ile yazmak daha mantıklı ancak arkaplanda kullandığınız nodejs uygulamanızın her ihtiyacına efektif şekilde cevap verebilecek mi bunu sorgulamak lazım, yani demek istediğim microservice birden farklı platformda başka diller ile yazılmış katmanlar değil (ki bunu da kapsar ancak örneğiniz üzerinden gidiyorum), mesela webservis için yazdığınız java'ya ek özellik eklemeniz gerekti.
Örnek olarak kartların kullanım sıklığına bağlı olarak sunucuyu rescale etmeniz gerekiyor, 20:00 ile 08:00 arasında hiç kart kullanılmıyor, 08:01 ile 11:00 arasında kartların dakika başı kullanım oranı 0.75, 11:01 ile 12:30 arasında yine kart kullanımı yok, 12:31 ile 16:00 arasında kartların kullanım oranı 2.75, 16:01 ile 19:59 arasında kullanım tekrar 1'e düşüyor. Hatta burada haftanın günleri de bir kriter olarak kullanılabilir.
Bu bilgiyi yalnızca istatistik tutmak için göstereceksiniz ve gerek mobil uygulamanızda gerekse kartlar üzerinde hiçbir etkisi olmayacak, dolayısıyla bilgiyi işleyip veritabanınızda tutacaksınız ve gerekli zamanlarda bu bilgiyi sunucunuzu rescale etmek için kullanacaksınız. Bunu java üzerinde yapmanız performansı ve doğal olarak sunucu masraflarınızı gereğinden yukarıda tutacaktır, ben olsam (ki ben olsam bunu kesinlikle java ile yazmazdım) gerekli olan bu algoritmayı genel amaçlı dillerden daha çok matematiksel yönüyle öne çıkmış bir dil üzerinde yazar, java kısmında da kullanım bilgisini bu yazacağım microservice'e aktaracak bir arayüz yapardım ya da d-bus kullanırdım. Böylelikle java uygulamam üzerinde yoğun değişiklik yapmamış olacağım, yani programım hala yapması gerekenden daha fazlasına sahip olmamış olacak (basitliğini koruyacak) ve işlem javada çalışacağından daha hızlı şekilde istediğim işleri yapacak. hiç kart kullanılmayan zamanlarda sunucumu minimum pakete çekeceğim, kullanım olduğu zamanlarda ise sunucumu tekrar yeteceği seviyedeki pakete çekeceğim, böylelikle gereksiz masrafın önüne geçmiş olacağım.
Özet olarak bir program içindeki bağımlı ya da bağımsız bir işlevi gerçekleştirmek için amacına uygun seçtiğim dil ile yazdığım programın, ana program üzerindeki herhangi bir parçasında çalıştırmadan veriyi bu yazdığım servise yönlendirdim. Aslında gündelik programlarda olan da bu, bir webserver'ınız var, bir de veritabanınız, ikisi aynı dil ile de yazılmış olabilir ya da farklı dillerle yazılmıştır, sizin yaptığınız sadece arada veri akışını sağlamak, iki servis de birbirinden bağımsız (veri akışını kastetmiyorum) çalışıyor. Webserver'da hata olması durumunda veritabanınız durmuyor, vs. vs. Micro-service mimarisini buna benzetebilirsiniz.
PHP'de inline kod kullanımı konusuna gelecek olursak, php include ve require fonksiyonları ile hedef gösterdiğiniz dosyayı aslında pre-processing kısmında yazılımınızın içine dahil ediyor, nodejs'de bu durum farklı ama aynı şekilde kullanmak isterseniz fs.readfile ile program içine html'inizi dahil edebilirsiniz, php'deki gibi inline kod çalıştırmanıza izin verir mi emin değilim ancak madem çağa ayak uydurmaktan bahsetiyoruz o zaman ihtiyacınız olan template parser'dir, hem güvenlik hem de karmaşayı önlemek için template dosyalarınızı bir yerde, programınızı farklı bir yerde tutarsınız, gerektiği zaman programınız içinden bu dosyayı parse edip veriyi belirtirsiniz. Mantığı basittir, template dosyası içinde belirttiğiniz bir stringi ( örneğin: {{deger}} ), program kısmında gönderdiğiniz değişkenin processed değeri ile değiştirir (örneğin: const degisken = 'Merhaba Dünya!' ), gönderirken de neyin ne ile değişeceğini belirtirsiniz ( view.render('dosyam.html', {deger: degisken}) ), yani bul ve değiştir uygular.
POST methodu hakkındaki sorunuza da şöyle bir cevap vereyim; post methodu ile gönderilen bir veriyi doğrudan javascript ile elde etmeniz mümkün değil, bunun için bir http handleriniz olması gerekli, ki php de bunu yapamaz, php'de veriyi yakalamak için webserver'a istek atılır, webserver http isteğini işleyip bunu php'ye gönderir, phpde işleminizi yapıp tekrar webserver'a isteğe gönderilecek cevabı belirtirsiniz, webserver'da kullanıcının tarayıcısına bu cevabı yansıtır.
Evet golang daha hızlı, çünkü golang derlenen bir dil.
Hayır nodejs'de de diğer diller gibi kodunuz sol üstten, sağ alta doğru işlenir, bahsettiğiniz durum tamamen asenkron çalışan callback'lerden ibaret, 'asynchronous programming in nodejs' şeklinde arama yaparak detaylı bilgi edinebilirsiniz.
Pratik bilginiz ne derece bilmiyorum ancak
kesinlikle teorik bilgiye aç durumdasınız, bitirme projenizden anladığım bilgisayar mühendisliği yeni mezunusunuz. Aslında bu bilgileri size okulda vermiş olmaları gerekiyor, eğer ingilizceniz varsa (ki bu mesleği yapacaksanız olmak zorunda) sorularınızın terabyte'larca cevabı internette mevcut, 'how http works' yazsanız ve ilk sıradaki sayfalara tıklasanız bile çok detaylı şekilde bilgilenebilirsiniz. Benim size tavsiyem gerçekten bu işi yapmak ve kariyerinizde iyi yerlere gelmek istiyorsanız her şeyden önce teorik bilgi açlığınızı gidermeniz, diğer türlü bir şeyleri ezberlemiş, forumlardan iş alan, bazen yapabilen bazen yapamayan, belki Türkiye şartlarında iyi sayılabilecek asgari ücretin üstünde geliri olan ancak sektörde kimsenin tanımadığı, hiçbir büyük başarıma imza atamamış biri olarak hayatınızı bitirirsiniz. Bu yazdıklarımı lütfen yanlış anlamayın, sizi tanımıyorum, hiçbirini aşağılamak, yargılamak ya da çok bilmişlik taslamak için yazmadım ama hayatın gerçekleri bunlar, birinin çıkıp bunları söylemesi gerekiyor ki bu forum yazılımcı olmak istiyorum konularının altına 'kesinlikle okula gitmeyin', 'okul vakit kaybı' vs yazan insanlarla dolu ancak teorik bilgiyi okul dışında edinmeniz gerçekten zor, her şeyi kendiniz öğrenmek ve anlamak zorundasınız, okuldaki gibi yardım olacağınız kimse olmayacak.
Biraz uzunca oldu ama umarım size ve kendini geliştirmek isteyen arkadaşlara faydalı olur.