软件不再软


注:此博文原先是在2013年6月发表在俺们日语网站上的,最近才被翻译在俺们英语网站上。


在大阪举行的第三届Ruby商务论坛上,松本行弘 ——Ruby之父发言:“互联网是咋利用像Ruby这样的语言改变软件和商务的?”本文中,我们总结了一下松本行弘的有远见的讲话。


计算机作为计算设备

IBM的第一任CEO托马斯·约翰·沃森说过一句话:“我没想过可以在全球范围卖超5部计算机。”这个数字是基于计算工程师根据ENIAC的计算性能仿真出的数字。不过今天,不计其数的计算机有远超ENIAC的处理能力。仅去年,有300万PC交易,更别说智能手机和平板了。计算机已不仅仅作为计算设备了。


网络互联

今天我从松江飞到大阪,飞的时候,得将手机调成飞行模式,此时你发现,智能机若不联网,几乎啥都不能做。这说明啥?说明大多数的手机App都是与服务器端相联的。


这个社会变得越来越依靠互联网来驱动运作,而互联网连接着世界各地的计算机。通过互联网,不光计算机,还有设备也可以与其他设备相连接,例如丰田普瑞斯也可以看成一个计算机,利用互联网,普瑞斯可以通过雨刷的工作量和GPS采集的信息来计算雨区下了多少雨。未来,甚至全世界更多的设备将会连接到一起。翻翻旧电脑杂志上的广告,当时居然敢称10kbps的速度为“超高速”,且“仅需”2000刀,而现如今的百兆光纤入户才50刀。量变引起质变。1965年,一个因特尔的创始人,摩尔,在一篇论文中道出了著名的摩尔定律,说晶体管的数量每18个月翻一番,20年翻1000倍,40年翻100万倍。


这些变化在计算机和网络中将会有更多的影响:影响着媒体、云、大数据、开源和社区,甚至使得像Github这样的协同编程成为可能。软件开发的方式也被影响着、改变着。

对传统工业的改变


高德纳公司的报告称,到2020年,每个公司都会成为IT公司。这意味着,IT对整个传统工业的重要性,如果是真的,那么本来就是IT业的软件商业会怎么改变?软件商业将会以不同的形式存在,例如给开发者和公司进行定制。不过,如果所有的传统工业变成IT公司,IT将会成为公司的核心竞争力。


软件不再软


软件和软件开发目前仍然还处在被误解的境地。软件并不软,它不包括建筑或者物理材料,并不是放在流水线上加工的东西。软件产品是一种可以下载或者复制的东西,那么软件公司到底干啥?软件公司是设计者,且必须将注意力放在与制造业相比的差异上。


有时,软件还跟建筑相比。软件并没有像建筑那样的物理限制,但有建筑同样的复杂度,复杂度决定着依赖的大小,耦合的大小。结果,当遇到变化的时候,软件的弱点也就暴露出来了。软件不会腐蚀,但必须得能经得起变化。操作系统、商业模式、法律,甚至税率都会变,所以软件必须得能够经得起那些变化。为了能使其经得起,咋整?螺旋模式(软件开发的一种模式)?敏捷开发(一种敏捷应对变化的能力)?


软件的复杂度


软件的复杂度源自于社会的规则。具体说,这样的复杂度源自人类的需求、心理上的歧义等。定制开发作为双赢的方式也不是那么容易的。模糊的需求成为传统的定制开发的短板,比如像知识缺失和缺乏立项之前的远见的局限。在立项之前,只有很少部分的细节是真正明白的,大部分还是云里雾里,一头雾水。


以前,计算机的角色仅仅是计算设备,所以计算机的目的很明确,就是计算。但今非昔比,特别是软件,因为你可能在创造着自己并未意识到的有利东西。一些必须要面对的问题是无法预知的,所以只能摸着石头过河,而且不得不重复摸石头。项目开始很空白,不明白到底谁的点子最正确,这需要适应变化和大规模的合作。


给未来软件商务的提示


我相信说互联网是建立在开源之上的。用于超算上的97%的操作系统都是基于Linux的,Linux是出了名的开源,被广泛的使用着。“开源”诞生于1998年,直到“自由软件”(理查德·斯托曼提出的)的出现,才真正为人所知。斯托曼追求的自由软件是可以学习该软件的源码,修改,重发布。不过,这也需要一定商业远见。


开源和商业


我个人认为开源使得软件商务的发展更加困难,貌似恐怕没什么方法可以阻止这股趋势,唯一的方法就是加入其中。你不得不承认一种新的商业模式诞生了。很多公司都在开源的基础上进行开发,在其基础上添加不同的功能实现。


那么,未来软件商务该怎么进行?很可能是极化。你有开发过平台或者一个应用程序(不是给智能机用的)吗?最初的原型设计出来后,必须重复拆解。用户原则的开发和从用户的角度开发将会起一定的作用。平台开发者将会经常面对来自开源的竞争。

深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值