백엔드 개발 PHP 튜토리얼 如何理性的评价各种编程语言的优劣?

如何理性的评价各种编程语言的优劣?

Jun 17, 2016 am 08:30 AM
java php python web

我不是想找万能的银弹,也不是让个别phper来引战的,知乎上虽然有一个类似的问题,PHP、Java、Python、C、C++ 这几种编程语言都各有什么特点或优点? - C(编程语言),但是里面是卖萌和抖机灵的多,没有看到一些作为一个初学者真正想知道的问题。

举个例子,PHP能够进行WEB开发,也能进行桌面开发,但并没有那款桌面软件是用PHP开发的,所以PHP这门语言其实更适合于web开发,这算是对PHP一些评价。都说语言是工具,要在合适的时候使用合适的工具,不了解特性又怎么在合适的时候用呢?但了解语言的特性肯定是那些有一定使用经验的人才有发言权的啊,我问这个问题就是为了从有经验的人口中了解这些特性,学习学习。真的不是故意想挑起语言之争什么的。

谢谢各位小伙伴解答啦 ~ > _ 回复内容: 首先这个问题是没有办法明确回答的,因为“理性”一词的定义并不明确,优劣一词也不明确。我只能说一下自己的观点。

在这里先推荐一篇硅谷创业教父Paul Graham的文章Beating the Average,希望大家先读一下。

正如题主所说的那样,“PHP能够进行WEB开发,也能进行桌面开发,但并没有那款桌面软件是用PHP开发的,所以PHP这门语言其实更适合于web开发,这算是对PHP一些评价。” 所有的通用编程语言(General Purpose Programming Language)都是图灵等价的,计算能力上没有任何差别,但是为什么没有什么人喜欢用图灵机来编桌面、网络或者其他应用?!为什么大家不人人用汇编?!所以在争论计算机语言优劣的时候祭出图灵等价只能是很low方式。但是在计算性上的确所有语言都是等Power的,那么问题来了,我们通常争论一个语言比另一个语言更强大的时候我们到底在TMD争论什么?!或者说同一门的新版本比旧版本更强大,或者更明确一些,Java 1.8里有lambda,那么它是否比Java 1.7更强大?Java 1.5引入了泛型,那么它是否比1.4要强大?Python 3.5里有用async还有await协程,那么Python 3.5是否比Python 3.4更强大?首先我觉得新版本是更强大的,泛型的引入避免了一些运行时的类型错误,lambda让函数不必显示地包在对象之中。Python的协程解放了一些对程序流程的控制。然后我也觉得它们没有让这语言更强大,因为差不多的特性都能在老的版本上实现,只是比较挫。但是,但是1.5中引入的泛型你是否可以用库来弥补?显然好像是不行的。所以特性可以分为能用库来弥补的跟不能用库来弥补的,我觉得这是1.5比1.4真正强大了,1.5真是要优于1.4,这一点上应该没有什么争议。但Java 1.8是不是比1.7更优,你可以跟我再争论一下,并且我不觉得这种争论有任何结果。

那么对于语言是否更优,我的定义是语言A的特性不能用语言B的库来弥补,那么A语言在这种特性上就是更优,如果B可以用库弥补A的这种特性那么A是不是更优可以有争议。这种争议我通常会躲开或者搁置。

那么显然,C语言应该是比汇编更优的,首先C语言可以定义更多的类型、结构体,这是汇编语言库不能弥补的,其次,C语言有三种控制流的语句,顺序、条件、循环(忘记是麦卡锡还是Dijkstra还是霍尔最先提出的了,知道的告诉我一下)而你再厉害的汇编库也不可能弥补C语言有if for while这些语法上的优势。

以下纯个人观点:
那么Java是否比C++更优?Well,Java有自动的内存回收,C++也出了Smart Pointer,不同的只是学习成本。在其他一些地方Java也有些特性是C++用库没有办法弥补的。

