misiek1928 - jak Ty chcesz pisać aplikacje webowe w C++? Używając CGI? Ambitny jesteś. Ale nie będę trzymał kciuków - nie mam na to całego życia 
Java jest łatwiejsza od C++ - nie musisz zajmować się obsługą pamięci, nie masz nawet możliwości używania wskaźników, wszystko dzieje się automatycznie. 5 razy mniej pisania i błędów, ale mniejsza wydajność.
Co do Twoich pytań o .NET dla Linux - to się nazywa Mono (http://www.mono-project.com/Main_Page) i jest prowadzone przez Novella (w cichej współpracy z M$, o której nikt nie wie). M$ nie daje oficjalnego wsparcia dla Linuksów z prostej przyczyny - różnych dystrybucji (a przecież różnią się one między sobą) jest tyle, że nie podołaliby ze wsparciem technicznym dla nich, więc nie mogą dać go oficjalnie.
Wracając do tematu - na początek dwa truizmy:
-
W każdym języku można napisać dobry i zły kod, to zależy tylko i wyłącznie od umiejętności piszącego.
-
W każdym technologii można zrobić wydajną i niewydajną aplikację, to zależy tylko i wyłącznie od umiejętności piszącego.
Jedne technologie bardziej ułatwiają tworzenie, inne mniej. Ale zawsze ważniejszy jest projekt, niż implementacja. Dlatego też zalecałbym nauczyć się programowania obiektowego i używać wzorców projektowych. Pierwszym, jaki nasuwa się, gdy mówimy o aplikacjach webowych jest oczywiście MVC, zapewniający elastyczność, łatwość wprowadzania zmian, rozdzielenie warstw aplikacji odpowiedzialnych za wyświetlanie informacji, obsługę żądań użytkowników, logikę biznesową (która obejmuje obsługę baz danych i takie rzeczy jak np. walidacja wprowadzanych przez użytkowników danych).
Co do PHP - jest prosty. IMHO zbyt prosty, przez co pozwala tworzyć śmieciowy kod, w którym wszystko jest pomieszane. Na dodatek nie jest obiektowy (nie w pełni - jakby ktoś nie rozumiał słowa “obiektowy”), więc tym bardziej pozwala na tworzenie głupot. Przykład tego miałem kilka dni temu, gdy pomagałem komuś przerabiać ogromne formularze (po 15 tys. linii kodu w jednym pliku!), w których wymieszane było wyświetlanie danych, operacje programowe, walidacja danych, reguły biznesowe, korzystanie z bazy danych, formularze dodawania i edycji danych, nawet style dla elementów… I oczywiście zero obiektów… Po prostu syf, jakich mało.
Jasne, że nie każdy tak tworzy, ale z tego, co zauważyłem, to na 100 osób programujących w PHP, może 5 jest programistami. Reszta nie jest w stanie wyjść mentalnie poza klepanie instrukcji PHP pomieszanych z kodem HTML i jednocześnie stylami. No bo po co? Przecież działa, więc jest dobre. Co z tego, że znalezienie najprostszego błędu trwa wieki, a w przyszłości zamiast przerobić istniejący kod łatwiej będzie napisać od nowa, bo tego syfu nikt nie zrozumie.
A przecież (z tego co wiem) jest tyle fajnych frameworków do PHP. No, ale pewno do ich użycia trzeba programować obiektowo, a to wielu boli 
Inne zalety to popularność - nie ma co kryć, że jest najpopularniejszy i najwięcej ofert pracy jest właśnie z nim związany oraz w pełni darmowy.
Co do niedobrego M$… Kiedyś (chyba z 11 lat temu) wypuścili system operacyjny, który rzucał bluescreenami nawet po wyjęciu używanej aktualnie płyty z napędu :D… To nie było dobre, ale było jakąś tam cegiełką w ogólnoświatowym rozwoju branży i społeczeństwa informacyjnego. Od tamtej pory jest znacznie lepiej, ale niektórzy nie zauważają tych zmian i dalej na nich psioczą - jakby to miało jakiś większy sens i znaczenie.
Fakty są takie, że IIS jest drugim co do popularności serwerem WWW na świecie. Wiele firm korzysta z technologi ASP.NET (chociażby Dell, MySpace, Lego ;)) a przecież większość aplikacji tworzonych w ASP.NET jest tworzona na potrzeby wewnętrzne firm. Wiele z nich nawet nie spojrzy na darmowe rozwiązania, bo nie gwarantują wsparcia, więc prezesowie uznają, że nie ma sensu się w to pchać. Pamiętajmy, że dla dużej korporacji nie ma znaczenia, czy zapłaci parę groszy (bo dla takiej to grosze) za serwer czy nie, dla nich się liczą efekty i wsparcie. Poza tym sprzęt jest tańszy niż czas pracy specjalistów, więc system, który można zaimplementować prościej i szybciej jest tańszy niż ten “darmowy” wymagający więcej roboty - to rzecz jasna dotyczy wszystkich technologii.
Parę zalet ASP.NET:
-
Jest to .NET, więc mamy dostęp do ogromnej biblioteki klas i technologii zawartych we frameworku - takich jak obsługa baz danych (nie tylko M$, jak niektórym się wydaje), bajery typu LINQ to SQL, który pozwala na szybkie tworzenie klas - odpowiedników bazodanowych encji (wystarczy jedno przeciągnięcie z toolboxa i mamy możliwość pobierania, dodawania, edycji i usuwania rekordów z bazy, znacznie szybsze niż pisanie ręcznych zapytań, a wcale nie mniej wydajne), i wiele innych…
-
Ajax Toolkit - i wiele gotowych kontrolek Ajaxowych, które można używać na swoich stronach, a które dają fajne efekty - na upartego można stworzyć aplikację, która zupełnie nie wymaga przeładowywania strony, więc zachowuje się prawie jak desktopowa (rzecz jasna Ajaxa można używać w każdej technologii, akurat tutaj wiem, że jest to banalne).
-
MVC Framework - wsparcie dla wzorca o którym wspomniałem - a który pozwala na tworzenie stron lżejszych niż standardowe WebForms i dający większą kontrolę programiście (oraz wszystkie zalety wzorca). Ale tego typu frameworki istnieją chyba dla wszystkich języków.
-
Piszesz w C#, więc później łatwo CI przesiąść się na tworzenie innego typu aplikacji w tym języku - desktopowych, rozproszonych, WinForms, WPF, także animacji Silverlight na strony… Łatwo tez poznać Javę, która różni się w zasadzie niewiele (co prawda na niekorzyść, ale zawsze :P).
-
WebForms - co prawda dają cięższe strony niż te tworzone w MVC, ale za to masz wiele gotowych kontrolek pozwalających na stworzenie całej witryny jedynie przeciągając i konfigurując kontrolki z toolboxa. Chociaż to nieraz daje takie same efekty jak prostota PHP, o której wspomniałem i wychodzi syf bez ładu i składu, dlatego ich nie lubię.
Co do rzekomego braku kompatybilności - aplikacje webowe od użytkownika wymagają jedynie łącza internetowego i przeglądarki. Z jego punktu widzenia nie ważne przecież jest, na jakim systemie operacyjnym stoi serwer WWW, skoro on go nawet nigdy na oczy nie widzi.
Tak więc jedyny brak kompatybilności może występować przy wyświetlaniu stron w różnych przeglądarkach internetowych. IE6 wyświetla jak chce, inne przeglądarki prawie tak samo, ale to wszystko zależy od stylów. A te da się skopać w każdym języku, bo są one przecież niezależne. Jeśli ktoś myśli, że poprzeciąga elementy strony z toolboxa w VS i jego “wspaniała” strona będzie wyglądać tak samo w każdej przeglądarce, to może się zdziwić
No, ale cóż - jeśli ktoś wierzy w czary i inne krasnoludki, to ma ciężkie życie, normalny człowiek zdefiniuje wygląd strony ręcznie.
Reasumując - żeby stworzyć dobrą aplikację webową trzeba znać:
Do tego moim zdaniem:
A co do technologii - wszystko da się zrobić w PHP, w JSP, w ASP.NET, w Rubym, nawet w CGI. Pytanie tylko jakim kosztem. Sugerowałbym zrobić prostą aplikację w każdej z nich i potem wybrać tą, w której było najprzyjemniej 