大模型时代,程序员的工作还是“写程序”?

过去,作为一名程序员的职责非常明确,具备对计算机和软件基本原理的掌握,至少掌握一门编程语言,了解若干流行的框架,编写和调试代码,确保应用程序正常运行,你就可以称为一名合格的程序员了。

然而,真正专业的“程序员”并不仅仅局限于这一点。

由于软件的长期维护特性和天生的复杂性,编写高效、高质量且易于长期维护的软件非常具有挑战性。因此,对于一名“软件工程师”来说,拥有诸如编写高内聚、低耦合的代码、掌握演进式设计等专业能力是尤为重要的要求。

坦率地说,现在的许多程序员未必能够达到成为“专业”程序员所需的水平。然而,由于软件行业对人才的需求非常大,所以并不过于在意他们是否非常专业。

大规模模型时代的到来可能会从根本上改变现状。程序员可以通过市面上的大模型工具在短短的几个月时间内就轻松地掌握了不同的前端框架(基于TypeScript),了解了机器学习算法,云原生基础设施,并学习了各种组件和框架的使用。语言、框架和基础设施的经验似乎已经不再那么重要了。全栈曾经是一个非常遥远的目标,今天已经变得非常容易实现。

随着大型模型时代的到来,程序员的工作效率也得到了本质的提高。以飞算SoFlu软件机器人推出的专注Java生成AI函数的FuncGPT(慧函数)为例,支持所有类型函数创建。通过自然语言描述Java函数需求,实时生成高质量、高可读性、拿来即用的Java函数代码。生成代码可直接复制到IDEA,或一键导入Java全自动开发工具函数库,满足程序员不同的使用场景。

像FuncGPT(慧函数)这类代码生成器的到来,让程序员从日常简单重复的“写代码”中抽离出来,原来需要花费 80% 的编码时间,交给 AI 工具来完成,解放自己能够更加专注于 20% 的工作,站在更高的角度思考诸如需求分析、技术设计等问题,从“程序员”变成“架构师”,从“写代码”变成“设计程序”,彻底释放每个开发者的创新潜能。。

那么大模型时代,什么才是“软件工程师”的真正能力?

1、 需求分析能力

需求分析其实从来就是一个极度重要的问题。需求分析从澄清业务目标、到设计需求方案,到明确业务规则,都需要非常结构化的方法。其中目标的定义和特定业务是目前AI无法解决的,也是一位优秀的产品经理的价值所在。大模型的出现,软件开发的生产力大幅上升,全栈已经可以不仅仅是技术域的全栈了,而是可以向前延伸到需求和业务领域的全栈。这也意味着如果你想成为一名优秀的开发工程师,那么你的机会来了!

2、 领域模型

领域模型作为软件开发领域非常关键但却最容易被忽略的。领域模型反映了一个领域中的关键概念及其之间的关系,是我们对现实世界的简化和思维映射,其实也是对布鲁克斯关于软件开发的本质复杂性的直接回应。没有好的领域模型,软件开发势必是混乱的。在大型模型时代,软件开发必然会加速,因此人类和AI需要有效协作。在这种情况下,利用领域模型将成为提高效率的重要因素。

3、 模块化、接口和契约

对于大规模程序,我们往往选择将复杂的问题分而治之。分解后的小问题具有高内聚低耦合特性,明确了它们之间的边界,逐一解决。通过模块化,我们可以复用之前已完成的工作,提高效率,避免重复劳动。在人工智能的时代,模块化变得更加重要,这也是诸如FuncGPT(慧函数)这类代码生成工具出现的意义所在。当让,想让AI更好的帮助我们做好模块化,仍然需要人类工程师的指导和协作。

4、 演进式设计,问题不变,方式值得重新思考

可变更性是软件的根本特征,持续演进能力,正如自然界的进化一样,都是本质。

  • 自动化测试:自动化测试的重要性不会降低,因为它是一种确保契约的方式。
  • 测试驱动开发:经典的测试驱动开发方法可能会有一些变化。可能的转变方向之一是人类使用测试来表达契约,然后由人工智能来负责实现。
  • 结对编程:如果你以前认同结对编程的思想并熟悉结对编程的技巧,现在的你将如鱼得水,因为你有了一个“知识渊博”的编程伙伴。
  • 持续集成:持续集成的重要性日益凸显。
  • 整洁代码: 软件开发入门级实践——整洁代码,因为AI代码工具的出现可能已不再是必要的了,因为目前的技术已经能够很好的满足这方面的需求。还是以FuncgptGPT(慧函数)生成的“List排序函数”为例:
