写作绅士,读作丧尸 X岛揭示板
 首页版规 |用户系统 |移动客户端下载 | 丧尸路标 | | 常用图串及路标 | 请关注 公众号:【矛盾苇草】| 人,是会思考的芦苇
常用串:·豆知识·跑团板聊天室·公告汇总串·X岛路标

[只看PO]No.63704741 - 计算机答题串 - 社畜



考试、升学、学业咨询、工作、投资、车房、养老、相亲 相关,请遵守>>No.50000001【全岛总版规】
养娃、带小孩相关请到育儿版,学习类打卡请到学业打卡
在匿名版张贴真实信息时请谨慎考虑,本站不对个人信息泄露引起的后果负责
投资风险与回报对等,请谨慎选择高回报率投资方式。

计算机答题串 无名氏 2024-09-08(日)13:12:19 ID:6S0Btd7 [举报] [订阅] [返回主串] No.63704741 [回应] 管理
po近期处于待业期,没什么固定的项目做,希望能够在答疑的过程强迫自己学习新的知识。
欢迎各位提问,也欢迎肥哥参与答疑串。

----------告示----------
答疑的效率不高,所以希望肥哥别问需要很强的及时性的问题。
例如:
>xxx题用什么算法解决。
>我这里有个报错,如何解决。
这类的问题,没有测试环境很难解答,这也是为什么本串放在了老中医而不是代码串。

本串主要用于解答相对抽象的概念,或者对计算机的“质疑”与“好奇”。
例如:
>为什么计算机使用的是二进制而不是三进制,分明三进制的单位信息存储量更大。
>如何看待AI发展对计算机行业的冲击,未来就业会更困难吗?
po会尽量去吸取相关的知识,汇总后进行分析解答。
提出问题过一段时间来收获结果就好。

