一天中午走在路上,顺道去看了学校新媒体艺术与设计系的学生优秀作品展。看到一个logo设计时引发了我很大的兴趣,觉得设计的非常清新活泼,不过并没有拍下来,在这里不能贴图。但是logo设计大家应该都有所概念,也没必要解释。

出来的路上我在想为什么这个logo设计可以如此吸引我,让我觉得设计得很赞。我想,所谓的logo设计就是利用尽量少的元素组合出尽量多的内涵。当我们惊叹于一个logo是如此简约,但是却能给我们视觉或者思维上深刻的印象冲击时,这种少与多的对比就体现出来了。

这里,我倒是还能拿我自己给自己设计的姓名logo做个小例子,也希望感兴趣者不吝赐教。(画工拙劣,请无视)

姓名logo——钱宇祥

这就是我的个人logo,有时候写信就是画个这个表示落款,含义大致如下:

首先,从我的名字着手,“钱”这个字通过那个人民币符号(¥)表现出来,另外整个图片的那个大半圆包着¥,代表的是一个聚宝盆的样子。“宇”字就是这整个图片大致上有一个宇字的轮廓,星星是那一点,然后是宝盖头,下面是一个类似“于”字的东西。“祥”字通过选取半边——即“羊”字,和人民币符号相融合,同时,利用宝盖头上的那颗星星符号预示着个人的美好愿景——做一个宇宙中吉祥的人成为一颗闪亮的星。

同时,因为我是91年出生,属相是羊,在构造¥时,将两个角进行了改动,表现出羊的特征。

于是,我们可以看出来,logo设计就是如何用尽量少的元素进行复用组合,却能涵盖表达出尽量多的含义。而且,解说的过程或许会有点枯燥零散,但是,当你直观地去看这个logo时,同时体会它所传达出的丰富的含义,又会觉得很有意思。人脑就是这么神奇。

但是,这种以少见多并不只是设计中会体现,我在《编程之美》上看到的一道题,其中一个解法让我感受到01字符是如何创造出无限的可能的。

题目在书的第13页——1.2中国象棋将帅问题:大意就是只用一个变量,要你计算出,当棋盘上只有将和帅两个棋子时,哪些位置这两个棋子可以共存(注:中国象棋中将帅在同一条纵向直线上不能共存)

关于这道题,我开始想到的是利用位运算的方式来处理,虽然如果真的要我写具体代码我觉得还是很困难的。我只是觉得只用一个变量解决这个问题,那么这个变量必须能够承载较多的信息才能解决问题,那么充分利用一个字节中每个比特位的话,这似乎还是可行的,每四个比特位代表一个棋子,01组合就可以把将帅的位置都充分表示出来了。

然后,就是那个让我觉得很牛逼的解法了,他是这样解决的:

BYTE i = ;

while(i--){

    if(i/% == i%%)continue;

    printf("A = %d, B = %d\n", i/+, i%+); 

}

这个答案,可以看出只用了一个变量i,其初始值是81。然后通过除运算和取模运算的组合就得出了结果。我分析这个解法时感觉这个解法应该是来自于笛卡尔集。其实,这就在一个集合中取一个合理的子集的问题。

全集U是:{(0,0),(0,1),。。。,(8,8)}两个分量分别代表了两个棋子在各自的那九个格子中的位置,于是,这个集合可以根据第一个分量分成9组,然后,每一组中再找出合适的元素,显然,这个集合中元素个数的总数是9*9=81个。

i/9是表示了分组,因为0~8除以9都是0,代表了第一个元素为0的那个组,后面的%3是因为我们考虑的是纵向直线,这三条纵向直线上的数字也是有关系的,还是加个图表示下直观吧:

将(帅)能够呆的9个位置 

于是,等号左边代表分组,等号右边代表了组内另一个棋子的位置,然后通过对3取模运算,就可以知道是不是在一个纵向直线上了。我为这个解题的思路所吸引在于它的跨学科思考,这算是我们所学的集合的一种运用吧,当时更让我坚定了程序员学好数学是一件多么棒的事,也许它不能给你实际的编程技能上的帮助,但是你看问题的角度和思路是别人所不能企及的,还有就是如何对一个简简单的数字——81,去思考这个数字所能传达的更多的内涵来。