// 类名:ListSorter
// 函数名:sortList
// 函数功能:对List进行排序
// POM依赖包:
// <dependency>
//     <groupId>org.apache.commons</groupId>
//     <artifactId>commons-lang3</artifactId>
//     <version>3.12.0</version>
// </dependency>

import org.apache.commons.lang3.StringUtils;

import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;

public class ListSorter {
    /\*\*
     \* 对List进行排序
     \* @param list List对象
     \* @param columns 排序字段名,以/分隔
     \* @param order 排序类别,asc顺序,desc倒序
     \* @return 排序后的List对象
     \*/
    public static List<Map<String, Object>> sortList(List<Map<String, Object>> list, String columns, String order) {
        String\[\] columnArray \= columns.split("/");
        for (String column : columnArray) {
            if (StringUtils.isNotBlank(column)) {
                Comparator<Map<String, Object>> comparator = (o1, o2) -> {
                    Object value1 \= o1.get(column);
                    Object value2 \= o2.get(column);
                    if (value1 instanceof Comparable && value2 instanceof Comparable) {
                        int compareResult = ((Comparable) value1).compareTo(value2);
                        return order.equalsIgnoreCase("asc") ? compareResult : -compareResult;
                    }
                    return 0;
                };
                Collections.sort(list, comparator);
            }
        }
        return list;
    }
}

// 函数示例
// 对List进行排序示例
// 入参:list,List对象
//       columns,排序字段名,以/分隔
//       order,排序类别,asc顺序,desc倒序
// 出参:sortedList,排序后的List对象
// 调用示例:
// List<Map<String, Object>> list = new ArrayList<>();
// Map<String, Object> map1 = new HashMap<>();
// map1.put("name", "John");
// map1.put("age", 25);
// Map<String, Object> map2 = new HashMap<>();
// map2.put("name", "Alice");
// map2.put("age", 30);
// list.add(map1);
// list.add(map2);
// String columns = "name/age";
// String order = "asc";
// List<Map<String, Object>> sortedList = ListSorter.sortList(list, columns, order);
// System.out.println(sortedList);
// 输出结果:例如,按照name字段升序排序,age字段升序排序,排序后的List为:\[{name=Alice, age=30}, {name=John, age=25}\]
// 则输出结果为:\[{name=Alice, age=30}, {name=John, age=25}\]

针对代码的整洁性来分析,不难发现:

  1. 代码的注释非常完整,每个步骤都进行了详细的解释,这有助于读者理解代码的功能和实现方式。
  2. 代码的缩进和排版都很规范,易于阅读。
  3. 使用的类和接口都是Java的标准库,这保证了代码的稳定性和可维护性。
  4. 使用了Apache Commons Lang库,这使得代码更加高效和简洁。
  5. 代码的功能很清晰,可以对一个List进行排序,并且支持多个排序字段和不同的排序方式。
  6. 使用了静态方法,这使得代码更加灵活和可重用。
  7. 使用了lambda表达式,这使得代码更加简洁和易于理解。
  8. 对于不可比较的对象,代码返回0,这不会影响排序结果,同时也避免了NullPointerException。

那么,我们该如何学习大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

一、大模型全套的学习路线

学习大型人工智能模型,如GPT-3、BERT或任何其他先进的神经网络模型,需要系统的方法和持续的努力。既然要系统的学习大模型,那么学习路线是必不可少的,下面的这份路线能帮助你快速梳理知识,形成自己的体系。

L1级别:AI大模型时代的华丽登场

L2级别:AI大模型API应用开发工程

L3级别:大模型应用架构进阶实践

L4级别:大模型微调与私有化部署

一般掌握到第四个级别,市场上大多数岗位都是可以胜任,但要还不是天花板,天花板级别要求更加严格,对于算法和实战是非常苛刻的。建议普通人掌握到L4级别即可。

以上的AI大模型学习路线,不知道为什么发出来就有点糊,高清版可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值