不久前我决定学习C#,这是一种相当有益的经验,因为语言似乎很容易上手。
即,术语除外。并不是说有大量的行话(学习任何新的语言/技术) - 使用的术语似乎是笨拙,不清楚或不必要的复杂。与(比如说)IEnumerable集合相比,一个“数组”似乎很容易向某人解释,因为它只是名字。
但这超出了特定的语言/平台。请看下面的内容:
我理解这些并不是完全相同的术语,但“原始”术语似乎更合适,因此可以更容易解释或理解。
所以...已经采取了所有“好”的名字吗?
或者这些概念变得更加复杂,因此与日常语言相距甚远。这种趋势有反例吗? (显然有很多任务要简单得多,但这通常是外部库/ OS /等服务器程序员以前必须做的事情的结果,而不是更好地描述相同的工作)。
或者我完全错了,我的思想只是在小时候学习BASIC(根据Dijkstra)?
答案 0 :(得分:6)
每个知识领域都倾向于制定行话,以便可以讨论特定领域的概念,而不必过度使用用于表达这些概念的语言。
当我被教授数据建模时,强调开发一个好模型的关键是理解 - 文档是否有用 - 领域词汇。我当然认为这是真的,有一个好处是帮助我与系统用户联系,了解他们的困难,并看到没有通过语言更深入理解我不会看到的可能的解决方案。
如果你长时间呆在一个领域,这些单词就会像你的其他词汇一样熟悉,那么挑战就是保持正常的对话,而不是听起来像个极客。 ; - )
答案 1 :(得分:2)
这些词中的大部分都没有完全相同的含义。如果您采用函数vs.方法示例:
一个函数,据我所知,它是一个独立的东西,使用像C这样的命令式语言或与对象无关的JavaScript函数。
如果您使用术语方法,那么您已经暗示您使用的语言是面向对象的,并且您正在操作对象。
答案 2 :(得分:1)
这些术语在很多时候似乎令人困惑,因为它们旨在尽可能明确地描述语言特征。
例如,Error在语义上与Exception不同,因此我们需要使用不同的术语来描述它们。如果我们调用所有异常错误,您会用什么词来区分错误和IllegalArgumentException?
答案 3 :(得分:1)
或者我完全错了,我的思想只是在小时候学习BASIC(根据Dijkstra)?
是的,这可能是原因。
答案 4 :(得分:1)
程序员喜欢单词。我们得到了很多钱,把它们按正确的顺序排列,让“神奇”发生。因此,我们用痛苦的细节来描述我们所做的事情是很自然的。程序员通常意味着完全他们所说的话。
正如你所说,所有这些术语都不是完全同义词,它们各自意味着不同的东西。例如,“list”(对我来说)意味着一个链表,我可以在其中有重复的值。 “数组”意味着我不能有重复的值。其他语言人士在这里不同意我的意见,导致我们在沟通方面的想法相反:思想平等。
即使我说“平价”的事实也说明了这个问题。基本上这个词越模糊,其含义越精确。 “汽车”对几个人来说意味着几件事,但“副翼”意味着一件事。
我认为语言设计师和作者努力将他们可以使用的所有语义包含在他们的术语中,但它们并不是很模糊。
太多“超载”:)
答案 5 :(得分:0)
我认为这在很大程度上取决于开发社区。 p> 例如,PHP几乎没有术语。这可能是因为php社区有兴趣将页面添加到浏览器中,而不是考虑将“原创”内容放入其中。
Perl有它自己奇怪而又清晰的行话(“祝福这个对象”?),这可能反映了Larry Wall的清晰和古怪。
C ++和Java可能是“为车轮发明新单词”最严重的罪犯。 “坚持”可能是最糟糕的例子;我们真的需要另一个“写入文件”的术语。这可能是由于大量的Java / C ++ comminity成员试图为这些主题考虑“原创”主题而不是如何将页面发送到浏览器。