----------叠甲----------
人无完人,观点与知识也不尽然,po会尽量保证结论的可信度与逻辑性,若出现疏漏欢迎肥哥指正,望海涵。
Tips 无名氏 2099-01-01 00:00:01 ID:Tips超级公民 [举报] No.9999999 管理
| ω・´) X岛除默认举报理由外没有自删功能。
无标题 无名氏 2024-09-08(日)19:15:19 ID:6S0Btd7 (PO主) [举报] No.63707863 管理
>>No.63705120
首先要说明的是“先有数据库,再有数据库语言”。
所以以下会先聊数据库问题( ´∀`)

肥哥提到了效率问题。>>No.63706936
>关于效率问题的基本解释
大多数情况下越高级的语言在实现某项功能时会有更差的执行性能。
原因是高级语言通常是由低级语言实现的,在低级语言形成高级语言的过程中,会添加较多的“降低出错概率”的检测机制,相关机制增强了高级语言的可读性,但是添加了这些“步骤”的情况下,语言的“直接运行效率”就会受到影响。
效率先简单聊一下,如果觉得不太清楚可以追问,我会详细解释效率降低的原因。
>关于“为什么大部分语言可以实现数据创建与存储,还要专门设计`数据库语言`。”
这里分为三点解释。
1.为什么设计数据库而不是直接进行数据存储。
在进行数据存储时,我们并不是简单的“存进去”就好了,在实际的实现中,需要考虑程序的时间复杂度与空间复杂度等相关问题。(相关参考学科为:软件工程原理)
如何更快的查询到某一个具体数据,在数据量较低的情况下,差异是不明显。
但当数据体量达到了是十亿百亿级别,百分之一的差异也是极其显著的,能够明显降低存储与查询成本的。
那么如何快速的进行查询,简单的进行存储就是一门较为高深的学科,而数据库就是一群精于此学科的人,设计出来的效率较高的数据存储软件,这是数据库的产生原因。
2.为什么设计“数据库语言”。
能够理解问题1的情况下,本问题就很好解答了。
设计出来的程序如何调用?
这就需要有“数据库语言”来实现,相当于提供了一个统一的数据调用接口,只不过它有一定的解析能力,让你看起来像是“数据库语言”罢了,实际上是符合特定结构的调用指令,和肥哥平常自己写的代码,对外提供的接口没有区别。
3.那么我们是否可以其他语言去实现数据库的功能呢?
答案是可以,但是没必要。
计算机是一个庞杂的学科,我们不可能精通于其中的每一项工作,那么直接使用其他顶尖人才创建好的现有产品,是一个很简单的降低我们开发成本的行为。
我们没必要投入过多精力到“开发一个存储数据的模块”这件事上去,让更多的精力聚焦于我们想要实现的功能,这就是相互调用与模块化的意义。

简单总结就是:
可以实现,但是别人设计的程序专精于数据存储领域,直接使用“数据库语言”实现数据库的即可,没必要投入重复实现已有的功能。
PS:题外话,实际上po工作过的较为大型的企业都会开发属于自己的数据库,因为大家对于数据的调用需求与方式不同,现有的数据库已经不满足他们的数据调用需求。
无标题 无名氏 2024-09-08(日)19:44:11 ID:6S0Btd7 (PO主) [举报] No.63708289 管理
>>No.63705123

可以先看一下:
>>No.63705773 后半段 与>>No.63707863的“关于效率问题的基本解释”
这两个解释思路相似,即大多数“高级语言”并不直接作用于硬件,而C距离硬件相对近一些。
以下为相对详细的解释。
>编程语言对硬件的操作性到底是如何体现的
这里其实是肥哥对于“编程语言”的定义认知不够清晰导致的。
我们对“编程语言”简单分类可以分为三类。
机器语言:作用于硬件,机器可以“直接理解”运行的语言,无需编译,在硬件中已经写好了对应的运行逻辑。

低级语言:通常是指汇编语言,微处理器与微控制器等,对应不同的机器语言集,也就是说可以通过微处理器翻译成硬件再让硬件“理解”。

高级语言:即“高度封装的编程语言”。C、python、java、golang、rust等皆在此列,但是高级语言中也有“相对低级”与“相对高级”的说法,这个与语言的封装程度有关。
我们用python与C举例,相当多的python包的底层逻辑是使用C实现的,我们做一个极简的类比。(不绝对正确,只是方便理解。)
一个python程序要操作硬件。
步骤是python->c->汇编语言->机器语言。
一个C程序需要操作硬件。
步骤是c->汇编语言->机器语言。
可以明显的看到直接使用C会省去python-c的过程。

所以对于“编程语言对硬件的操纵性到底是如何体现的”这点,我们可以定义为“程序对于硬件的调用需要经过哪些步骤”,来抽象量化。

>为什么说C语言对硬件的操纵能力较好
能够理解上一个问题,这部分就好理解了,因为C语言比其他的语言“更低级”,它几乎只是汇编语言的简单封装,所以“翻译”成机器语言的路径更短。
那么如何简单判断语言是否“低级”呢,我们可以通过语言的解析流程与可读性去分析,通常可读性越低的语言,性能越高。
因为通常对人类来说易读的东西,对机器来说很难理解,但是对机器来说易读的东西,对人类来说很难理解。

所以如果肥哥想分析自己学习的语言“效率”如何,可以通过分析其转化为汇编语言期间需要的路径来实现简易分析。| ω・´)
无标题 无名氏 2024-09-08(日)19:57:05 ID:6S0Btd7 (PO主) [举报] No.63708441 管理
>>No.63706281
我看了一下前两位肥哥的解释,已经蛮清楚的了,有解释也有例子。(*゚∇゚)

我来做一些直接解释的补充。
在计算机中,“环境”一词通常是指程序运行时需要的一系列条件与设置。
条件可能是网络条件、硬件条件、也可能是软件条件。
我们需要调整这些条件使得软件处于一个可以运行的“情景” 这种可运行“情景”,我们称之为“环境”。

所以“环境”可以简单的定义为“程序运行的情景”,而“配置环境”就是“调试情景”,目的是使程序处于可以运行的环境状态。

>举例
程序运行需要python环境。
解释为:程序需要运行在一个存在python应用并且系统知晓python应用的使用路径的情景下。

这样就是为什么我们需要下载python应用并且配置系统路径。

可以理解为一种属于计算机的“黑话”,翻译出来太长大家懒得说罢了|∀` )
无标题 无名氏 2024-09-08(日)20:01:38 ID:6S0Btd7 (PO主) [举报] No.63708504 管理
多谢肥哥的提问,让我复习了一下计算机原理与软件工程原理。
目前没有新的问题,我直接进行一个dota2的启动!( ゚ 3゚)
无标题 无名氏 2024-09-08(日)22:16:50 ID:6S0Btd7 (PO主) [举报] No.63710010 管理
>>No.63708522
迟来了三分钟但是需要等很久,这就是缘分( ゚ 3゚)