这里我还想多插一句,虽然我知道我已经说了太多的题外话了,其实这道题,如果不对变量数目进行限制的话,我想最直观的解题思路就是两个for循环,遍历所有的可能吧,其实,这个i=81的解法看上去就是这个最原始基本的解法经过更加深入的思考之后所得出的解法。这让我想起过去看动画片《中华小当家》时,里面有一句箴言是这样说的:当你不知道从何入手时,就回到原点。这道题目,她的思考原点就是用两个for循环遍历,我想理解这道题背后解题的思维方式和过程远比惊叹于“这样也行!”要更加有价值吧。而且,书中最后那道题的解法是让我觉得投机取巧的,将一个byte拆成两个,还说自己只用了一个变量,这实在有点。。。。。。但是,我必须要承认这种解法对于数据结构的认识比我要深刻太多了。

对不起,我知道我已经说了太多的题外话,而这道题在我眼里就和之前说的logo设计一样。把那句话——尽量少的元素组合出尽量多的内涵——放到这里,添加一点编程的特点得到的改装版就是——用尽可能少的输入获取尽可能多的输出。而这种少与多背后的支撑点就在于你思考的多少与深浅。

所以,我觉得我们可以很好理解在那个内存寸土寸金的年代为什么有那么多将编程上升到了一种技艺甚至一种艺术的编程大神产生。他们受制于有限的内存,却希望创造无限的可能,这时,思维的火花所迸发出的光芒实在是太绚烂了。如今,对我们来说,我们写程序除了在特定的情况下,完全不需要关心内存问题,我们被提供了无限的空间——我们被卸下了镣铐,但是我们的舞姿变得并没有那么美丽甚至炫目了。当然,我明白,现在我们更多的精力转移到了业务与需求上了,我们势必需要在编程技艺上做出一定牺牲,况且不重复造车轮指导着我们能复用的就不要自己做。所以请别对我有偏激言论说现在依然是有编程的神人存在的云云。我的重点我认为你是懂的。

于是,我还想把这个带着镣铐起舞的概念再延伸一下,我记得以前看莎士比亚十四行诗时,对于莎翁有一个评论是古典十四行诗极其严格的韵律限制使得他为日后驾驭语言提供了很好的训练。我们又可以发现,因为韵律限制,我们又想在这种限制中寻找一种表达的自由时,给我们带来的那种收获。

我想,带着镣铐起舞所带来的是创意与灵感,而不是桎梏与僵化。当然,这里我们必须能够充分发挥作为人的主动性,企图在带着镣铐的情况下跳出绚丽的舞姿,才会真的有效果。

既然我已经跑火车跑了这么远了,我不妨以人生这个巨大的伪命题来结束我的火车之旅。我们都听说过这样一个比喻,人生就是一幅画卷,我们生下来的目的就是在这幅画卷上画出自己的人生来。那么我想说,我们确实没有必要去抱怨我们的人生有太多的限制有太多的不容易,我们手中的画笔和颜料都有限这样的话也没什么意义了。因为,我们发现,如果人生真的提供了一切的原材料,将你身上所有的镣铐卸下,这种无所约束的人生带来的恐怕只会是你对人生无比的迷茫与无所适从。

有限的生命才能带来无限的精彩。

