Ein Trugschluß

Nur weil man ein paar Semester programmiert, heißt es lange nicht, dass man gut und effizient programmieren kann.
Ein Hobbyprogrammierer, der mehrere Jahre programmiert, muss nicht in der Lage sein, z.B. ein B*-Baum zu kennen, oder er kann nicht konkret erklären, was der genaue Unterschied zwischen einem Array und einer Arraylist ist, oder er schreibt Seitenweise Spaghetticodes, weil für ihn die ordentliche Strukturierung zu lange dauert.
Die Programmiersprachen unterscheiden sich auch nicht nur an der Syntax. Wie du schon selbst gesehen hast, gibt es auch da gravierende Unterschiede, wie z.B. ein nicht vorhandener Garbage Collector.
Außerdem ist Programmieren nur ein Bruchteil der Arbeit. Die meiste Zeit geht beim Analysieren und Zerlegen des Problems drauf. Das Implementieren ist nachher schnell erledigt. Wer aber nicht in der Lage ist, die Probleme in möglichst kleine Teilprobleme zu zerlegen, der wird es als Softwareentwickler schwer haben, auch wenn der die Sprache kennt.
...