Java是否比C语言优?大的尺度上好像并没有,Java的面向对象只是一种抽象问题的思想,而在C语言里有人一样也可以面向对象来编程。但是其他有有些方面Java的确更优,比如说数组index out of bound。

Haskell是否比Java更优?答案是肯定的。Haskell里有的一堆可以让你少写成百上千行代码的特性Java里都没。

文中给了一个叫Blub的悖论:
有一个用Blub语言(假想的语言)的程序员,它是一个比Cobol还有汇编语言更强大的语言。因为对于汇编那是编译器要的事。而对于Cobol这个用Blub的程序员不知道Cobol程序员怎么用Cobol把事情搞定,因为Cobol连XXX特性都没有,所以这个程序员并不会使用Cobol或者汇编。

只要当这个Blub程序员向下审视其他不如Blub强大的语言时,这种不强大十分明显,因为这些语言没有Blub程序员习惯使用的特性。而当它们抬头看更强大的语言时,他们并不觉得他们在仰望。他们看到的只是一个奇怪的语言(这里作者应该是指Lisp),并且认为Blub与它是一样强大的,只是里面有一堆奇怪的东西。Blub已经够好了,它他用Blub的方式思考。

悖论到此结束。
这也许就是语言之争的起源,一般的人只是做着比较单一的工作,只要有一种语言他们熟悉并且走够好就可以了,同时,他们已经习惯了这种语言的思考方式。后者是很可怕的。

(这里扯点别的,有人问一个中国人:为什么而学习?这里的为什么而跟了一个动词,我们惯性地会想一个目标,比如为中华崛起而读书。为往圣继绝学,为万世开太平,总是要有一个目标。这里的为什么对应英语what ... for,而老外用的是why?所以有的老外会这样回答这个问题“因为知识本身就是值得学习的”这个老外是欧几里得,虽然他是希腊人可能不用英语,但是我只想说自然语言都会限制我们的思考,就更不用说计算机语言了)

比如在一门没有递归的语言中你思考的语言永远都只是循环那几样东西,在汇编里你永远的只想着如果搞那堆寄存器,应该用什么指令。所以你应该跳出来,打破你现在熟悉的东西,忘掉它重新开始,看看Haskell、F#、Lisp、Scala、Scheme、Clojure、Ocaml、Erlang,这个世界丰富多彩的。Haskell、F#里我能举出好多你在Java、C++、C#里永远也没法用库弥补的特性。但是这并不代表你就一定要用Haskell与F#,我唯一不希望看到的是你专精了C跟C++语言好多年,然后又去花好多时间去钻研Go或者Python,因为我觉得它们不会给你带来新的思想。

最后引用一句Beating the Average中的话:
人人都知道,把你全部的程序全部使用汇编手写是错误的,但是很少有人注意到一个更一般的原则:如果你可以选择多种语言,若其中大部分语言都是相同的,那么如果你不用那个强大的就是错误。

当然对于这个原则是有例外的。如果你需要写一个程序来与已有的程序协同工作,那么新的程序还是用与原来相同的语言比较好。如果你需要写一个非常简单的程序比如操作bit,那么一个抽象能力不怎么高的语言就够了,并且这样还会更快。如果你要写一个短的,并且写完就弃用的程序,那么你就用库最强大,能帮你快点完成工作的语言。但是对于一般的应用软件,你一定想用你所知道的最强大(并且效率还不错)的语言,用任何类似的其他语言都是一个错误,比如说汇编语言。 以下转自王小波的文章:打工经历 。
来源,王小波的书
沉默的大多数小说在线阅读
正文 打工经历
希望软件公司老板不要学下例的那种。

在美留学时,我打过各种零工。其中有一回,我和上海来的老曹去给家中国餐馆装修房子。这家餐馆的老板是个上海人,尖嘴猴腮,吝啬得不得了;给人家当了半辈子的大厨,攒了点钱,自己要开店,又有点烧得慌——这副嘴脸实在是难看,用老曹的话来说,是一副赤佬像。上工第一天,他就对我们说:我请你们俩,就是要省钱,否则不如请老美。这工程要按我的意思来干。要用什么工具、材料,向我提出来,我去买。别想揩我的油……