戴着镣铐起舞——从logo设计说起的更多相关文章

  1. 20款精致的长阴影 LOGO 设计【附免费生成工具】

    长阴影(Long Shadow)概念来自于最新非常流行的扁平化设计(Flat Design).扁平化设计趋势影响最大的是用户界面元素和图标,但它也开始蔓延到其他网页设计的其他部分. 长阴影其实就是扩展 ...

  2. 我的Logo设计简史

    近日,日本东京奥运会会微因涉嫌抄袭而被弃用的新闻引起设计界的一翻热论.在此我想到自己的LOGO设计,虽说并一定不好看甚至自己看回来都觉得略丑,但 几乎没有过抄袭的念头.有句话说,不想当设计师的程序猿不 ...

  3. 流行趋势:25款很酷的长阴影效果 LOGO 设计

    长阴影其实就是扩展了对象的投影,感觉是一种光线照射下的影子,通常采用角度为 45 度的投影,给对象添加了一份立体感.长阴影(Long Shadow)概念来自于最新非常流行的扁平化设计(Flat Des ...

  4. 趣味网站5个,小鸡词典/中国配色/名著地图/海洋之音/LOGO设计

    一.小鸡词典 很多流行的词语还没有收录到各大词典,却可以在小鸡词典搜索到,小鸡词典是最全的网络流行词语词典. 不少词条搞笑无厘头,撰写词条还会获得红包. 访问地址:https://jikipedia. ...

  5. 23个适合logo设计的常用英文字体

    在很多国外的品牌中我们都会发现他们的英文字体在logo的运用中,不仅会提升logo的品质还会让logo看起来更加美观.今天我们就来看看都有哪些常常出现在logo设计中的英文字体吧.   字体,与文字本 ...

  6. ui设计教程分享:关于Logo设计要素

      1. 视觉上”一语双关 我最喜欢的一些Logo在视觉设计上”一语双关”,将两张图片.两张意象巧妙结合,合二为一. WinePlace 的Logo就是一个绝佳的案例 这个Logo看起来像图钉,暗喻着 ...

  7. Altium PCB二维码Logo设计(转 crazybingo)

    Altium PCB二维码Logo设计 每次设计PCB的时候,都会在空白部分放Logo上去,一来板卡显得更充实,二来更有成就感一些... 今天突然想着...这两年二维码越来越火,火到快爆发,不如在板卡 ...

  8. 《Dotnet9》建站-本站Logo设计之路

    时间如流水,只能流去不流回! 点赞再看,养成习惯,这是您给我创作的动力! 本文 Dotnet9 https://dotnet9.com 已收录,站长乐于分享dotnet相关技术,比如Winform.W ...

  9. 你会喜欢的25个创意的扁平化 LOGO 设计

    扁平设计的风暴席卷了整个设计领域,它不仅影响网页设计,也影响了用户界面和标志设计.最近,我们看到了很多大公司,如谷歌和必应开始使用扁平设计的标识. 一个 LOGO 应该简单,显眼和精美,以适应产品的整 ...

随机推荐

  1. 在Windows Azure上配置VM主备切换(1)——Linux篇

    对任何一个上线系统来说,高可用设计是不可或缺的一个环节,这样才可以确保应用可以持续.稳定的运行,而不是频繁的掉线.停机.高可用设计的核心思路很简单,就是消除一切单点故障,将单点链路或者节点升级为多点. ...

  2. 计算N!的质因数2的个数

    容易得出N!质因数2的个数 = [N / 2] + [N / 4] + [N / 8] + .... 下面通过一个简单的例子来推导一下过程:N = 10101(二进制表示)现在我们跟踪最高位的1,不考 ...

  3. Python Cookbook笔记

    字符串:s.strip()  删除字符串开始和结尾的空白字符. s.lstrip() 删除左边的,s.rstrip()  删除右边的. 随机数:random.random()  生成0-1之间的数. ...

  4. 玩转iOS开发 - 数据缓存

    Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...

  5. license文件生成原理

      byte解密weblogic加密oraclehex 现在很多J2EE应用都采用一个license文件来授权系统的使用,特别是在系统购买的早期,会提供有限制的license文件对系统进行限制,比如试 ...

  6. jQuery之简单动画效果

    1. show()显示动画 语法:show(speed,callback) Number/String,Function speend为动画执行时间,单位为毫秒.也可以为slow",&quo ...

  7. Android--Service之绑定服务交互

    前言 开篇名义,这篇博客介绍一下Android下使用绑定服务进行时数据交互的几种方法.关于Android下Service的内容,前面两篇博客已经介绍了,不清楚的可以移步过去先看看:Android--S ...

  8. 关于driver_register做了些什么

    现在进入driver_register()函数去看看.在driver_register() 中,调用了driver_find(drv->name, drv->bus)函数,这里是干啥呢?这 ...

  9. 内容提供者 DocumentProvider Uri工具类

    Activity /**详见http://blog.csdn.net/coder_pig/article/details/47905881 Calendar Provider:日历提供者,就是针对针对 ...

  10. JAVA-FileInputStream之read方法

    今天一个友询问FileInputStrem方法的read()和read(byte b) 方法为什么都用-1来判断读文件结束的问题,在此和大家一起学习下. 关于FileInputStream 它用于读取 ...