我正在做关于NP-Hard问题的论文项目:我将针对诸如分区,子集和,背包等问题实现各种算法,然后比较结果,运行时间等。 ,我将看到修改问题时算法会发生什么(算法如何在减少的问题上表现等)。
现在我选择这个主题作为我的项目,因为我对理论计算机科学感兴趣,但我也不确定我是否想继续担任学术/研究员或加入公司/创业公司,这个项目既有理论又有实用(实际编码)方面。
我的问题是,我应该使用哪种编程语言?我应该坚持使用我认为比较熟悉的东西(Java和Python),还是应该使用网络语言(HTML,CSS,PHP,RoR等),还记得现在网络开发技术的需求量很大吗?
编辑: HTML和CSS显然只用于用户界面。
我希望我的项目能够在面试中获得成功(无论是工作还是硕士课程),而且我不相信“Java中的另一个项目”可以做到这一点。我明白,只要它的工作是好的,结果是令人满意的,我应该没问题,但是,如果,使用Ruby,可以给我一些我完全可以接受的观点。同时,我理解决定使用哪种语言是项目的一部分,所以我不愿意让事情变得简单,只是为了试着看起来很酷。
提前致谢!
编辑:如果这改变了任何答案,这就是本科生。学位论文项目,而不是博士学位。
答案 0 :(得分:5)
如果您的项目主题令人印象深刻,那么没有人会关心它所使用的语言。用您认为适合该任务的语言来做。知道如何做出适当的语言选择并捍卫这个选择应该比“OMG我使用RoR XSL ActionScript CSS !!!”更令人印象深刻。
此外,预计此项目需要多长时间?如果你选择一种华而不实的语言,你知道这个项目结束时它仍然会很酷吗?只是用另一种方式说,流行度不是选择这种语言的原因。
答案 1 :(得分:5)
首先,这是一个主观问题,不完全适合SO,但我们原谅你:)
与此处的流行观点相反(查看之前的答案),如果您正在尝试解决NP-Hard问题,我会绝对不用C或C ++编写程序。主要是因为动态编程方法在用低级语言编写时往往看起来像绝对的狗粪便。例如,这是某人对背包问题的动态编程解决方案:http://www.joshuarobinson.net/docs/knapsack.html。
它写得很好,形式良好,但由于你需要做大量的malloc
,memcpy
和free
,因此几乎无法读取。使用Java或Python,毫无疑问。你希望人们真正阅读(甚至可能享受?)你的论文,我认为。
不要用PHP或Ruby编写,因为这些语言并不特别适用于计算机科学理论。话虽如此,如果你正在申请网络开发工作,并且你试图用背包问题或动态编程NP-Hard求解器给你未来的员工留下深刻印象,那就像用炮弹射击一只麻雀。
答案 2 :(得分:1)
如果你可以投入精力和时间,那么我推荐使用c / c ++。这将是一个令人印象深刻的附加技能。
答案 3 :(得分:0)
我的偏好语言是Python。你可以使用Django,在我看来,它非常适用于业内正在进行的事情(特别是初创公司)。另外,在可读性和开发速度方面,你无法击败Python。
答案 4 :(得分:0)
我原本以为Python会做太多聪明的东西,以便能够准确地测量相对性能。
使用像C这样的低级语言不是更好吗?雇主会因为使用某种东西而更加尊重你,因为它很“酷”。
答案 5 :(得分:0)
你认识的语言对我来说很好。旧的看法是CS博士无论如何都让你失业,所以我不担心。 : - )
您提到的其他内容大多是专门的网络演示语言。我不确定如何使用CSS实现背包问题...
答案 6 :(得分:0)
嗯,尽管在网页上可能看起来很好,但在我看来,Java可以更好地完成你需要的工作。
PHP,HTML和CSS知识有助于找工作,但不太适用于您选择的主题。
另外,我注意到了一堆答案,所以我想这是一个与个人品味和观点非常相关的问题。嗯......无论如何你要求了它;)
答案 7 :(得分:0)