以前,我知道美国的科技发达、商业也发达,但我还不知道,美国还是各种手艺人的国家。我们打工的那条街上就有一大窝,什么电工、管子工、木工等等,还有包揽装修工程的小包工头儿;一听见我们开了工,就都跑来看。先看我们抡大锤、打钎子,面露微笑,然后就跑到后面去找老板,说:你请的这两个宝贝要是在本世纪内能把这餐馆装修完,我输你一百块钱。我脸上着实挂不住,真想扔了钎子不干。但老曹从牙缝里啐口吐沫说:不理他!这个世纪干不完,还有下个世纪,反正赤佬要给我们工钱……

俗话说,没有金刚钻,别揽磁器活。要是不懂怎么装修房子就去揽这个活,那是我们的错。我虽是不懂,但有一把力气,干个小工还是够格的。人家老曹原是沪东船厂的,是从铜作工提拔起来的工程师,专门装修船舱的,装修个餐馆还不知道怎么干吗……他总说,现在的当务之急是买工具、租工具,但那赤佬老板总说,别想揩油。与其被人疑为贪小便宜,还不如闷头干活,赚点工钱算了。

等把地面打掉以后,我们在这条街上赢得了一定程度的尊敬。顺便说一句,打下来的水泥块是我一块块抱出去,扔到垃圾箱里,老板连个手推车都舍不得租。他觉得已经出了人工钱,再租工具就是吃了亏。那些美国的工匠路过时,总来聊聊天,对我们的苦干精神深表钦佩。但是他们说,活可不是你们俩这种干法。说实在的,他们都想揽这个装修工程,只是价钱谈不拢。下一步是把旧有的隔断墙拆了。我觉得这很简单,挥起大锤就砸——才砸了一下,就被老板喝止。他说这会把墙里的木料砸坏。隔断墙里能有什么木料,不过是些零零碎碎的破烂木头。但老板说,要用它来造地板。于是,我们就一根根把这些烂木头上的钉子起出来。美国人见了问我们在干什么,我如实一说,对方捂住肚子往地下一蹲,笑得就地打起滚来。这回连老曹脸上都挂不住了,直怪我太多嘴……

起完了钉子,又买了几块新木料,老板要试试我们的木匠手艺,让我们先造个门。老曹就用锯子下起料来:我怎么看,怎么觉得这锯子不像那么回事儿,锯起木头来直拐弯儿。它和我以前见过的锯子怎么就那么不一样呢。正在干活,来了一个美国木匠。他笑着问我们原来是干啥的。我出国前是个大学教师,但这不能说,不能丢学校的脸。老曹的来路更不能说,说了是给沪东船厂丢脸。我说:我们是艺术家。这话不全是扯谎。我出国前就发表过小说,至于老曹,颇擅丹青,作品还参加过上海工人画展……那老美说:我早就知道你们是艺术家!我暗自得意:我们身上的艺术气质是如此浓郁,人家一眼就看出来了。谁知他又补充了一句,工人没有像你们这么干活的!等这老美一走,老曹就扔下了锯子,破口大骂起来。原来这锯子的正确用途,是在花园里锯锯树杈……

我们给赤佬老板干了一个多月,也赚了他几百块钱的工钱,那个餐馆还是不像餐馆,也不像是冷库,而是像个破烂摊。转眼间夏去秋来,我们也该回去上学了。那老板的脸色越来越难看,天天催我们加班。催也没有用,手里拿着手锤铁棍,拼了命也是干不出活来的。那条街上的美国工匠也嗅出味来了,全聚在我们门前,一面看我们俩出洋像,一面等赤佬老板把工程交给他们。在这种情况下,连老曹也绷不住,终于和我一起辞活不干了。于是,这工程就像熟透的桃子一样,掉进了美国师傅的怀里。本来,辞了活以后就该走掉。但老曹还要看看美国人是怎么干活的。他说,这个工程干得窝囊,但不是他的过错,全怪那赤佬满肚子馊主意。要是由着他的意思来干,就能让洋鬼子看看中国人是怎么干活的……

美国包工头接下了这个工程,马上把它分了出去,分给电工、木工、管子工,今天上午是你的,下午是他的,后天是我的,等等。几个电话打出去,就有人来送工具,满满当当一卡车。这些工具不要说我,连老曹都没见过。除了电锯电刨,居然还有用电瓶的铲车,可以在室内开动,三下五除二,就把我们留下的破烂从室内推了出去。电工上了电动升降台,在天花板上下电线,底下木工就在装配地板,手法纯熟之极。虽然是用现成的构件,也得承认人家干活真是太快了。装好以后电刨子一跑,贼亮;干完了马上走人,运走机械,新的工人和机械马上开进来……转眼之间,饭馆就有个样儿了……我和老曹看了一会儿,就灰溜溜地走开了。这是因为我们都当过工人,知道怎么工作才有尊严。
现在的年轻人真是,什么脑子都不动,就想得到可以写论文级别的知识,真不知道是说你们幼稚好还是居心不良好。在学校就炒功课,出来社会就抄袭,一帮废材。

想要符合理性评价,那么科学的评价是一种理性的评价。
要科学的评价,只需要建立可重复性的验证或者实验手段就可以了。

以下是一种仅供参考的验证或者实验方法的步骤:

1. 选择一个常见的可编程解决的问题
2. 选择候选编程语言可使用的语言措施、库等等范围
3. 邀请足够多的中等或以上水平程序员的程序员,在约定的范围内编写代码解决这个问题
4. 升级这个问题或者扩展这个问题的应用范围

按以上步骤迭代,统计每次迭代时(也就是问题变化时)解决问题的各语言的代码的变化量。

关于候选编程的问题,应该尽量贴合主流的开发环境需要解决的问题。
---
至于要讨论什么才是语言优劣的标准,那是另外一个问题。 The Economy of Programming Languages OpenClassroom
如何理性的评价各种编程语言的优劣? 我觉得对于编程语言,其实不必过于的理性。首先往往编程语言不是我们能够选择的,而且就算你可以选择,但是选择的余地其实也并不多。作为一个爱好其实根本不必太理性。我个人其实比较喜欢clojure的,但是没有实际的应用场景,如果自己搞一些东西,一定会用的,但是这段时间工作很忙碌,也就没有时间搞了,但是我是发自真心的喜欢这个语言。

此外,我还比较喜欢灵活度比较高的语言,但又不必处理太多的底层细节,比如javascript,python,ruby。讨厌那些需要处理无穷细节,规则无比复杂的语言,代表性的有c++。

好的语言应该是这样的:简单,可靠,灵活。
特性上应该有:支持函数性也支持面向对象,高度灵活的语法,庞大的类库,有垃圾回收机制,有异常处理机制,高级的多线程模型(比如actor),能用最少的代码做最多的事情。符合这些的其实只有clojure了。

但是一旦我决定使用clojure来开发我们的应用,就要面对无法招到人得窘境了,这里是西安,不是西雅图。 我就不喜欢写代码,所以我需要用的东西哪个语言有实现,我就用哪个语言,跨语言开发也不难 一般我认为,菜鸟支持他是因为不需要学习太多东西,同时老板支持他是因为手下很多活都需要菜鸟干,那就是一个烂语言。 这就是读史的重要性。每种编程语言的基因基本上决定于刚被设计出来时的用途,虽然后天改造也有影响,但是把鱼改造成熊掌无论如何是不如直接找熊要熊掌的。

上个图吧,稍老了点,侵删。

如何理性的评价各种编程语言的优劣? 我非常赞成鸟哥的话:
或许人性都是如此, 觉得掌握了复杂的东西会比较吊, 然而他们却忘记了, 还是我刚才的观点, 语言只是你学习来解决你实际问题, 把你的想法变为实际的工具, 你的成长应该是你在使用它们解决问题的过程中, 解决问题的经验的成长, 而不是语言的使用技艺的增长.
还有:
PHP的程序员, 需要认真的想好, 你的代码会怎么被执行, 你怎么写代码, 最终的执行效率才最高. 而不像其他的语言, 程序员可以把一部分优化工作交给编译器. 实际上,各种语言最根本的区别是思维哲学不同。
php是务实,一切以最简单的代码完成功能为主,好开发,好部署,好更新。
python是极致简洁,力求用最简洁的语法高效完成任务。
java是严谨,语法要求各种强制类型,强制try catch之类的。
其他语言也各有各自的思维哲学,实际上,学到一定程度后,就会对不符合自己性格的语言越来越排斥,虽然会用,但不会喜欢。
各种语言的应用领域有不同,但新项目开发中具体使用哪种语言,基本上是由总监的喜好,和公司的人手决定的,而并不是什么更适合。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

MySQL은 지불해야합니다 MySQL은 지불해야합니다 Apr 08, 2025 pm 05:36 PM

MySQL에는 무료 커뮤니티 버전과 유료 엔터프라이즈 버전이 있습니다. 커뮤니티 버전은 무료로 사용 및 수정할 수 있지만 지원은 제한되어 있으며 안정성이 낮은 응용 프로그램에 적합하며 기술 기능이 강합니다. Enterprise Edition은 안정적이고 신뢰할 수있는 고성능 데이터베이스가 필요하고 지원 비용을 기꺼이 지불하는 응용 프로그램에 대한 포괄적 인 상업적 지원을 제공합니다. 버전을 선택할 때 고려 된 요소에는 응용 프로그램 중요도, 예산 책정 및 기술 기술이 포함됩니다. 완벽한 옵션은없고 가장 적합한 옵션 만 있으므로 특정 상황에 따라 신중하게 선택해야합니다.

고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? 고로드 애플리케이션의 MySQL 성능을 최적화하는 방법은 무엇입니까? Apr 08, 2025 pm 06:03 PM

MySQL 데이터베이스 성능 최적화 안내서 리소스 집약적 응용 프로그램에서 MySQL 데이터베이스는 중요한 역할을 수행하며 대규모 트랜잭션 관리를 담당합니다. 그러나 응용 프로그램 규모가 확장됨에 따라 데이터베이스 성능 병목 현상은 종종 제약이됩니다. 이 기사는 일련의 효과적인 MySQL 성능 최적화 전략을 탐색하여 응용 프로그램이 고 부하에서 효율적이고 반응이 유지되도록합니다. 실제 사례를 결합하여 인덱싱, 쿼리 최적화, 데이터베이스 설계 및 캐싱과 같은 심층적 인 주요 기술을 설명합니다. 1. 데이터베이스 아키텍처 설계 및 최적화 된 데이터베이스 아키텍처는 MySQL 성능 최적화의 초석입니다. 몇 가지 핵심 원칙은 다음과 같습니다. 올바른 데이터 유형을 선택하고 요구 사항을 충족하는 가장 작은 데이터 유형을 선택하면 저장 공간을 절약 할 수있을뿐만 아니라 데이터 처리 속도를 향상시킬 수 있습니다.

MySQL은 인터넷이 필요합니까? MySQL은 인터넷이 필요합니까? Apr 08, 2025 pm 02:18 PM

MySQL은 기본 데이터 저장 및 관리를위한 네트워크 연결없이 실행할 수 있습니다. 그러나 다른 시스템과의 상호 작용, 원격 액세스 또는 복제 및 클러스터링과 같은 고급 기능을 사용하려면 네트워크 연결이 필요합니다. 또한 보안 측정 (예 : 방화벽), 성능 최적화 (올바른 네트워크 연결 선택) 및 데이터 백업은 인터넷에 연결하는 데 중요합니다.

MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 MongoDB 데이터베이스 비밀번호를 보는 Navicat의 방법 Apr 08, 2025 pm 09:39 PM

해시 값으로 저장되기 때문에 MongoDB 비밀번호를 Navicat을 통해 직접 보는 것은 불가능합니다. 분실 된 비밀번호 검색 방법 : 1. 비밀번호 재설정; 2. 구성 파일 확인 (해시 값이 포함될 수 있음); 3. 코드를 점검하십시오 (암호 하드 코드 메일).

hadidb : 파이썬의 가볍고 수평 확장 가능한 데이터베이스 hadidb : 파이썬의 가볍고 수평 확장 가능한 데이터베이스 Apr 08, 2025 pm 06:12 PM

HADIDB : 가볍고 높은 수준의 확장 가능한 Python 데이터베이스 HadIDB (HADIDB)는 파이썬으로 작성된 경량 데이터베이스이며 확장 수준이 높습니다. PIP 설치를 사용하여 HADIDB 설치 : PIPINSTALLHADIDB 사용자 관리 사용자 만들기 사용자 : createUser () 메소드를 작성하여 새 사용자를 만듭니다. Authentication () 메소드는 사용자의 신원을 인증합니다. Fromhadidb.operationimportuseruser_obj = user ( "admin", "admin") user_obj.

MySQL Workbench가 Mariadb에 연결할 수 있습니다 MySQL Workbench가 Mariadb에 연결할 수 있습니다 Apr 08, 2025 pm 02:33 PM

MySQL Workbench는 구성이 올바른 경우 MariadB에 연결할 수 있습니다. 먼저 커넥터 유형으로 "mariadb"를 선택하십시오. 연결 구성에서 호스트, 포트, 사용자, 비밀번호 및 데이터베이스를 올바르게 설정하십시오. 연결을 테스트 할 때는 마리아드 브 서비스가 시작되었는지, 사용자 이름과 비밀번호가 올바른지, 포트 번호가 올바른지, 방화벽이 연결을 허용하는지 및 데이터베이스가 존재하는지 여부를 확인하십시오. 고급 사용에서 연결 풀링 기술을 사용하여 성능을 최적화하십시오. 일반적인 오류에는 불충분 한 권한, 네트워크 연결 문제 등이 포함됩니다. 오류를 디버깅 할 때 오류 정보를 신중하게 분석하고 디버깅 도구를 사용하십시오. 네트워크 구성을 최적화하면 성능이 향상 될 수 있습니다

MySQL 데이터베이스가 이미지를 저장할 수 있습니까? MySQL 데이터베이스가 이미지를 저장할 수 있습니까? Apr 08, 2025 pm 05:27 PM

MySQL 데이터베이스에 이미지를 저장하는 것은 가능하지만 모범 사례는 아닙니다. MySQL은 이미지를 저장할 때 Blob 유형을 사용하지만 데이터베이스 볼륨 부기, 쿼리 속도 및 복잡한 백업을 유발할 수 있습니다. 더 나은 솔루션은 파일 시스템에 이미지를 저장하고 데이터베이스에 이미지 경로 만 저장하여 쿼리 성능 및 데이터베이스 볼륨을 최적화하는 것입니다.

MySQL이 SQL 서버에 연결할 수 있습니다 MySQL이 SQL 서버에 연결할 수 있습니다 Apr 08, 2025 pm 05:54 PM

아니요, MySQL은 SQL Server에 직접 연결할 수 없습니다. 그러나 다음 방법을 사용하여 데이터 상호 작용을 구현할 수 있습니다. 미들웨어 사용 : MySQL에서 중간 형식으로 데이터를 내보낸 다음 미들웨어를 통해 SQL Server로 가져옵니다. 데이터베이스 링커 사용 : 비즈니스 도구는 본질적으로 미들웨어를 통해 여전히 구현되는보다 우호적 인 인터페이스와 고급 기능을 제공합니다.

See all articles