这个问题描述没太看懂具体要问的目的,我理解为:
希望知道对这个损失函数进行SGD,这个SGD采样的目标是样本还是函数。
不知道这样理解是否正确。

我把这个问题送给我AI在读的朋友了,回答会迟一些。
AI属于我的盲区( ・_ゝ・),我顺便学习一下。
无标题 无名氏 2024-09-08(日)22:34:10 ID:6S0Btd7 (PO主) [举报] No.63710210 管理
>>No.63710010
问题稍微有点模糊,和朋友没太讨论出结果,这个函数是误差值取平均值,作为误差值也就是有限和。

SDG是随机梯度下降策略,根据随机样本损失函数梯度对获得参数进行优化。
也就是对样本进行采样,目的是优化函数,并不是对函数进行采样。

只能先提供这么多信息,需要进一步明晰问题|-` )
无标题 无名氏 2024-09-08(日)22:38:50 ID:6S0Btd7 (PO主) [举报] No.63710256 管理
>>No.63708547
server系列服务器是windows提供给企业用户的系统,相对于普通windows,提供了更多的虚拟化,安全性等服务器更看重的特性。
服务器上用windows基本上就是这个系列的系统。
算法需要系统支持我没见过这种情景,一般是应用有服务器版本需求。

windows server的兼容性不错,可以运行一下试试,出问题再去针对性调整。
无标题 无名氏 2024-09-08(日)22:49:47 ID:6S0Btd7 (PO主) [举报] No.63710397 管理
>>No.63708578
目前开发游戏的引擎主要还是Unity 使用的是C#、unreal engin 使用的是C++、RPG maker用到是ruby。
每种引擎的特性不一样,针对的游戏类型也不一样。
如果想独立开发的话,推荐先想想自己想做什么类型的游戏,而后针对性进行引擎挑选与学习。
极其不建议直接从无引擎开始,学习成本过高。

不过学了java学别的也不会很困难,写代码是做游戏过程中最简单的一步,加油| ω・´)
无标题 无名氏 2024-09-08(日)22:50:39 ID:6S0Btd7 (PO主) [举报] No.63710410 管理
>>No.63710251
和朋友没聊那么多,明天我再多看点paper再来和肥哥沟通相关问题(;´Д`)
学无止境。
无标题 无名氏 2024-09-08(日)22:53:51 ID:6S0Btd7 (PO主) [举报] No.63710453 管理
>>No.63710207
宏是office中的“自定义脚本”,可以自动化帮你做一些文件与数据处理类的工作。
至于能不能用到,就得看你的数据量大不大,数据的处理重复度如何。
脚本就是用来执行“重复工作”的。

宏的编写难度相对较低,也比较针对office,可以用来做数据标记什么的,不过本身也有一些安全性问题,需要结合所在工作综合考虑( ´∀`)
无标题 无名氏 2024-09-08(日)22:58:16 ID:6S0Btd7 (PO主) [举报] No.63710510 管理
>>No.63710465
简单爬虫用python或者javascript就好了。
爬虫对抗目前也是热门领域不过我相信你不太用的到(つд⊂)

自己写的话,其实可以舍弃效率追求准确度,用python做访问模拟。
不同的网站格式不同,多调整就好。
无标题 无名氏 2024-09-08(日)22:59:03 ID:6S0Btd7 (PO主) [举报] No.63710527 管理
>>No.63710510
环境没问题的话大概两三个小时就能从零写一个能用的爬虫。(简易版)
无标题 无名氏 2024-09-09(一)00:17:38 ID:6S0Btd7 (PO主) [举报] No.63711486 管理
>>No.63711094
幼稚些我还能快速回答,快问快答也不差(〃∀〃)
编程来说这里推荐是python,因为学习成本很低。
你可以了解一下python基础然后其他的交给chatgpt,或者改改别人的代码。

难度取决于你是否在意其美观度,功能从逻辑来看没太大难度。

其实excel表格是可以进行内容的格式与相关设置的限制的,写一个excel的宏也可以自动规范大小写与格式。

宏的优点是很简单,缺点是他们还是在excel上操作,还是有出错可能,python的话输出格式可能更符合你预期,因为不符合预期会报错。
无标题 无名氏 2024-09-09(一)00:18:42 ID:6S0Btd7 (PO主) [举报] No.63711504 管理
之后本串会尽量在晚上十二点左右统一回复,以免出现频繁回复长时间置顶的情况|-` )
无标题 无名氏 2024-09-09(一)10:27:35 ID:6S0Btd7 (PO主) [举报] No.63714061 管理
>>No.63712730
( ゚∀。)7爬虫实现的思维逻辑是简单的,即使用代码模拟人类访问,之后对访问获得的数据进行处理。
在没有反爬虫并且格式简单的网址很快,所以得看具体使用情况。

