php怎么让元素随机,Python有哪些欠吐槽的地方?
Neal Krawetz有一群 geek 朋友,经常一起讨论技术话题,有时候也会谈到编程语言。「I hate Python」,作者表示。他对 Python 厌恶至极。即使有现成的 Python 代码可用,他也宁愿用 C 语言重写。为了系统地吐槽 Python,作者专门写了这篇博客,细数 Python 的「八宗罪」。
这个话题已经在 Hacker News 上引发了热烈的讨论(评论 400+),感兴趣的读者可以去围观或参与一下。
Hacker News 讨论:https://news.ycombinator.com/item?id=18706174
1. 版本
如果要安装一个默认的 Linux 操作系统,那你很有可能需要安装多个版本的 Python:Python2、Python3 甚至是 3.5、3.7。原因在于:Python3 无法与 Python2 完全兼容。甚至一些用小数表示的版本(如 3.5、3.7)也明显缺乏向后的兼容性。
我完全赞成往编程语言中添加新的功能,我甚至不介意淘汰一些旧的版本。但 Python 却要分开安装。我的 Python 3.5 代码不适用于 Python 3.7 安装版本,除非我特意将其导入 3.7。很多 Linux 开发者都觉得导出太麻烦,因此安装 Ubuntu 的时候会一并安装 Python2 和 Python3——因为有的核心功能需要前者,而有的需要后者。
向后兼容性的缺乏和各自为政的版本通常会为其敲响丧钟。Commodore 创造了第一批家用电脑(比 IBM PC 和苹果都要早很多)。但 Commodore PET 不能与后续的 Commodore CBM 兼容。CBM 又不与 VIC-20、Commodore-64、Amiga 等兼容。因此,你要么选择花很多时间将代码从一个平台导到另一个,要么选择放弃这个平台。(Commodore 今天何在?早被用户抛弃凉凉了……)
类似地,Perl 也火过一阵。但 Perl3 与 Perl2 的很多代码也不兼容。社区骂声一片,于是一些好的代码导了出来,其他的则被抛弃了。Perl4 也是如此。等 Perl5 出来的时候,人们干脆改用另一种更稳定的编程语言。如今,只有一小部分人还在频繁使用 Perl 来维持之前的项目。但已经没有人用 Perl 创建新的大项目了。
同理,Python 的每个版本也都存在谷仓效应。之前的版本还要留着,最终造成手里有一堆旧的无用 Python 代码,因为大家都不想花时间将其移到最新版上。据我所知,没有人为 Python2 创建新代码了,但我们还留着它,因为没有人想将所需代码移到 Python3.x 中。Python 2.7、3.5、3.6、3.7 的文档都还在 Python 官网上积极维护着,因为他们无法下决心弃用之前的代码。Python 就像一种僵尸编程语言——已经死掉的部分还在以行尸走肉的方式存在着。
2. 安装
很多软件包都可以帮你轻松地运行 apt、yum、rpm 或其他一些安装库,并获得最新版本的代码。但 Python 并非如此。如果用「apt-get install python」安装,你都不知道自己安的是哪个版本,它可能也无法与你所需的所有代码兼容。
因此,你要安装你需要的那版 Python。我的其中一个项目用到 Python,但必须用 Python3.5。所以最后,我的电脑安装了 Python2、Python2.6、Python3 及 Python3.5。其中两个来自操作系统,一个用于项目,另外一个服务于出于其他原因安装的无关软件。虽然都是 Python,但此 Python 非彼 Python。
如果你想安装 Python 包,你应该使用「pip」(Pip Installs Packages)。但由于系统上有一堆 Python,你要注意使用正确版本的 pip。否则,「pip」可能运行「pip2」,而不是你需要的「pip3.7」。(如果名称不存在,你需要为 pip3.7 指定明确的真实路径)
一位队友建议我配置自己的环境,这样的话每种软件都可以使用 Python3.5 的 base 环境。在我需要用 Python3.6 开展另一个项目之前,这种做法是非常行得通的,但是需要 Python 3.6 就得创建另外一个环境。两个项目,两版 Python,一点都不会混,真的(用生命在假笑)。
pip 安装程序将文件放置在用户的本地目录。安装系统级的库时不用 pip。Gawd 不允许你在运行「sudo pip」时出错,因为那会毁了你的整个电脑!运行 sudo 可能会使一些软件包在系统级别安装,有些是为错误版本的 Python 安装的,而你的主目录中的一些文件可能最终归 root 所有,因此未来的非 sudo pip 安装可能会因权限问题而失败。不要这样做。
这些 pip 模块由谁来维护呢?当然是社区。也就是说,没有明确的所有者,也没有强制性的来源链或责任链。今年早些时候,PyPI 的一个版本中发现了一个窃取 SSH 凭证的后门。这也是意料之中。(出于同样的原因,我不用 Node.js 和 npm;我不信任他们的社区项目。)
3. 句法
我非常主张代码的可读性要强。乍一看,Python 的可读性似乎不错。但当你开始创建大型代码库的时候你就不会这么想了。
大多数编程语言使用某种符号来标识范围——函数的开始和结束位置、条件语句中包含的操作、变量的定义范围等。C 语言、Java、JavaScript、Perl 和 PHP 都用 {...} 来定义范围,Lisp 使用 (...)。Python 呢?它用空格!如果你要定义复杂代码的范围,你可以缩进接下来的几行代码,缩进结束时,该范围也截止。
Python 手册说,你可以用任意数量的空格或制表符来定义范围。但是,每次缩进最好使用四个空格!如果你想缩进两次进行嵌套,使用八个空格!Python 社区已经对此进行标准化,即使 Python 手册中并没有明文规定。这个社区就喜欢用四个空格。所以,除非你不打算将自己的代码向任何人展示,否则的话每次缩进最好用四个空格。
我第一次看到 Python 代码时,觉得用缩进来定义范围还挺好的,但这么做有一个巨大的缺陷。你可以进行深度嵌套,但这么做使得每一行都会很长,导致不得不在文本编辑器中换行。较长的函数和条件语句可能会使开始和结束范围很难匹配。而且当你不小心把三个空格当成四个空格,还容易出现计算错误,进而花几个小时来调试和追踪。
对于其它语言,我已经养成了调试代码不带任何缩进的习惯。这样,我可以快速浏览代码,然后轻松地识别和删除调试代码。但 Python 呢?任何没有适当缩进的代码都会产生缩进错误。
4. includes
大部分编程语言都有办法导入其它代码块。比如,C 语言用「#include」,PHP 语言可以用「include、include_once、require、require」。而 Python 用的是「import」。
Python 可以导入整个模块、模块的一部分或模块中的特定函数。C 语言?你可以查看「/usr/include/」。Python 的话,最好用「python -v」列出所有路径,然后从列表中搜索每个目录和子目录中的每个文件。我有些朋友很喜欢 Python,但我看到他们想导入东西时,总得浏览标准模块。
导入功能还允许用户重命名导入的代码。它们基本上定义了一个自定义的命名空间。乍一看,你会觉得挺不错的,但这最终会影响可读性和长期支持。重命名对于较小的脚本来说还是不错的,但对于长期项目来说真的不适用。那些使用 1-2 个字母作为命名空间(比如「import numpy as n」),而且还不按约定俗成的方式来命名的,简直应该拉出去枪毙!
这还不是最糟糕的。大部分编程语言 include 代码的时候就只是导入代码而已。如果有一个带有构造函数的全局对象,有些语言,如面向对象的 C++可能会执行代码。类似地,有些 PHP 代码可能会定义全局变量,所以导入可以运行代码——但这种做法通常被认为很糟糕。相比之下,很多 Python 模块包含在导入期间运行的初始化函数。你不知道在运行的是什么,它要干什么,你甚至可能不会注意到。除非存在命名空间冲突,如果这样就好玩了,你得花很多时间来寻找原因。
5. 命名法
在其它语言中,数组(array)直接称之为'arrays',但是在 Python 中,它们被称为 'lists'。关联数组在某些地方被称为 'hash' (Perl),但是 Python 将其称为「字典」(dictionary)。Python 似乎完全按照自己的节奏来,不使用计算机科学和信息科学领域的常见术语。
此外,Python 库的命名也有问题。PyPy、PyPi、NumPy、SciPy、SymPy、PyGtk、Pyglet、PyGame……(前两个库的发音一样,但是它们的功能完全不同)。我理解「py」表示 Python,但是它们就不能统一出现在前面或后面吗?
一些常见库放弃了类似双关语的「Py」命名约定,包括 matplotlib、nose、Pillow和 SQLAlchemy。虽然有一些命名可能暗示其目的(如 SQLAlchemy 包含 SQL,所以它可能是一个 SQL 接口),但是其它的可能只是随机的单词。如果你不知道「BeautifulSoup」这个库是干什么的,那么你能从命名看出来它是一个 HTML/XML 解析器吗?不过,BeautifulSoup 有很完善的文档且易于使用,如果每一个 Python 模块都这样,我也就不抱怨了,但是大多数 Python 库的文档非常烂。
总的来说,我认为 Python 是一个具有不一致命名约定的函数库集合。我经常抱怨开源项目的命名非常可怕。除非你知道这些项目在干什么,否则你从命名本身中什么都看不出来。除非你知道在寻找什么样的库,不然只能通过别人偶然提及的名字或偶然的机会发现一些库。大多数 Python 库加重了这种现象,也加重了 Python 的负面体验。
6. 奇怪的操作
每种语言都有自己比较奇特的操作。C 语言中使用 & 和 * 获取地址空间和值的命名法非常奇怪。C 语言中还有用 ++ 和—实现 increment/decrement 的捷径。Bash 语言中,在引用特定字符(如用于正则表达式的圆括号和句号)时需要一直考虑「什么时候使用转义符 (\)」。JavaScript 兼容性有问题(并非每个浏览器都支持所有有用的功能)。但 Python 的奇怪操作比我见过的其他语言都多。如:
在 C 语言中,双引号里的是字符串,单引号里的是字符。
在 PHP 和 Bash 中,两种引号都能包含字符串。但是,双引号里的字符串可以嵌入变量。相比之下,单引号的字符串是文字;任何嵌入的类似变量的名称都不可扩展。
在 JavaScript 中,单引号和双引号没什么区别。
在 Python 中,单引号和双引号也没有什么区别。但是,如果你想让字符串跨行,就得用三重引号,如"""string""" 或 '''string'''。如果你想用二进制,那你需要优先选择带有 b(b'binary')或 r(r'raw')的字符串。有时你要用 str(string) 把字符串转换为字符串,或使用 string.encode('utf-8') 将其转换为 utf8 格式。
如果你一开始认为 PHP 和 JavaScript 中的=、==、===有点奇怪,那等你用 Python 中的引号时可能不会这么想了。
7. 通过对象 Reference 传递
大多数编程语言的函数参数传递是传值。如果函数改变了值,结果不会传递回调用代码。但正如我解释过的,Python 偏偏要有所不同。Python 默认使用 pass-by-object-reference 来传递函数参数。这意味着改变源变量可能最终会改变值。
这是面向程序、函数和对象的编程语言之间的最大区别。如果每个变量都由对象引用来传递,并且变量的任何变化都会改变所有的引用,那你可能使用的都是全局对象。通过不同的命名调用相同的对象不会改变对象,所以实际上它就是全局的。此外,正如 C 的程序员早就学到的,全局变量太恶心了,别用。
在 Python 中,你必须通过值来传递变量,例如「a=b」只是给相同的对象空间分配了另一个命名,但并没有复制 b 的值给 a。如果你真的想要复制 b 的值,你需要使用一个 copy 函数,通常是「a=b.copy()"的形式。然而,注意我说的是「通常」。不是所有数据类型都有一个「copy」原型,或者 copy 函数可能是不完整的。在这种情况下,你可以使用单独的「copy」库:"a=copy.deepcopy(b)"。
8. 本地命名
用所用的库或函数的名字来命名程序是常见的编程技巧。例如,如果我用一个叫做「libscreencapture.so」的 C 库来测试一个截屏程序,我会将该程序命名为「screencapture.c」并编译为「screencapture.exe」。
gcc -o screencapture.exe screencapture.c -lscreencapture
在 C、Java、JavaScript、Perl、PHP 等语言中,这通常很有效,因为这些语言可以轻易地辨别本地程序和资源库,它们有不同的路径。但 Python 呢?还是算了吧,千万别这样做。为什么?Python 会假定你首先要导入本地代码。如果我有一个名为「screencapture.py」的程序使用了「import screencapture」,那么它将导入自己而不是系统库。至少,你应该调用本地程序「myscreencapture.py」吧。
并非一无是处
Python 是一门非常流行的编程语言,有很多粉丝。甚至我的很多朋友都很喜欢 Python。多年来,我和他们讨论过这些问题,每次他们都点头表示同意。他们并不反对 Python 存在这些问题,只是认为这不足以浇灭他们对这种语言的热情。
我的朋友经常提到那些非常酷的 Python 库。我同意一些库非常有用。例如,BeautifulSoup 是我用过最好的 HTML 解析器之一,NumPy 使多维数组和复杂的数学更容易实现,而 TensorFlow 对于机器学习非常有用。但是,我不会因为喜欢 TensorFlow 或 SciPy 而用 Python 创建单片程序。我不打算为了这些「蝇头小利」而放弃可读性和可维护性,这不值得。
通常当我写一篇关于某个主题的批评时,我也会尝试写一些积极的东西。但我没办法列出关于 Python 的好的方面,因为我真的认为 Python 很糟糕。
PHP输出随机中文有哪些方法?
计算机处理的一切都是字节,字节表示的是什么都是根据定义来的,中文也是一串字节,他们集中在一定的数值范围内,你只要生成一些那个范围内的随机数,然而让程序将他们作为字节处理就行了。
程序员是不是吃青春饭的呢?
都说程序员是吃青春饭的,35 岁之后失业就不得不离开这个行业。大部分互联网公司在招聘时会限制年龄 35 岁以下,裁员时,35 岁以上的人员也是重灾区...难道程序员真的就是在 35 岁该退休了吗?
为什么软件开发行业看不见白发苍苍的程序员?大龄程序员都去哪里了?各个公司会辞退大龄程序员吗?如果一位 50 多岁的程序员申请 20 多岁或 30 多岁的职位,有多少公司会雇用他们呢?关于这个问题,有很多流言传说,也有一些残酷的现实。当然 40 岁,甚至是 35 岁就被当作“老人”就委实很让人震惊。*这里的“老人”一词指的是程序员可以计划退休或换个工作了。首先,我们来一组统计数据。01程序员 40 岁就该退休了?Stack Overflow 在前两年对全球的 66329 名专业开发人员进行了调查。结果如下图:但我发现有些调查的统计数据有一些相互矛盾的。在专业开发人员中,35 岁以下的程序员占 71.7%,40 岁以下的占 85%,与其他任何行业相比,这组数字都很不寻常。透过 50705 份调查结果,我们发现,澳大利亚和美国的开发人员的平均年龄最高,为 32.8 岁;印度最低,为 25.9 岁。根据这份研究报告,年龄在 55~64 岁之间的软件开发人员的数量,从 2011 年的 87000(8.3%)增至 2019 年的 195000(10.7%)。其中美国的高龄开发人员数量高于大多数国家。但是,情况每一天都在发生变化。根据 Evans 的统计数据,全球约有 2400 万开发人员,到 2024 年,这一数字将再增长 20%,达到近 3000 万。美国目前拥有约 440 万软件开发人员,数量最多,但印度有望于 2024 年赶超美国。另外,亚洲的软件开发人员数量在不断增加,但软件开发人员的平均年龄则日渐降低。02为什么年长的软件开发人员如此稀有?①高昂的薪资很显然,经验丰富且年龄偏大的软件开发人员拿到的薪资理应高于年轻人(尽管有时未必),而且他们的期望值也会偏高。问题在于需求。软件公司是否需要这些经验丰富的开发人员?他们值得雇佣吗?基本上可以说,答案是否定的。各个公司往往并不需要大量经验丰富的高级开发人员。每个公司都需要面对现实的问题,负担大量高薪的高级开发人员的压力可不小。②换工作绝大多数开发人员都会找到一种无需编写代码即可赚更多钱的方法。因此,换工作是另一个原因。③永无止境的学习技术、编程语言和框架的发展日新月异,所以许多年长(甚至年轻)的开发人员都跟不上时代的步伐。随着年龄的增长,人们还要负担很多其他责任。他们往往没有足够的时间来学习新技术。这是这个行业没有太多高龄开发人员的另一个原因。其他行业的专业人士就无需面对如此巨大的学习压力。程序员需要没完没了地学习新技术。④环境随着时间的流逝,大家会逐渐注意到自己成为了团队/公司的老一辈,周围是一群年轻的程序员。由于代沟以及其他的一些因素,许多人无法与年轻的程序员很好地沟通。他们感到在工作中很孤独。这是另一个原因。⑤相对较新的行业与其他行业相比,软件行业比较新。这是最大的原因之一。随着行业的发展成熟,希望我们有机会看到更多年长的开发人员。03程序员如何生存对于许多人来说,编程不仅仅是一份职业。最近,我在阅读一些相关的文章时发现,许多 50 岁以上,甚至 60 岁以上的开发人员仍在从事编程。他们中的一些人也有其他的工作机会,但是他们都拒绝了,因为他们喜欢编程。其实,能够从事自己喜欢的工作,是人生一大幸事!但是,无论你喜欢与否,如果想长期从事这个职业,就需要牢牢记住一些忠告。无论你是年轻还是年长,所有程序员都需要记住:时刻努力学习新技术,否则就会被时代抛弃。①紧跟年轻人的思想除了便宜以外,各个公司喜欢招募年轻开发人员的原因还有两个:他们渴望学习。他们很好奇,喜欢学习新鲜的事物。他们学习的知识都很先进。他们可以激发很多新想法,并分享新的观点。因此,请紧跟年轻人的思想。只要有年轻的心态,年龄无关紧要。②放下“技术包袱”许多程序员都有技术“包袱”。请放下包袱,对新技术保持开放的心态。如果某个程序员长期从事某个特定的编程语言,而没有任何其他方面的工作经验,则一些招聘人员会视之为危险信号。04程序员的出路阅读至此,你可能会想:“在工作一段时间后,年长的程序员是不是都会迫不得已寻找其他出路?”答案是,大多数人都不需要。下面,我们来看一看大多数程序员的出路:①技术管理由于公司可以花更少的钱雇佣年轻、有朝气的开发人员,因此经验丰富的开发人员就需要担负起一些重要的角色,比如一线或二线的经理。②资深顾问年轻人虽然有很多优势,但是他们无法承担起顾问的角色。经验丰富的开发人员可以考虑顾问一职。而且顾问也可以赚到很多钱。③自由职业者还有一些人成为了自由职业者,按照自己的想法工作。④专业领域的专家许多年长的开发人员都成为了专业领域的专家。某些特定领域对经验的要求一直很高。⑤提前退休还有一些开发人员选择了提前退休,并成为年轻开发人员的培训师。⑥出来创业许多经验丰富的开发人员会利用自己的人际关系和技术,然后再拿出一部分资金来创办新的科技公司或创业公司。⑦继续做程序员是的,这也是一种选择,许多开发人员到了 50 岁,60 岁仍在从事软件开发。技术力可以让他们在这个行业中继续生存下去。05高龄开发人员都会担心工作的稳定性。他们往往会承担很大的心理压力。我认为如果提前做好准备,就可以避免这种情况。新的编程语言、框架和库层出不穷,因此要不断地学习。有时技术人员常常会忽略这一点。但现实情况是,这些技术很快都会过时。Zoho 的首席执行官 Sridhar Vembu 进行了一项实验,他们直接雇佣了一批 17 岁的高中生。然而,他发现,两年后这些新员工在工作中的表现与受过大学教育的同龄人几乎没有什么区别。难留少年时,总有少年来。软件开发是否真的会成为年轻人的游戏?尽管我个人认为年龄只是一个数字,但前提是程序员都不会因年龄而陷入困境,并保持积极学习的心态。你认为如何?所以保持积极学习的心态,程序员都不会因年龄而陷入困境的!如何学会游戏开发和策划?
首先,你必须清楚地知道游戏策划的工作涵盖了多少内容。打个比方,假设你现在是在玩一款名为游戏策划的游戏,首先你必须找到你的技能树,并且看清楚,这课树的枝桠分向了哪几个方向,进一步确定你的额技能点到底应该怎么点(我本人做过文案策划和系统策划,所以这两方面讲的相对清楚一些)。
1.文案策划(RPG类游戏均需要的专业性人才)
简介:只要是RPG类的游戏,不管是mmo还是卡牌,只要这个游戏拥有剧情,它都需要至少一个文案策划。这一类策划负责游戏的剧情设计,角色设计、世界观设计、对白撰写、文本撰写、道具描述撰写、装备描述撰写、活动包装等等等等。简而言之,就是游戏之中所有与文字及ip相关的事宜,都是由文案策划负责。
必备技能:
(1)文字表达能力
最起码要做到逻辑清楚,表达准确。
进阶阶段就是要语言优美,文笔流畅。
再递进的阶段就是博览群书,言之有物,不管是引经据典,还是自写诗词样样精通。烛龙在招收文案策划的时候一般都会加上一句,中文系毕业最佳。
(2)设计能力
最基础地是要能够设计出一个体量较小的完整故事,也就相当于是网络游戏里的支线任务水平。这其中包含了角色性格设计、情节逻辑设计及最基础的部分玩法设计。支线任务这种程度,不可能有专门的玩法组来配合,只能依靠自己。
进阶阶段是要能够独立设计出至少100环的主线任务故事。在这一阶段,必须要做到设计出的人物不能走形,任务逻辑清楚有趣。但其实它本质上还是人物设计,并没有想象的那么困难。
再递进的阶段就是ip、世界观设计。牵扯到游戏历史、背景,包括游戏世界到底是怎么出现的,是如何一步一步衍化成如今这个面貌,涉及到多少势力、种族,这些势力、种族之间的关系如何,每个势力、种族经历过什么样的历史,有哪些英雄人物等等等等。
(3)看图说话能力
简而言之就是包装,不是所有游戏都能做到文案先行的,很多时候都是其他策划做好了装备、道具交给文案策划包装,也就是这东西到底叫什么,为什么叫这个。他们会提供的只有这个装备or道具到底是干什么使的,以及它到底长个啥样子。也就没有啥进阶能力,反正你只要包得足够靠谱就ok。
2.系统策划(是个游戏就需要的专业性人才)
简介:要了解这个工种,首先要知道什么是游戏系统。用比较学术的说法就是,具有某种功能性的整体,即为系统。用比较玄学的说法就是,你在游戏过程中,能通过感观体验到的所有内容都属于系统。做任务,有任务系统,打副本,有战斗系统,就算脱离了rpg游戏的壳子,玩儿个王者农药,你以为就没有系统了?那个蛋疼的符文,也是系统。不客气的讲,一个合格的系统策划,构建了游戏的底层逻辑。
在说到必备技能之前,首先必须看清楚一个系统都由哪些部分构成,请看下图。
这四大块共同构成了系统。一个完整的系统体验是什么样的?以windows窗口来举例。首先,用户先点击窗口右上角的小红叉,这之后程序后台在用户看不见的地方进行代码运算,最终得出关闭窗口的指令,并切实地在用户屏幕之上体现出来。这,就算是一个完整的系统操作体验。接下来我们将以上区块按部就班地一个个来分析一下。
ui界面,即用户界面,在游戏当中就是玩家所有可以被操作覆盖的地方。这项工作并不需要完全由系统策划负责,毕竟不是所有的系统策划都拥有一双美工的手。但我们必须要为之后负责此区块的人提供思路。例如,当玩家点击某个按钮时,是否需要弹出一个新的窗口,弹出的这个新窗口需要显示什么。或者,当玩家点击商城中的购买按钮时,是否需要弹出二次确认框,给玩家第二次的反应机会,避免误触操作。这都是系统策划必须考虑的问题。当然,如果你遇到一些过度负责的美工那更痛苦,他or她极有可能会让你提供灵感图,那么你还需要用到viso或ps手动给他拼一个。
底层逻辑,即这个系统到底干什么使的。这个问题看似简单,但其实……
举个阴阳师最简单的签到系统例子。签到系统到底干什么使的?这还不简单?不就签到使的吗!但是作为一个合格的系统策划,想问题绝不能这么片面。首先明确一点,什么是签到?就是玩家每次登陆游戏时,点击界面某个位置,即将作为签到的变量加一。同时每次的叠加,会给玩家发放一些奖励。奖励是否随机?这需要系统策划考虑清楚。当作为签到的变量累积到一定数值时,是否要再给玩家一份奖励?这需要系统策划考虑清楚。这个变量数值是否一直记在游戏服务端上?需不需要定期重置以减轻服务器的计算读取压力?这也需要系统策划考虑清楚。等到问题都考虑清楚了,再把他们整理成程序一眼就能看明白的流程图,大致如下:
代码构成,别害怕,一个成熟的游戏工作室一般情况下并不会让一个系统策划自己撸胳膊挽袖子亲自上前线码代码。但你应该清楚你的系统从程序方面如何实现,因为程序随时有可能在稀奇古怪的地方卡壳,并需要系统策划给出专业性建议。程序逻辑和运用程序语言毕竟是两回事,只要思路够清晰,应付程序暴风骤雨般的提问也是可以应对自如的。
维护管理,自己提的需求,跪着也要自己去维护。这是身为一个策划的职业操守,尤其是系统策划。有的是上线的系统被玩家喷得跟坨翔一样,于是只能回炉重造的。
3.数值策划(所有网游、RPG类单机,只要不是纯玩法类游戏都需要的专业性技术人才)
简介:是我个人认为的,游戏策划里最枯燥的一个工种,又累又枯燥。当年我所在的组里,数值组的大佬永远奋战在第一线不说,一到版本日,铁定加班的就是他们了。主要负责游戏投放概率的计算,阴阳师里就是ssr掉落的概率,王者农药里就是开箱子开出英雄来的概率。还有在mmo里,玩家下副本用不同的装备要打多长时间,都是数值大佬说了算。每次升级要攒多久,也要看数值大佬的计算结果。总而言之,就是通过复杂的计算,成功保证游戏的营收与玩家的收获绝对公正,但绝不成正比。
必备技能:概率论、高斯函数、微积分学的不好还是不要考虑这个工种了。
4.战斗策划(有技能的游戏都需要的专业性技术人才)
简介:主要负责游戏中所有与战斗相关方面的设计,包括怪物ai编写,怪物技能设计,玩家角色技能设计,简言之就是在游戏中战斗发生以后,除了双方打对方一下扣多少血,用多少蓝是属于数值策划的范畴以外,感受到的所有东西,都是战斗策划搞定的。所以如果农药某个角色玩儿的不爽,尽情去骂战斗策划吧。
战斗策划有时也细分成两种,一种叫技能策划,一种叫怪物策划。前者专门负责技能的设计,需要遍玩天下各路游戏,达到胸中自有技能的境界。而且在设计时必须考虑到技能平衡,完全依赖数值策划后期靠数值找平,那基本找不平。怪物策划主要负责怪物行为逻辑设计,简单来说,怪物行为主要有两种可能,一种是think,一种是ai。think由程序写死,怪物策划只需修改一些数值即可,一般针对一些比较傻的怪物,看到你扑过来就是揍,看不到你就原地站着不动,这就是think。ai控制则相较而言复杂得多,要考虑怪物什么时候扑过来,扑过来用什么技能,扑过来的时候要不要跟你说句话,简单说,ai控制着所有think无法完成的行动。
必备技能:
(1)起码要熟悉主流游戏的所有技能、技能成长,能够设计出足够合理的技能,并能够胜任不同个体间的技能平衡。
(2)逻辑思维清楚,能弄明白如何编写怪物ai。
5.关卡策划(拥有副本的mmo游戏需要的人才)
简介:现在市面所见的所有pc端的mmorpg游戏,不管是魔兽、剑网三、最终幻想15、天涯明月刀还是天谕都有副本系统。此系统作为mmo游戏的主要玩法,几乎决定了一款mmo的胜败。而决定了这个游戏好不好玩的,除了有些玩家特别讲求的打击感外,还有一个因素,就是各个关卡做得是否独到、有趣。这就需要关卡策划来出谋划策了(有的游戏会用其他策划来兼职这一工种)。
作为关卡策划,要对自己游戏的战斗系统非常了解,要能设计出具备可行性的关卡结构,即负责副本ai的编写。副本ai控制什么时候放出什么样的怪物,该怪物死亡会对副本产生什么样的影响,如果需要出现阻挡玩家进入下一关卡的空气墙,则该空气墙在玩家做了什么操作之后会被消除。这些都需要关卡策划考虑。
必备技能:
(1)起码要熟悉主流mmo的副本关卡,并能够设计出足够合理的副本。
(2)逻辑思维清楚,能够完美地统和副本系统及战斗系统。
(3)具备创新性,起码知道怎样才能做出现在市面上没有的副本关卡来,不然怎么吸引玩家留存?
如何制作高水平简历?
作为猎聘网合作的头部简历顾问,强答一波。
从三个方面给你建议:
1、整体版面在你自己打印简历带去面试和自己投递邮箱的简历中,版面的整体视觉效果很重要。
整体结构版面不好不一定被筛掉,但是好的话一定加分。
上图是一个简历成稿的整体截图,主要看整体视觉效果,就比在线简历和很多模板简历要舒心舒服。版面上我们处理主要是做以下几点:
√ 页数控制:不管你经验在丰富简历都不允许超过三页,超过了是无效的,HR没耐心看,所以页面最佳是两页;控制在两页除了内容精简、模块精简外,也需要调控内容排版、页边距控制等,最终输出使得页面是完整的一页、两页或三页,不要有半页那种,一定要填满整个页面。
√ 页边距:页边距一般就正常普通就可以,但是如果为了调整版面使得保证页面显示在控制页数内,那么你可以将页边距调整成为窄边距、甚至自定义页边距为0.3左右。
√ 行距:行距最佳视觉效果是1.5倍,如果内容比较多可以压缩调整,最低不要低于1.2,太密集也就不好看了。
√ 项目编号:简历中文字很多、文字段落也很多,做好同类层级内容段落用同样的项目编号符号,这样就能显得结构清晰,视觉美观。同时每个段落能提炼出是最好的,如下图:
√ 行数:这里指的行数是指我们一段内容的行数,一段内容不超过三行,如果内容超过三行就想把办法精简到两行,实在精简不了,那么这个内容考虑拆分成为两个内容或者子内容。如下图,两行解决不了的内容拆分出子内容板块。
2、内容板块在简历中要规划好内容板块。各大招聘网站在线简历中已经有对应板块划分了,大部分都一致,这里简单说一下重要的几个板块:
√ 求职信:这个板块不需要,提出来说,只是想告诉求职者,真的不需要,写了洋洋洒洒的上千字HR没时间看的。所以不要写求职信了。
√ 基本信息:必要且重要。基本信息包括个人学历、姓名、电话、邮箱、性别、婚育情况等等基本的硬性条件,这些信息是必要的,是HR判断人选的标准,如果有的网站填写时你发现有些信息是可以选填的情况,那也一定要填,很多企业用EHR系统筛选简历的,i要是缺少一些信息字段,可能你投递的简历都无法被检索到。
√ 工作经历:必要且重要。这个不用言说,很重要。有些求职者在个人工作经历中一句话带过自己所有的经历,比如“***年-**年在某企业担任销售岗位,负责销售工作”这么一句话不是你的简历精炼而是自废武功,这样的简历没有任何内容体现,HR是不联系的。
√ 教育背景:必要且重要。主要写个人学历教育信息,不要把培训信息写进去了。
√ 项目经历:看情况填写。这个部分主要视自己所经历的一些具有代表性的、有价值有意义的相关项目,可以拿出来写,如果实在没有不写也没关系。
√ 个人评价:看情况填写。个人评价部分主要是针对自己和应聘工作相关的知识、技能、经验、素养方面的评价,不要走偏了,应聘财务岗位评价自己歌喉好是没有意义的。
√ 其他信息:看情况填写。如果你有考一些证书、获得一些奖项没有地方写,就可以放在这部分。
3、文字内容√ 写事实和数据:不要写感受、也不要写流水账。而是写工作中你经历的什么工作、履行的什么职责、取得什么业绩,取得的成就业绩用对比的方式数据化呈现,比如销售业绩每年完成500万,相较于公司其他同事每月排名第一。
结合到下面的STAR呈现方法来描述。
√ STAR法则:STAR分别表示目标、任务、方法、结果,也就是你履行的职责、做的项目、做的事情是在什么背景下、为了达成什么目标、用了什么工具方法技术最终达成什么样的结果,这样的表达就具有说服力、体现你工作的价值感了。如下图:
以上观点,请参考。 还请不吝点赞关注,给你更多职场方法论。 十三年职场摸爬滚打,老司机、不油条、技术流、脑洞大、用过都说好。