我想从头开始学习如何编程。我遇到了一个基于JavaScript的在线初学者课程,看起来做得非常好。然而,我的一个朋友劝我不要参加这门课程,认为我应该从Visual Basic或C#开始。他的理由是JavaScript显然不会强迫你遵守高标准的编程最佳实践(它可以让你侥幸逃脱),因此它可能会导致初学者养成糟糕的编程习惯。你同意吗?这真的是一个大问题吗?你不能从JavaScript开始,然后添加一个需要更严格的低级语言吗?提前感谢您的建议!
答案 0 :(得分:9)
JavaScript是我最喜欢的编程语言,但它可能是开始学习的最差编程语言之一。每个角落都有隐藏的细微差别。例如,可以用四种不同的方式调用函数(最后两个被组合在一起),每个函数都会影响this
将等于
foo(); //this = global object or undefined in strict mode
obj.foo(); //this = obj
new Foo(); //this = object inheriting from Foo's prototype
foo.call(lala, 12, 3);
foo.apply(lala, [12, 3]); //this = lala
然后有一个事实,虽然它不支持类,但它确实希望开发人员认为它确实如此:
var p = new Person(); //Person's a class, right?
当创建对象时,你有很多选择可供选择:
function Person(name){
this.name = name;
}
var p = new Person("Adam");
var p = { name: "Adam" };
function createPerson(name){
var that = {};
that.name = name;
return that;
}
var p = createPerson("Adam");
当然,继承将完全不同,具体取决于您选择的上述哪一项。
将所有这些与功能范围相结合,没有编译器指出明显的错误,分号插入创建错误,我强烈建议您从更传统的语言开始,如C#或Java的。
答案 1 :(得分:3)
这是一个非常主观的问题,因此取决于你最终目标是什么。如果你想成为一名JavaScript程序员,那么学习JavaScript是正确的。如果你想成为Windows应用程序程序员,那就不那么重要了。
总的来说,我会先说出这个意见......我会首先学习真正的编程语言。我也会尝试找到一个对您有用的应用程序,无论是网站还是Windows应用程序。如果你真正使用最终结果,你会更有动力,因此会学得更好。你也会考虑可用性问题,因为你真的想要使用它。当你做一些运动时,你可能不会那么努力。
答案 2 :(得分:2)
JavaScript和Visual Basic 似乎很容易初学者,因此初学者经常开始相信他们可以自己教而没有任何指南或参考,因此他们选择了各种各样的坏习惯,同时完全没有意识到各种相对基本的编程概念。
在你的情况下,这应该不是问题,因为你已经在考虑学习并遵循良好的编程习惯。您已经确定了一个您打算认真学习的JS课程(假设您使用JS)。您了解Stack Overflow,因此您可以随时获得有关特定问题的帮助。在此基础上,我认为从JavaScript开始是合理的。
(尽管如此,Java或C#也是不错的选择。)
我建议您发布您已确定的课程的网址:您可能会对该课程或其他一些课程建议有所了解。对于一个免费的在线课程,这个看起来很不错:http://eloquentjavascript.net/(我说“似乎”因为我只阅读了它的一些内容。)
如果您继续使用JavaScript,请查看使用http://jshint.com或http://jslint.com - 这两种工具都旨在检查您的代码并执行一些良好做法(如果您不这样做则会抱怨)。
答案 3 :(得分:1)
嗯,这是我个人开始的,我想我写的是非常好的Visual Basic .NET。 JavaScript的松散标准并非真正“松散” - 它们只是另一种思维方式。你很可能会觉得它更方便,但它不会教你以错误的方式做事; “更严格”的语言将迫使您遵守标准,因此您不能仅仅因为您从JavaScript开始就在这种意义上编写错误的代码。
尽管如此,确实有很多方法可以编写可怕的 JavaScript,而不是编写糟糕的VB.NET的方法。所以要小心你遵循的教程。 Stack Overflow上的人员通常也会在编码标准方面指出正确的方向:)
答案 4 :(得分:1)
(免责声明:此帖包含个人意见和拖钓尝试)
Edsger Dijkstra曾经说过:
几乎不可能向曾经接触过BASIC的学生传授优秀的程序设计:作为潜在的程序员,他们在精神上被肢解,超出了再生的希望。
我认为,对于Visual Basic来说仍然如此,只是后果更严重: - )
虽然我的第一语言是C ++,但我认为如果它是动态语言(Ruby,Lisp,Python或类似语言),我会成为更好的程序员。当然,他们对你的限制较少,但允许更多的可能性和更清晰的代码!
当我回想起当时我必须迭代收藏品时,不得不创建大量的单服务仿函数,我真的很高兴现在我不必再这样做了: - )
我建议从Ruby开始。它结合了“经典”OOP和动态语言的强大功能,以及功能语言的许多功能。它也非常通用:您可以使用它编写Web应用程序,桌面应用程序和命令行工具。大量的图书馆等
我听说Python也很好。
答案 5 :(得分:1)
有很多方法可以编写可怕的JavaScript 例如,编写可怕的VB.NET的方法。
是的 - 而且还有很多方法来编写 SO 的C ++,甚至 REALIZE 你的代码都是一个滴答作响的定时炸弹。
如果有任何“第一语言的最差选择”,我个人投票给C ++。放下手语作为“任何初学者的最差语言”。因为在你甚至可以做任何安全程度的简单事情之前,你必须学到很多东西。
如果您对开发Web应用程序,移动应用程序,动态网页或与网页设计或开发有关的任何事情感兴趣,那么了解Javascript是不可或缺的。
仅凭这个原因,我认为Javascript不仅是一种可接受的“第一语言”,它可以说是一种理想的第一语言。
此外,Javascript本身就是一种非常强大,非常有趣的语言。
我强烈建议你复印这本短篇小说:
它不会教你如何编写Javascript(任何数量的网络教程都可以帮助你)。但它将帮助您将Javascript置于一个完全不同的角度。
... IMHO
PS: 如果我必须提供“最好的第一语言”,我不得不说Java。亚军:Python或Ruby。
答案 6 :(得分:1)
我同意你的朋友。如果你真的想在未来成为一名优秀的程序员,我会建议像Python或Java这样的语言。最新版本的Python使用了最佳实践。