gpt4 book ai didi

language-agnostic - 现代软件开发抽象的含义

转载 作者:行者123 更新时间:2023-12-01 04:19:02 25 4
gpt4 key购买 nike

关闭。这个问题需要更多 focused .它目前不接受答案。












想改进这个问题?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。




Improve this question




我目前正在撰写一篇关于当今软件开发实践或教学可能对编程的长期影响产生的影响或危险的论文。

只是说清楚:我不是在攻击编程中的使用抽象 .每个程序员都知道抽象是模块化的基础。

我想用这篇论文研究的是抽象在软件开发中可能产生的积极和消极影响。至于积极的方面,我相信我可以找到许多可以证实这一点的来源。但是抽象的负面影响呢?当某些抽象在你身上失败时,你有什么故事可以分享吗?

主要担心的是,今天的许多程序员都在针对抽象进行编程,而对抽象在幕后所做的事情一无所知。这很可能会导致错误和糟糕的设计。那么,在您看来,程序员真正了解抽象之下的内容有多重要?

Joel's Back to Basics 中的一个简单示例为例,C的strcat:

void strcat( char* dest, char* src )
{
while (*dest) dest++;
while (*dest++ = *src++);
}

上面的函数存在一个问题,如果你在做字符串连接,函数总是从 dest 指针的开头开始寻找空终止符,而如果你这样编写函数,你将返回一个指向哪里的指针连接字符串是,这反过来又允许您将此新指针作为 *dest 参数传递给连接函数:
char* mystrcat( char* dest, char* src )
{
while (*dest) dest++;
while (*dest++ = *src++);
return --dest;
}

现在这对于抽象来说显然是一个非常简单的概念,但这是我将要研究的同一个概念。

最后,您如何看待学校更喜欢教 Java 而不是 C 和 Lisp 的问题?

你能就这个问题发表你的意见和看法吗?

感谢您的宝贵时间,我感谢您的每一条评论。

最佳答案

首先,抽象是不可避免的,因为它们帮助我们处理事物的复杂性。

抽象也是不可避免的,因为个人越来越需要承担更多的任务甚至完成项目。为了解决这个问题,人们使用了包含较低级别概念并公开更复杂行为的库。

自然,开发人员了解事物内在本质的时间越来越少。我在 SO 页面上听到的最新消息是开始使用 jQuery 库学习 JavaScript,完全忽略了原始 JavaScript。

问题在于以下之间的平衡:

  • 了解某些技术的最细微的细节并成为它的主人,但同时无法使用其他任何东西。
  • 对各种技术和工具的肤浅知识,但事实证明足以完成常见的日常任务,这允许个人在多个领域执行,可能涵盖某些(中等规模)项目的所有方面。

  • 任你选。

    有些工作需要一个,另一个职位需要另一个。

    So, in you're opinion, how important is it that programmers actually know what is going below the abstractions?



    如果人们知道幕后发生的事情,那就太好了。在一定程度上,这种知识是随着时间和实践而来的。取决于你有什么样的任务。你当然不应该责怪人们不知道一切。如果你希望一个人能够在各种领域中发挥作用,他不可避免地没有时间把每一个都覆盖到最后。

    重要的是基本构建 block 的知识。数据结构、算法、复杂性。这应该为其他一切提供基础。

    了解某些特定技术的最细微的细节是好的,但不是必需的。无论如何,你不能把它们都学完。他们太多了,而且还在不断涌现。

    Finally, what do you think about the issue that schools are preferring to teach Java instead of C and Lisp ?



    学校根本不应该教授编程语言。他们将教授理论和实践 CS、社交技能、沟通、团队合作的基础知识。涵盖各种各样的主题和问题,为他们的毕业生提供广阔的视角。这将帮助他们找到自己的方式。无论他们需要详细了解什么,他们都会自己做。

    关于language-agnostic - 现代软件开发抽象的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2593779/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com