AI与代码相关性反而不高,更多的是要对数据与逻辑的认知,代码是其最简单的部分,现在只是喂数据和调整AI的话,需要接触的代码很少,为了AI普及化,模型的训练流程简化工作有不少项目与公司在做。
无标题 无名氏 2024-09-09(一)10:28:35 ID:6S0Btd7 (PO主) [举报] No.63714068 管理
>>No.63711758
确实很多人用王八做演示,我以前也是从那里开始学的( ´∀`)
无标题 无名氏 2024-09-09(一)10:41:26 ID:6S0Btd7 (PO主) [举报] No.63714183 管理
>>No.63712785
企业用的话其实不是很好推荐,建议还是要做语言与框架调研,结合需求进行选型。

我下面聊的是个人角度来说。

基于你的快速部署需求,那么使用C实现是不现实的,因为C的网络编写较为繁琐,框架性部署也不方便。

不太推荐JAVA,原因是语言特性较多,在不进行深度开发的情况下,对你来说基本都是冗余。

剩下的几种语言实现复杂度都不算高,我在开发工作中比较常用的是python和golang。有能力且平台对外的话可以学习一下golang,有相对更好的安全性,并且运行效率高一点点。( ´∀`)

python优势是简单好用快速,学习成本低,开发周期短。

其他接触不多的语言我就不妄加评论了,有肥哥觉得使用方便也可以推荐一下(=゚ω゚)=
无标题 无名氏 2024-09-09(一)11:14:36 ID:6S0Btd7 (PO主) [举报] No.63714490 管理
>>No.63713466
面向过程是“对调用过程进行描述”,即围绕过程函数进行功能实现,这个过程中,数据与行为是分离的。
在使用时,需要调用函数,并且输入数据,而后得到数据的输出结果。
简单理解为“在对处理过程的数据进行编程”,面向的是这个处理过程。

面向对象是“对对象进行描述”,即围绕类(Class)进行进行编程,这个过程中,数据与行为是封装在一起的。
(注:类的实现就是对象(Object),所以说是针对类而不是对象,但是对象是最终目标产物。)
在使用时,需要调用对象,而后调用对象的函数对数据进行处理。
之后的数据处理也通过与对象的交互间接实现,而不是直接进行数据操作。
简单理解为“通过对对象进行编程,对象帮你进行数据处理。”,即编写面向的是对象,而不是处理过程。
(注:这不代表你不需要写数据处理的过程,而且在说你的编写目的是形成一个对象。)
加油,你也会有很多对象的。

什么程序员破梗(`ε´ )

以上是简单解释,那么为什么要这样做区分呢?
我认为最本质最重要的区别是上下文区别。
即函数是否拥有上下文。
面向过程中编写的函数是“孤立的”,不具有上下文,也不理解上下文。
面向对象中编写的函数是“属于对象的”,它是对象调用的一部分,函数知道自己属于哪个对象,也知道自己有“上下文”,可以对数据进行哪些处理。

通过“给予函数上下文”,面向对象获取了更多的可重用性、拓展性、维护性等等方向的优势,这也就是为什么语言要做区分。
与此同时,这也是为什么面向对象的语言运行效率会相对低一些,因为计算机“理解”数据,函数对上下文进行“认知”,都需要过程。゚ ∀゚)ノ

说的比较抽象,因为本是两个针对语言特性进行抽象描述的词。
至于面向对象的特性,肥哥在后续的学习中会体会到的,水到渠成。(〃∀〃)
无标题 无名氏 2024-09-09(一)11:17:57 ID:6S0Btd7 (PO主) [举报] No.63714523 管理
>>No.63714215
肥哥详细描述一下操作系统的哪部分或者哪种系统吧。
操作系统的覆盖面是很广的,他们的特性,编写思路,实现思路都不一样。
太宽泛不好回答,也很难给予你想要的答案。

UP主: