网站推广效果分析,宝安网站建设哪家好,做网站有什么专业术语,怎么样模仿一个网站做简历0、引言
在从事软件开发的过程中#xff0c;由于笔者并不是计算机专业的同学#xff0c;所以时常会对一些概念感到困惑。比如#xff1a;
前些年很火的前端和后端是什么意思#xff1f;什么是 GUI#xff1f;什么是 CLI#xff1f;计算机的应用程序分为哪些种类#x…0、引言
在从事软件开发的过程中由于笔者并不是计算机专业的同学所以时常会对一些概念感到困惑。比如
前些年很火的前端和后端是什么意思什么是 GUI什么是 CLI计算机的应用程序分为哪些种类
等等。
这些问题对于学习过《软件工程》 这门课程的同学来说可能会显得比较幼稚但是对于非专业的同学来说理解这些概念有助于帮助自己清晰地认识到自己所从事的方向。
1、应用程序的分类
有关应用程序的分类可以参考知乎上的回答 —— 应用程序有哪些细致的分类 - 知乎
针对一般的个人计算机而言根据运行平台我们日常接触的最多的应用程序可以分为 Desktop 应用程序以及 Web 应用程序。 Desktop 桌面应用程序 这里不提供有关“桌面应用程序”精准的定义。一般来说开发者将代码打包成可执行文件或安装包用户需要在本地计算机上安装的应用程序可以认为是桌面应用程序。比如常用的 Word、Excel、微信等等 Web 网络应用程序 一般指的是无需在本地计算机上安装开发者将程序部署到服务器上用户可以直接通过浏览器访问的应用程序。常见的网络应用程序有网页邮箱、购物网站、网络论坛、博客、网络游戏等诸多应用 参考链接
什么叫桌面应用程序 - 知乎什么是Web应用程序 - 知乎网络应用程序 - 维基百科
2、前端和后端
前端开发和后端开发是软件开发中的两个不同的领域。 前端开发 主要涉及网站和 App 用户能够从浏览器或屏幕上看到的东西比如内容、图片、按钮、动画等。 后端开发 主要涉及网站和 App 用户看不到但又被用来为前端提供支持的东西比如服务器、数据库、中间件等。 前后端开发需要考虑的是如何实现相关功能和信息数据的存取、平台的稳定与性能等等。 我们可能会在 Web 开发领域经常听到这两个名词概念但需要注意的是前端和后端这两个概念不仅仅局限于 Web 应用程序开发领域的这两个概念适用于整个软件架构和程序设计领域。是将软件不同功能的部分相互分离的抽象。 参考链接
前端和后端 - 维基百科一文看懂前端和后端开发 - 知乎
3、GUI 和 CLI Command- Line Interface 命令行界面 是在图形用户界面得到普及之前使用最为广泛的用户界面它通常不支持鼠标用户通过键盘输入指令计算机接收到指令后予以执行。也有人称之为 字符用户界面 ( Character User Interface, CUI)。 常见的 CLI 程序有 bash、 cmd.exe、 Windows PowerShell 等等。 Graphical User Interface 图形用户界面 是指采用图形方式显示的计算机操作用户界面。允许用户通过图形图标与电子设备进行交互而不是基于文本的用户界面、键入的命令标签或文本导航。 在图形用户界面中计算机画面上显示窗口、图标、按钮等图形表示不同目的之动作用户通过鼠标等指针设备进行选择。 小到一款具有图形用户界面的应用程序或者工具软件如文件资源管理器等大到操作系统的桌面环境如 GNOME 等它们都属于 GUI 程序。 有关 GUI 的介绍还可以参考知乎上的回答 —— 图形用户界面GUI入门详解 - 知乎 通过以上的了解我们知道无论是桌面应用程序、Web 应用程序、移动设备 APP、嵌入式设备程序甚至系统级的软件只要是通过图形界面为用户提供交互的都可以称之为是 GUI 程序。 参考链接
命令行界面 - 维基百科图形用户界面 - 维基百科Graphical user interface - Wikipedia
4、GUI 程序框架 在实际开发过程中我们有更大的概率是去开发 GUI 程序而不是 CLI 程序这就涉及到有可能接触各种各样的框架。虽然 GUI 涵盖的范围很广但通常人们谈论 GUI 程序时基本上都指的是基于图形用户界面的桌面应用程序。 GUI 程序框架是一种用于开发图形用户界面的软件库或工具包它提供了一些基本的组件、控件、布局、事件处理等功能让开发者可以更方便地创建和管理 GUI 应用程序。GUI 程序框架有很多种不同的框架可能支持不同的语言、平台、风格和功能。GUI 框架通常只涉及用户界面的设计和实现不涉及业务逻辑和数据处理。下表列举了一些常见的 GUI 框架
框架名称介绍Qt一个跨平台的 C 图形用户界面应用程序开发框架它支持数据驱动的编程模型有自绘引擎提供了大量的与界面无关但与软件开发息息相关的 API也有其他语言的绑定比如 Python 的 PyQt 和 PySide。GTK一个跨平台的 C 语言图形用户界面应用程序开发框架它也支持数据驱动的编程模型有自绘引擎Cairo也有其他语言的绑定比如 JavaScript、Rust 等。GTK 商业授权很友好但它主要针对 Linux 平台对 Windows 和 Mac 平台的支持不太完善。wxWidgets一个跨平台的 C 图形用户界面应用程序开发框架它没有自绘引擎而是对不同平台下的界面 API 做了整合和封装让开发者可以创建符合本地风格的 GUI 应用程序。wxWidgets 商业授权很友好也支持静态连接但它提供的组件样式比较刻板。FLTK一个跨平台的 C 图形用户界面应用程序开发框架它非常轻量级支持静态连接有自绘引擎OpenGL但它的重绘机制有一些问题需要开发者自己处理。FLTK 商业授权很友好但它提供的组件样式和绘图 API 都比较少。Duilib一个基于 Windows 平台的 C 图形用户界面应用程序开发框架它基于 DirectUI 开发不支持跨平台但它提供了丰富的组件样式和特效。Duilib 商业授权很友好但它对高分屏支持不佳也没有提供系统级的 API。Sciter一个跨平台的闭源 GUI 框架它内部封装了一个浏览器核心Chromium让开发者可以使用 HTML,CSS,JS 来创建界面。Sciter 商业授权不友好个人开发者可以免费使用只能用动态链接库公司规模超过 3 人就得买版权了才能静态连接。Tkinter一个轻量级的跨平台图形用户界面GUI开发工具是 Python 的自带的官方标准库。Tkinter 上手简单, 做个简单的小工具基本够用了但它不够美观功能太单一。
5、GUI 程序的编程模型
GUI 程序是一种基于图形用户界面的应用程序它可以让用户通过鼠标、键盘等输入设备与程序进行交互而不需要记忆复杂的命令。
GUI 程序的编程模型通常是事件驱动的也就是说程序的执行流程是由用户触发的各种事件来控制的比如点击按钮、选择菜单、输入文本等。事件驱动的编程模型的优点是可以实现高度的交互性和灵活性缺点是可能导致逻辑分散和难以维护。
除了事件驱动之外GUI程序还可以采用其他的编程模型比如 帧驱动 这种编程模型适用于需要实时渲染的应用比如游戏、动画等。帧驱动的基本思想是每一帧都执行一次更新和渲染的循环以保持画面的流畅和响应。帧驱动的优点是简单易用可以方便地控制渲染速度和质量。帧驱动的缺点是可能出现卡顿、掉帧、不同设备上运行效果不一致等问题。 数据驱动 这种编程模型把数据和处理分开用单独的数据模型来定义数据的结构和关系用处理类来实现对数据的操作和逻辑。数据驱动的优点是可以实现数据和表现的分离提高代码的可维护性和复用性。数据驱动的缺点是可能增加开发的复杂度和学习成本。 模型驱动 这种编程模型使用可视化建模技术来定义数据关系、流程逻辑和构建用户界面使开发人员和业务用户能够快速交付应用程序而不需要代码。模型驱动的优点是可以降低系统开发和维护门槛支撑快速开发和运维。模型驱动的缺点是可能上手难度比表单驱动高。 5.1、数据驱动编程模型MVC、MVP 和 MVVM
在 GUI 程序中常见的数据驱动模型有 Model- View- Controller 把程序分为三层模型层负责管理数据视图层负责显示用户界面控制器层负责处理用户输入和业务逻辑。MVC 的优点是可以实现高内聚低耦合方便进行单元测试和团队协作。MVC 的缺点是可能导致控制器层过于臃肿难以维护。 Model- View- Presenter 在 MVC 的基础上把控制器层替换为展示器层展示器层负责将模型层的数据转换为视图层所需的格式并处理视图层的事件。MVP 的优点是可以进一步解耦视图层和模型层提高视图层的可测试性。MVP 的缺点是可能增加代码量和复杂度。 Model- View- View Model 在 MVP 的基础上把展示器层替换为视图模型层视图模型层负责维护视图层所需的状态并通过双向绑定机制与视图层同步。MVVM 的优点是可以减少视图层和视图模型层之间的代码交互提高开发效率和用户体验。MVVM 的缺点是可能导致内存泄漏和性能问题。 这三者即常见的软件架构设计模式 6、了解自己喜欢的方向
对 Windows 应用程序开发感兴趣的同学可以参考 MSDN 上有关 Windows 应用开发文档入门对 Windows 桌面应用程序开发感兴趣的同学可以参考 MSDN 上编写适用于 Windows 的应用选择开发技术文档选择适合于自己的开发技术对 Web 应用程序开发感兴趣的同学根据前端和后端 Web 开发可自行了解相关的技术栈