诗意代码,九重花瓣
![]() |
这首诗是关于一个花朵生长的故事,每朵花都有一个美丽的颜色。当你爱的人看到的时候,这花朵将会绽放,五彩缤纷;当被触碰的那一刻,就会变成灰色。可是TA 会在再一次被触碰的时候,变幻形状,每一次都绽放如初。就如同在爱人面前不断改变自己。
在程序员的世界里面,他们手工创造出这样的花朵,向他们的爱人表达他们的爱的语言;没有言语,只有诗意的代码。
![]() |
那邀请你一起来进入代码的语言世界,读这首唯美的代码诗吧。
ea814f4 POEM: 9*19 flowers
02d0dc0 Handcraft flowers from maths and lines,
aa14064 Choose the colors to make them shine,
ad4e12c Till the soil to plant the seeds.
700b967 .
7cea9e1 See me to make me glow
93c57f8 Touch me to give you more
e023bd0 Touch me you'll never stop
e146d2c Please touch me again.
9*19朵,
我愿做那其中的一朵,
诉说着方程的曲线,数学的唯美;
我在这里种下种子,静默等候;
我为你选择绽放的颜色;
只待你看到我的第一眼发出光芒;
每一次的触碰,都记录下共同谱写的记忆;
刷新着一幕幕,将要上演的故事。。。
![]() |
看,这每一行的代码都有着独特的意义。
e023bd0 Touch me you'll never stop 每一次的触碰都刷新着故事,不会停止
+ function stop_touching(d, i) {
+ }
这个程序中,function beautiful_color() 函数,产生了这些最美丽的花朵。
function beautiful_color() {
var dark = 120, light = 150, color, rgb, r, g, b;
for (var i=0; i < 20; i++) {
color = ('ffffff' + Math.floor(Math.random() * 0xFFFFFF)
.toString(16))
.substr(-6);
rgb = parseInt(color, 16);
vector = {
r:(rgb >> 16) & 0xff,
g: (rgb >> 8) & 0xff,
b: (rgb >> 0) & 0xff
};
luminosity = 0.2126 * vector.r + 0.7152 * vector.g + 0.0722 *
vector.b; U-R BT.709
if (luminosity > dark && luminosity < light)
return "#"+color;
}
return "#"+color;
}
function start-touching (d,i) 是开始触碰的函数,画出了变幻形状的效果。
function start_touching(d, i) {
if (touching === i) return;
touching = i;
d[0] = random_int(1, 11);
d[1] = random_int(1, 11);
if (d[0] == d[1]) d[1]++; // deleting ugly flowers
var flower = d3.select(this);
flower
.transition()
.delay(10)
.duration(1000)
.attr("d", handcraft_flower)
.style("stroke", "#ccc");
}
![]() |
等待着你可以看见的第一眼
绽放的那一刻,只因爱的人的第一眼
每一次的触碰
点击文尾阅读全文,可以体验花朵代码运行效果。
Code is the language used to communicate with computers. It has its own rules (syntax) and meaning (semantics). Like literature writers or poets, coders also have their own style that include - strategies for optimizing the code being read by a computer, and facilitating its understanding through visual organization and comments for other coders.
Code can speak literature, logic, maths. It contains different layers of abstraction and it links them to the physical world of processors and memory chips. All these resources can contribute in expanding the boundaries of contemporary poetry by using code as a new language. Code to speak about life or death, love or hate. Code meant to be read, not run.
代码是和计算机交流的语言,具有自己的语法和语义。和文学作者或者诗人一样,编码员也有自己的风格。他们具有优化代码的战略,通过可视化的组织和注释来使得代码更加容易读取。
代码是文学,逻辑和数学的发言人。包含不同层次的抽象化概念,把他们和处理器和内存条的物质世界联系起来。使用代码作为一个新的语言,扩大了诗歌的界限。代码可以讲述生与死,爱与恨。代码不只是运行,还可以阅读。
语言背后的数学:第一个网格是矩阵,使用行和列的位置的值产生花朵。数学公式是:
r = cos(kt)
where r = cos(kt)
当我们看到视觉效果的时候,当行和列的数字相同的时候,K=1,因此我们得到同一性的花。如同下面公式:
![]() |
当我们不断变换K, 例如k=2/1,我们得到第二朵花。
![]() |
隐藏在数学里的线条灵动而神秘
盛开的花瓣为宁静的自然喝彩
泥土的芳香散发种子的气息
每个线条都闪耀数学的光芒。
点击文尾阅读全文,可以亲身体验花朵代码运行效果。
用计算的力量改变世界是每一个程序员的梦想,而yak正是用计算将教育和科学的结合变成人生的财富。把艺术,算法和数学融入完成全新的表达,用计算模拟的方法重新学习理化生,站在数据的角度重新审视社会科学。从这些角度来看,我们yak能够成为帮助孩子启蒙的启示录,帮助每一个未來數字公民真正理解現代科技剧变对生产力的巨大解放,真正适应未来社会的不确定性。