ch3co3h

What is simai's Notation?

simai's notation was created by Celeca in 2013 for denoting the various types of notes appeared in maimai in plain text.
By using combinations of half-width alphanumeric characters according to the rules explained below,
any maimai charts can be accurately denoted using only plain text theoretically.
This notation was first used in simai, a chart simulator for maimai which was first released on February 5, 2013, by Celeca.
Since then, various simulators inspired by maimai have been created by volunteers,
and the simai's notation has often been used as their chart notation.

While Celeca will be closing simai to the public on February 5, 2023,
there are still a certain number of users who use simai's notation, which is why Celeca decided to create this page.
Although some simulators may have extended/further developed simai's notation in their implementation,
only the notation rules officially defined as “simai's notation” are listed here.
For those who want to create a simulator supporting simai's notation,
it is recommended to make the simulator able to handle the notation rules on this page.
Also, if you make such a simulator, Celeca would appreciate it if you could inform Celeca, who has the rights to the simai's notation.
Although it is not necessary to inform, Celeca would be glad to hear from you.

Location of Note Numbers

First, please look at the image below.

 ⑧① 
⑦  ②
⑥  ③
 ⑤④ 

This shows the numbered location of maimai's buttons and sensor areas.
They are numbered 1 to 8 in clockwise order. For sensor areas, each numbered location is further divided into 4 alphabet-numbered sensor areas as explained later.
These numbers are used to represent notes' position, so be sure to remember this.

Chart Definition and Ending

A chart in simai's notation is composed by a series of commas and note notations.

Every comma occupies a certain length of time.
For example, when a comma has a length of 1 second and there are 10 commas in the chart, the chart will have a total length of (10 × 1s =) 10 seconds.

In this case, 【1,1,1,1,1,1,1,1,1,1,1,1,1,】 represents a chart with 10 TAP notes at BUTTON-1, in the density of 1 note per second.

Once the chart definition has begun, the chart can be defined using commas and note notations. However, for dealing with songs beginning with a fade-in section, a large number of commas would be needed.
To save the efforts, there is a parameter which determines how many seconds should pass since the music begins playing when the chart begins at the first comma of the chart.
In simai, this is determined by the parameter “first”.

Since the timing of the beginning of the chart should be determined precisely and accurately, a number with decimal places such as 1.234 seconds is usually used. If “first” is 1.234 seconds, then the same 【1,1,1,1,1,1,1,1,1,1,1,】 chart will have 10 TAP notes at BUTTON-1 at 1.234, 2.234, 3.234, ..., and 10.234 seconds, respectively, after the music begins playing.

Just as a real sheet music has an ending notation,
an ending should be defined in simai's notation, otherwise the music may continue playing endlessly.
※In simai, when the chart definition is longer than the length of the MP3, the chart still ends when the MP3 is played to the end

The end of a chart is denoted by an “E”. If “first” is 1.234 seconds and the chart definition is 【1,1,1,1,1,1,1,1,1,1,1,1,1,E】, the chart progresses until 10.234 seconds, as described above, and since the last comma also has a length of 1 second, the chart ends at 11.234 seconds.

A chart definition in simai's notation is a long string with a large number of commas and note notations and then an “E” at the end.
Line breaks, spaces, and tabs can be inserted in the middle of this string for better readability.
These characters are ignored when the chart definition is being parsed.

Definition of BPM & Length of Notes

In the previous examples, a comma has the length of 1 second.

Although the following example has a BPM which make the calculation difficult on purpose, the length of a 16th note at 174 BPM is 0.08620689655 seconds.
If such length is assigned to every comma, notes with the length of a 16th note at BPM 174 can be placed correctly.
However, it would be troublesome to calculate this manually every time.

The per-comma length can be changed by adjusting the BPM and/or the length divider by using the following notations.

How to Define the BPM

(120) Input the BPM value and enclose it in a pair of round brackets. Since the BPM value should be accurate, a number with decimal places can be used.

How to Define the Length Divider

{2} Input the dividing value and enclose it in a pair of curly brackets. E.g., “{4}” specifies the per-comma length to be a quarter note, “{8}” to be an 8th note, and “{1}” to be the whole note. A number with decimal places can be used but should be avoided because it may cause confusions.

The BPM must be defined before the length divider.
Because the length of notes cannot be calculated unless the BPM value is defined,
when these two parameters are defined together, the length divider should come after the BPM.

E.g., 【(120){2}】 specifies the per-comma length to be a half note at 120 BPM (exactly 1 second). If the BPM value is B and the length divider is T, the per-comma length can be calculated using the following formula: Per-comma length = 240 / B / T (seconds).

Depending on the music, there might be cases where charting to a special sound effect or so with unknown BPM is attempted or matching the vocals precisely is desired. In these cases, 【{#0.35}】, for example, can be used, and the per-comma length after this will become 0.35 seconds. When this notation is used, the per-comma length is already determined, so there is no need to specify the length divider.

These two parameters can be defined anywhere when necessary.

TAP

From here on, note notations which can be added before a comma will be explained.

TAP is the most basic note type in maimai.
TAP's notation is very simple and is denoted by a button number followed by a comma.

TAP that occurs at BUTTON-1 ... 【1,】 TAP that occurs at BUTTON-5 ... 【5,】

To change a TAP into a BREAK TAP, add a “b” before the comma, e.g., 【1b,】, 【5b,】.

HOLD

To place a HOLD, in addition to the button number, how long the button should be held down should also be specified.
For example, for a hold to be held down for the length of a half note at 174 BPM, its held-down length would be 0.68965517241...... seconds.
However, as with the BPM example above, this is also troublesome to calculate manually every time.

If the current BPM is 174, then 【(174)】 has already been placed before.
What is missing is the length divider, 【one half note】.
The held-down length is written as 【[2:1]】 in simai's notation.
The number before the colon denotes the length divider (half note), and the number after colon denotes the multiplier of the length divider (1×). Hence the total held-down length of such HOLD note is (1 × half note =) one half note.
This way of denoting the length parameter is used in both HOLD and SLIDE.

In the actual notation, a button number is specified, an “h” is specified after the button number to make it clear that the note is a HOLD,
and then the held-down length is be specified after both of them.

HOLD that occurs at BUTTON-5 with the held-down length of one half note ... 【5h[2:1],】

This is the basic notation. However, there might be cases where it is more convenient to specify the held-down length to be an exact number of seconds.

HOLD that occurs at BUTTON-4 with a held-down length of 5.678 seconds ... 【4h[#5.678],】 HOLD that occurs at BUTTON-4 with a held-down length of one half note at 150 BPM ... 【4h[150#2:1],】

To change a HOLD into a BREAK HOLD, add a “b” after the “h” like 【5hb[2:1],】. It does not matter whether the “h” and the “b” are swapped, as in 【5bh[2:1],】.

SLIDE (Basics & Shapes)

To place a SLIDE, many parameters should be specified,
such as the starting and ending button numbers, how they are to be connected with the arrow track, and how long the tracing star is to move.

Although SLIDE has gone through remarkable development in the history of maimai, and many features have been implemented to it,
this section only describes the basic notation and the shapes of SLIDE.

The format of SLIDE's basic notation is a combination of 【starting point, shape of track, ending point, and tracing length】.

BUTTON-1 to BUTTON-4, straight shape, tracing length of 3 8th notes ... 【1-4[8:3],】

The 【[8:3]】 part at the end of the notation is specified using the same concept as the held-down length described for HOLD.
For SLIDE, there is a waiting time after the approaching star-shaped TAP reaches the judgment line
and before the tracing star actually begins to move.
Specifically, it is one beat at the current BPM.
The tracing length of the SLIDE and the waiting time for the tracing star to start moving can be directly specified in seconds as follows:

Status ... BUTTON-1 to BUTTON-4, straight shape, 120 BPM Waiting time is one beat at 160 BPM, tracing length is three 8th notes at 160 BPM ... 【1-4[160#8:3],】 Waiting time is one beat at 160 BPM, tracing length is 2 seconds ... 【1-4[160#2],】 Waiting time is 3 seconds, tracing length is 1.5 seconds ... 【1-4[3##1.5],】 Waiting time is 3 seconds, tracing length is three 8th notes at current BPM ... 【1-4[3##8:3],】 Waiting time is 3 seconds, tracing length is three 8th notes at 160 BPM ... 【1-4[3##160#8:3],】

The arrow track of a SLIDE has many possible shapes.

”–” ... Straight shape Connects the start to the end in a straight line. “>”, “<“, “^” ... Arc shape Connects the start to the end along the circled judgment line. If the direction of travel is to the right, use “>”. If left, use “<“. If the distance is shorter than half the circle, “^” can be used and thinking of the direction is thus not needed. “v” ... v-shape Connects the start to the end through the screen center as the turning point in two straight lines. “p”, “q” ... p-shape, q-shape Connects the start to the end while curving around the screen center. “s”, “z” ... Thunderbolt shape Connects the start to the end with three short lines in the shape of a thunderbolt symbol (⚡). “pp”, “qq” ... Grand p-shape, Grand q-shape Connects the start to the end while curving along an imaginary circle which is tangent to both the screen center and the circled judgment line. “V” ... Grand v-shape Connects the start to the end through a middle turning point in two straight lines. The line connecting the start to the middle turning point is always a short straight line. “w” ... Fan shape Connects the start to three ends in an expanding track in a shape similar to a folding hand fan. Three tracing stars going to each end are spawn for this SLIDE shape.

For the “V” SLIDEs, the middle turning point is specified by an extra button number in addition to the button numbers of the starting and ending points.

Starting point is BUTTON-1, turning point is BUTTON-3, ending point is BUTTON-5 ... 【1V35】

Every SLIDE has a constant tracing speed from the start to the end.

To change the track of a SLIDE into a BREAK SLIDE, add a “b” after the “]” like 【1-4[8:3]b,】.

The allowed positions of the ending point relative to the starting point are restricted by the shape of the SLIDE.
The following table lists the possible combinations of starting and ending points of each SLIDE shape where the arrow track of the SLIDE can be drawn normally.

SLIDE (Multiple & Chaining)

Multiple SLIDE

Multiple SLIDE refers to a SLIDE note with two or more arrow tracks stating from a single star-shaped TAP.
Each SLIDE arrow track is specified with its own set of parameters, since every set of parameters may be different for each SLIDE arrow track, except that the starting point is the same.
The tracing speed can be different for each SLIDE arrow track,
but these SLIDE arrow tracks are treated as EACH because their tracing stars begin to move at the same time.

BUTTON-1 to BUTTON-4, straight shape, tracing length of 3 4th notes, plus BUTTON-1 to BUTTON-6, arc shape, tracing length of 5 8th notes ... 【1-4[4:3]*-6[8:5],】

After the starting button number at the beginning of the note notation, there is no need to repeat that button number.
An “*” can be added after the second SLIDE arrow track to specify the third arrow track and so on.

Chaining SLIDE

Chaining SLIDE is a SLIDE note which composes of multiple SLIDE arrow tracks with their starting and ending points joined together and is treated as a single SLIDE arrow track.
For example, the 【1V75】 arrow track is internally two SLIDE arrow tracks (【1-7】 and 【7-5】) combined into one.
However, the combination is not limited to the grand V-shapes but can be any shape and two or more SLIDE arrow tracks joined together.
No matter how long the chaining SLIDE is, the tracing speed is calculated from the tracing length to be a constant from the start to the end of tracing.

BUTTON-1 to BUTTON-4 with straight shape, BUTTON-4 to BUTTON-7 with q-shape, BUTTON-7 to BUTTON-2 with straight shape, tracing length of two whole notes ... 【1-4q7-2[1:2],】

Specify a series of button numbers and SLIDE shapes and then specify the tracing length at the end.

In the case of this SLIDE, the tracing star continues tracing at a constant speed from BUTTON-1 until it reaches BUTTON-2.
However, there might be cases where different tracing lengths are desired for some of the SLIDE arrow tracks.

In such cases, the tracing length for each SLIDE arrow track can be specified like 【1-4[2:1]q7[2:1]-2[1:1],】.

However, be sure to specify the tracing speed for all individual SLIDE arrow tracks. Otherwise, an error may occur.

To change it to BREAK SLIDE, add a “b” after the “]”, which the same as for regular SLIDE. It is not possible to make only a section of chaining SLIDE into BREAK SLIDE. A chaining SLIDE note can only be either a normal SLIDE or a complete BREAK SLIDE. Therefore, even when different tracing speeds can be specified for some of the SLIDE arrow tracks, the “b” can be added only after the last “]”.

TOUCH, TOUCH HOLD, & Firework Effect

TOUCH

In maimai DX series, there are 34 sensor areas on the screen which the player can touch.
All of these can handle contact events, and SLIDEs require the contact events to be made in a specific order.
Since maimai DX, there have been new types of notes that require directly touching the sensor. They are TOUCH and TOUCH HOLD.

The sensor areas are also divided into five major groups:
Group A, located adjacent to the buttons;
Group B, located between Group A and the center of screen;
Group C, which is in charge of the center;
Group D, which fills the space between the areas of Group A;
and Group E, located slightly inward from Group D and adjacent to Group B.

Group C is in the center and has 2 sensor areas, while each of the other groups has 8 sensor areas which are numbered in clockwise order.

The following diagram shows the approximate location and positioning of the sensors.

To place a TOUCH, the sensor number of the desired location is denoted in the same way as TAP.

TOUCH that occurs at SENSOR-B1 ... 【B1,】 TOUCH that occurs at SENSOR-D4 ... 【D4,】

The sensor in the center is divided into two areas, C1 and C2. However, no TOUCHes appear separately for each of them, instead a TOUCH appears in the middle of the areas. Therefore, a TOUCH that occurs in the center can be denoted as 【C,】 without numbering. Denoting this as either 【C1,】 or 【C2,】 causes no errors and is treated the same as 【C,】.

TOUCH HOLD

TOUCH HOLD is a note that requires the sensor to be pressed and held.
It is counted as “HOLD” in the play result. The awarded score is also the same as HOLD.

This notation is a direct combination of TOUCH and HOLD.
Just simply replace the button number of a HOLD with a sensor number.

TOUCH HOLD that occurs at SENSOR-C with held-down length of 3 4th notes ... 【Ch[4:3],】

While TOUCH has appeared in all 34 sensor areas since DX FESTiVAL,
TOUCH HOLD has only appeared on the C sensor since DX classic, at least until DX UNiVERSE PLUS.
However, in simai's notation, TOUCH HOLD can appear anywhere if the sensor number is specified to be not C.

Firework Effect

Firework effect refers to the rainbow-colored radial effect
that appears as if fireworks are spreading from a certain location when a specific TOUCH is touched.
Since there was no official name for this effect at the time DX classic was launched,
3simai used the name “firework effect” for convenience.

To enable firework effect, add an “f” after the sensor number.

TOUCH that occurs at SENSOR-B7 with firework effect ... 【B7f,】 TOUCH HOLD that occurs at SENSOR-C with held-down length of two whole notes with firework effect ... 【Chf[1:2],】

In the case of TOUCH HOLD, when “h” for HOLD and “f” for FIREWORK effect are specified together,
either “hf” or “fh” is fine.

EACH

If two or more notes occur at exactly the same time, they are treated as an EACH (BOTH).
In the case of SLIDEs, even if their tracing length are different,
they are still considered to be an EACH if their tracing stars begin to move at the same time.
The notes treated as part of an EACH change their color to yellow, except for BREAK notes.

An EACH is denoted by placing each composing note and separating each of them with a “/”.

TAP at BUTTON-1 and HOLD at BUTTON-8 with held-down length of one half note ... 【1/8h[2:1],】 Their order does not matter, so the notation 【8h[2:1]/1,】 works fine. However, for SLIDEs, for example, in 【1-4[8:1]/2-6[8:1],】, 【1-4[8:1]】 will be displayed as if it occurred before 【2-6[8:1]】. In other words, the SLIDE defined earlier will be displayed as if it occurred earlier. Three or more elements are also treated as an EACH and can be denoted as note A / note B / note C ... Only EACHes composing of only non-BREAK TAPs can be denoted like 【12】 without the “/”. The “/” between each note cannot be omitted even if there is only a single non-TAP or BREAK note within the EACH.

EX Notes

TAP, HOLD, and BREAK can be specified as EX notes.
EX notes are judged to be CRITICAL PERFECT if they are hit within the timing window of GOOD or better.
Simulators that support only the autoplay mode always hit notes within the timing window of CRITICAL PERFECT regardless of the notes' EX setting.
However, Celeca have defined the notation because demands are expected for the needs of reproducing official charts
and/or charting for simulators that react to player's input.

To change a note into an EX note, add an “x” in the similar manner for changing the notes into BREAKs.

EX-TAP at BUTTON-1 ... 【1x,】 EX-HOLD at BUTTON-3 ... 【3hx[α:β],】 EX-BREAK at BUTTON-5 ... 【5bx,】 EX-BREAK HOLD at BUTTON-7 ... 【7bxh[α:β],】 When two or more of “x”, “h”, and “b” characters are specified together, they can be specified in any order.

Other Notations

The notations listed below allow charters to create special charts more easily,
such as the UTAGE charts appeared in MURASAKi version.

Change Normal TAP to Star-shaped TAP

A BUTTON-1 TAP is denoted as 【1,】. But if a “\$” is appended and denoted as 【1\$,】, it changes into a star-shaped TAP that would appear if a SLIDE were placed. This can be used in conjunction with a BREAK TAP or an EX-TAP. When two or more of “\$“, “b”, and “x” characters are specified together, they can be specified in any order. Also, if two “$” are stacked to form “\$\$“, the star-shaped TAP rotates. Currently, the rotation speed of the star-shaped TAP is a pre-defined constant.

Change Star-shaped TAP to Normal TAP

When a SLIDE is described as 【1-5[8:1],】, the BUTTON-1 TAP automatically changes into a star-shaped TAP, but if a “@” is appended to the star-shaped TAP as in 【1@-5[8:1],】, this star-shaped TAP changes back into a normal TAP. The SLIDE is processed as usual, so the SLIDE arrow track appears to start from the normal TAP. This can be used in conjunction with a BREAK TAP or an EX-TAP too. When two or more of “@”, “b”, and “x” characters are specified together, they can be specified in any order.

Notations of Pseudo-TAP HOLD and Pseudo-TOUCH TOUCH HOLD

Assuming there is a HOLD denoted by 【3h[1:1],】, if its held-down length is shortened to the limit, the required held-down length becomes instant, and the visual length of the HOLD shrinks as well, giving it the appearance of a hexagonal TAP. Although such a HOLD can be denoted like 【3h[1000:1],】, it can be easily denoted by removing the held-down length notation like 【3h,】. The same notation can be used for TOUCH HOLD. For example, a TOUCH HOLD denoted as 【Ch,】 gives a judgment instantly when hit. This can be used to denote a pseudo TAP or pseudo TOUCH. Note that this notation is treated internally as if 【[1280:1]】 were specified. It is because the held-down length of such notes is implied to be set to the length of a 1280th note in the official fan book sold by SEGA.

Pseudo EACH

When denoting two TAPs that are almost but not exactly simultaneous,
the notes in the nearby section would needed be very fine-tuned in this way:

{96} 1,2,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, {8}

~~~~~~

In the above example, the 96th note length divider was used for the timing gap, and specifying the notes to be closer to each other would be even harder. When strictly reproducing an official chart, this made it infeasible, and when creating a fan-made chart, this could be troublesome. In this case, 【1`2,】 can be used. It makes the BUTTON-2 TAP placed only slightly later than the BUTTON-1 TAP but still almost simultaneous. The BUTTON-2 TAP is processed internally as a TAP that is 1 millisecond later than the BUTTON-1 TAP. Since they are not exactly simultaneous to become a part of an EACH, the two TAPs do not turn yellow and do not count as an EACH on the play result. For example, in 【1`2`¾,】, a BUTTON-2 TAP is placed 1 millisecond after the BUTTON-1 TAP, and an EACH composing of a BUTTON-3 TAP and a BUTTON-4 TAP is placed another 1 millisecond after the BUTTON-2 TAP. Note that, the “`” symbol can be entered by holding down Shift and pressing the “@” key right to the “P” key on a JIS layout keyboard and also by directly pressing the “`” key left to the “1” key on a US or UK layout keyboard.

SLIDE without Star-shaped TAP

When a SLIDE is placed, a star-shaped TAP normally always appears and approaches to the SLIDE's starting point, but this approaching star-shaped TAP can be eliminated. Assume that there is a SLIDE denoted by 【1-5[2:1],】. The tracing star fades in before starting to move ... 【1?-5[2:1],】 The tracing star does not fade in and suddenly appears when it begins to move ... 【1!-5[2:1],】 In both cases, the SLIDE arrow track fades in and the approaching star-shaped TAP does not appear. For creating a chart that letters, symbols, etc. are drawn using SLIDEs, it is recommended to use “?” to make it clear where to start tracing. For creating a chart with single-stroke SLIDEs, using “!” is recommended to avoid displaying extra stars on the screen.

时下已过霜降,秋天就快结束,马上迎来立冬。这种时候,竟还能在屋子里发现蚊子,着实有点意外。大概其预感到自己命不久矣,抓住最后的机会浪上一浪。

我是并不怕蚊子的,似乎天生自带「抗蚊体质」。曾经在夏夜,与人一同室外闲逛,同伴已被叮咬得浑身是包,我却完好无损,发觉这一点后,我便不再与人于夏夜室外久立。也许我该庆幸自己运气好,但总不招蚊子,竟然有种类似阿Q咬虱子不及王胡响的失落感。我想自己被蚊子咬的唯一可能,就是睡前架起蚊帐,但不幸把蚊子困在里面。它飞不出去,又不能眼睁睁饿死,万般无奈,才忍痛对我下口。想到这里,我竟有些羞愧之意。

看到蚊子,我总能想起很久以前听我的一个笑话:问,夏天抓到蚊子怎么办?回答,当然是给它买漂亮衣服进口奶粉,送它上学供它进修,照顾它生活教导它做事,仔细审查它带回家里的小伙,给它找个好婆家风光大嫁。毕竟它体内流的是你的血啊!

不过细想之下,却发觉这个笑话有点问题。我们姑且不论蚊子吸到的人血是否直接进入它的循环系统,就算从某种角度讲「蚊子体内流的是我的血」这条成立,那便是暗指蚊子成了我的孩子。可是,胎儿在母亲子宫里时流的是母亲的血吗?查询之后发现,不然。胎儿与母亲的血液循环是彼此独立的,母亲只是通过胎盘给胎儿营养物质。这一点我们现在很好理解,因为后代的血型不总是同母亲一致。但在没有科学的古代,人们发现婴儿产自母亲体内,又有一根软管相连,自然会产生「孩子与母亲流一样的血」的误解。

于是我又想到,在今天,我们有没有同样的误解?有什么我们认为理所当然但却完全错误的认知呢。我不是未来人,没有资格来回答。但我还是要试一试,因为我不相信一件事的存在可以作为它正确性的证据。也就是说,我总是在思考那些大家都在遵循的规则与惯例究竟对不对。

我们可以看到明显正在进行的改变,就是子女独立意识的觉醒。虽然这种思想源头离现在已经很远,但遗憾的是尊重下一代并没有成为普遍共识,至少在这片土地上还没有。以我自己的家庭为例,子女没有结婚,做父母的内心会有愧疚感,会觉得自己没有尽到为人父母的责任。这就是说,父母干涉子女的生活,干涉他们的人生选择是理所当然天经地义。说得严重一些,就是完全不懂得尊重人。也许他们自己从未明白过,什么是完整独立的人格,为什么人们总会在心理空间及真实空间中渴望一块神圣不可侵犯的私有领地。

也许有人会辩解说他们把孩子从小养大,习惯了始终把孩子当孩子看待。我并不认同这一点。做一个好父亲/母亲与不侵犯边界,尊重并维护子女的独立人格并不矛盾。喜欢干涉的父母从一开始就没有摆正自己的位置。 鲁迅在《我们现在怎样做父亲》里早就提倡幼者本位,放弃旧道德,可惜今天的「圣人之徒」似乎比以前更加得势。也不知道觉醒的人相较之前是更多还是更少。对于那些即将成为父母,或者刚成为父母不久的人,我推荐吴军博士的《态度》,内容是他写给女儿的 40 封家信。读完之后可能你就会发现,这个世界上真的没有什么理所当然天经地义,有的只是人与人之间巨大的差异而已。

我能想到另一个现在视为理所当然,而将来必定会被打破的事,就是恋人的唯一性。这一条一提出来,我都能想象自己直接被打入十八层地狱了。当年鲁迅先生被守旧势力骂「铲伦常」、「禽兽行」,我不能及其万分之一,写的东西又几乎没什么人看,所以还不至于连这话都不敢说。

中国有个说相声很火的人,叫郭德纲。人们听他的相声总会笑,但我总觉得那笑声不太像是开怀大笑,更像是阴阳笑。我并不是很喜欢这个人,因为印象中他总在说一些下三路,嫂夫人,暗示自己给于谦戴了绿帽子。我个人觉得这些桥段非常无聊,并且喜欢听这种段子的人,似乎是被什么东西压抑太久,借此发泄。而众多影视作品、文学作品甚至市井流言,出轨、偷情、打小三这些戏码泛滥成灾。人们总对这些东西津津乐道,那么有没有一种可能,它们都是正常的,只是世俗道德,伦理纲常压制了冲动,扭曲了人性呢?

我们在对社会,对自身有了一定程度的了解之后,必然会对异性伴侣(也有些是同性罢)产生种种要求,但如果有的人希望这些要求都能实现,那恐怕会是件麻烦的事。比如你可能希望有个多金的人保证你消遣娱乐,有个情商高的人陪你谈天说地,有个十分忠诚的人对你卑躬屈膝,有个技术好的人与你夜间鸣奏。但若是把这些要求全部集中到同一人身上,恐怕我们没有办法想象这是个怎样的存在。找到完美恋人的唯一途径,大概只剩下成为刘慈心所著《三体》中的面壁人,可以动用全人类一切资源。想到这一点后,用不同的人来满足自己不同的需求,就顺理成章。

回过头再来说,世俗道德认为伴侣之间应该忠诚,所谓忠诚就是身心都彼此绑定,可这又是从哪里来的呢?首先当然不是生物界的普遍法则,不如说,生物界的法则与这正好相反;同时这又不是人内心真正的需求,否则这类话题就不会为人们津津乐道。那么这种忠诚,必然是规定出来的。什么人会希望人与人之间产生这种约束,从而维系家庭单位的稳定性呢?应该就是统治阶级罢。

其实以上所说两点,还能产生一点关联。如果一个人生在亲权重、父权更重的家庭,他的人格从来不曾完整,思想永远不会独立,那他很可能完全遵守维护伦常,成为「圣人之流」。我想到李轻舟先生在《学不分科》系列讲座中提到的一个词:觉解。一个活着的人,要尽量对自己、对他人还有对世界有所觉解。这样便同那些只会维护宗教教义正确性的人处在了不同的世界。

最近做了一个梦,初醒时还心有余悸,随即便庆幸现状并不如梦中那般恐怖,虽然并没有好太多。然后,我想起早先看过的笛子Ocarina所创作的一部漫画故事——《记忆规划局》。

这则故事于 2017 年 12 月 19 日发布在作者同名公众号上,讲的是未来的科学理论和技术手段可以实现将人的记忆实体化,而有的人可以直接影响这些实体,也就是说可以对记忆进行修改,不过他只能强化、削弱或者删除记忆,并不能凭空创造记忆。于是便产生了一家专门为客户修改记忆的公司。漫画作者说:「每个人都有想彻底忘记的东西,也有想要牢记一生的东西。而如果真的有人能帮你实现这件事,那会如何呢?」

我个人是不会希望去借助外力来修改自己的记忆的。或者可以说,我并没有想要彻底忘记的事,无论是伤痛回忆还是尴尬经历。【星际争霸2:虚空之遗】剧情里有一个叫菲尼克斯的人物,是将一名业已战死的星灵战士的记忆与意识注入到机械躯壳后的产物。他的自我认知并没有变,坚持认为自己只是从沉睡中被唤醒。而当他得知真相后便对自己的身份产生怀疑,于是他问阿塔尼斯:人究竟只是记忆与经验的积累,还是有独立存在的灵魂之类的东西。说白了,他现在还能否背负「菲尼克斯」这个名字。因为真正的菲尼克斯已经死了,他只不过是有一份复制记忆的机械体。而阿塔尼斯的回答则相当鸡贼,他说不管你是谁,你都是星灵伟大的战士,意思就是别想那么多,继续给我卖命就好。(笑)

不过我们也可以为阿塔尼斯开脱一下,毕竟菲尼克斯的那个问题甚是不好回答。理性点讲的话,它根本就是一个建立在记忆可以复制这个错误前提之下的伪命题,没有回答的必要。或许等人类实现了记忆复制,是在早已解决人的自我概念这个议题之后。也许现在我们几乎可以断言,人的自我并不只是包含记忆与经验,人的行为还受基因控制,情绪还被体液激素影响。但即便如此,我仍然不希望自己的记忆被外部操作,哪怕是那些已经入侵我的梦境,对我的现实生活造成影响的记忆。我总觉得,记忆被操作,就相当于人已死亡,因为明明亲身经历过的事,如果记忆完全消失,听起来便如同别人一般,岂非与死亡毫无区别?

回到《记忆规划局》这则故事上,里面有两个客户的例子。一个是某歌手希望公司帮她克服怯场情绪,于是公司削弱了她曾经登台出丑的记忆;另一个是某男希望公司帮她忘掉初恋,因为他总会将现女友同他想象中的初恋相比,于是产生一种类似于精神出轨的负罪感。也许记忆修改在短期会有成效,但我并不认为这是解决问题的恰当途径。怯场情绪产生的原因有许多,但无论如何,还是要改变认知,明白观众眼中的自己和自己眼中的自己不是一回事。修改记忆也许可以一时起效,但如果还是会继续登台,那大概率免不了再有失误,到时候造成的后果怕不是会更严重。而某男的问题就更简单了,他之所以会不断想起他的初恋,仅仅因为他对现任女友心存不满。这也是没办法的事,并不取决于他现女友如何对他。修改记忆产生的后果无非两种:一是他对前女友的记忆会再次生长起来,入侵他大部分大脑;二是出现另外一个完美女性形象,来不断提醒他现女友的不足。我个人以为解决这个问题的正确办法,是他对自己宽容些,不要觉得希望自己的准妻子换一个人是什么罪恶的想法。我知道这里有人会觉得这位「某男」的行为很渣,不可原谅,好在我现在对这类愚蠢已经没什么感觉了。

我很清楚,这份影响我生活的回忆会持续存在下去,甚至会不断强化,但我仍然不希望它消失。我明白它自然不会成为我骄傲的资本,但就算仅仅作为我活着的证据,也仍算是合格。前行路上的一切障碍,我们都必须去克服,包括抱憾终生的折磨。想通了这一点,大约可以在面对自己和他人时稍稍坦然。任何时候,我都尊重所有人自由的意志和选择的权利,只不过人们都要为自己的选择承担后果而已。

虽说标题是《〈黄金时代〉读后感》,但我却不确定我读过的那本电子书是不是王小波所著《黄金时代》。因为买不到正版,即使买到,也要疑心内容是否已遭篡改。所以只好凭借网络上零星的信息来交叉对比验证。目前而言,我姑且认定自己读完的标称王小波所著《黄金时代》,的确是当年原著。

所以我在《〈沉默的大多数〉读后感》那篇文章里说,感到很迷茫,不知道以后要去哪里买书。

我猜很多读过这部书的人会觉得,这书里与交媾相关事项的描写极多,几乎可以拿来当色情小说看。而它有这么高的评价,无非只是因为作者写了别人不敢写的东西而已。因为他还有别的论述性的作品,普通人自然不太好意思把《黄金时代》编排到和地摊文学一个级别上去,那就只能说这是高深的艺术形式了。

我在读这部作品时,自然是被吓了一小跳的。因为单从《沉默的大多数》文集来看,无法想象他对性爱情节有如此奔放的描写。毕竟以前从未看过有如此直白且详细的色情描写文章,不免让人疑心作者是不是整天盯着自己的「小和尚」意淫,才能写出这种东西来。老实说,读完此文,我内心里也期盼着有一天能遇到一个属于自己的「陈清扬」。关于这一点,必须首先承认。

一个成熟的作者,其写作风格大约是相当独特且固定的。而像我这种刚会拿笔的人,文风就飘忽不定,甚至我都不确定自己是否有「文风」这种东西。看王小波的小说,有时仍然觉得在看他的议论文。他的描写不能算是精彩生动,而应算作那种索然无味,平铺直叙的方式。但平淡只是表象,细看之下,貌似正常的文字背后是特别高级的讽刺,是极其真实的荒诞。他的文字让人第一反应是想笑,笑过两声之后,又立刻涌上无限唏嘘惆怅。

比如他论证王二要如何证明自己没有打瞎队长家母狗的左眼,于是煞有介事地列出三条途径:

  1. 队长家不存在一只母狗;

  2. 该母狗天生没有左眼;

  3. 我是无手之人,不能持枪射击。

这三条全是废话,然而正是这三条废话,生生描绘出一幅人间地狱。我很难想象如歌自己穿越回那个时代,会不会活得下去,是不是干脆就拿根绳子栓到横梁上把自己吊起来。因为我不会用气枪,不太可能正好打瞎一条母狗的右眼。

这些感慨必然会为「正人君子」之流所厌恶的,因为它们太真实、太消极,与「正人君子」们口中一贯讲的积极美好正能量截然相悖。这也正是我无法获得一本正版纸质《黄金时代》的原因。

说到这里,终于还是要提一下王二与陈清扬的「苟且之事」。本来我看到这些描写时气血上涌,面部过热,很想立刻也找个姑娘来「敦伟大的友谊」。但是既然写读后感,就不得不装腔作势一下,非要说他这些描写有许多深刻内涵,是高超艺术。按原文来说,陈清扬并不爱王二,甚至说不上有多喜欢。表面上看,王二受性欲驱使,用花言巧语骗到了陈清扬的身子,然后两人就持续行不轨之事。但我所感受到的是,在陈清扬眼里,这个世界太过扭曲,她身边的所有人都太过丑恶。直到他遇到王二,发现这个人竟还残存着些许人性,因此自然可以建立友谊。为了这层友谊,他们都可以抛弃一切。这令我想到《红楼梦》里的贾宝玉,他结识社会边缘人物,因他们几乎被亲父打死,仍然表示愿为他们而死。因为这些社会边缘人身上,散发着纯真和良善。贾宝玉也好陈清扬也好,都见过太多面目狰狞的类人生物,受到过太多摧残,自然觉得这些品质弥足珍贵。我想用「友谊」来形容这种关系是不恰当的,但这或许是中文里最接近的词。他们之间产生的是一种人性的共鸣,相比之下,「敦友谊」这种事就完全无足轻重。不如说,交媾描写越直白,就显得当时的社会越恐怖。假如他们处在一个正常的、人人都有人性的社会中,陈清扬一定能找到一个愿意让她当面叫出声来的人,还有你王二什么事呢。

群体撒癔症是什么时代都会有的现象,大家都在发疯,都在每时每刻关注自己服从与歌颂的姿态,才会甘为工具和材料,或者用现代的词来说,安心做「人矿」。人性这种东西是要让人不高兴的,因为一个人有人性,意味着他有感觉、有感受,甚至可能有思想。人家举出一个吃苦耐劳的模范出来,大家都在无限颂扬,你偏要发一番议论;人家树立一个反面典型,大家都在尽力唾骂,你又要发一番议论,实在太不和谐。这样做的下场就是,陈王二人白天挨批斗,晚上啪啪啪。这事给我们的启示就是:即使生活再艰难,也要试着活下去。

title: 神秘的N射线
author: 方舟子
date: 2006-06-21

1895年的一天,德国物理学家伦琴在暗室里用黑色薄纸板把一个克鲁克斯管密封起来,接上高压电流,准备做阴极射线的实验,却意外地发现一块放在旁边用来做别的实验的荧光屏发出了光辉。在连续进行了6周的严密实验后,他认定放电管发出了一种未知的射线——X射线。6年后,伦琴因此获得了首届诺贝尔物理学奖。

多少人也想要有这样的好运气和荣誉!就连法国南锡大学物理教授布朗洛这样已当选法国科学院通讯院士并两次获得科学院大奖的杰出科学家也不例外。1903年,他在研究X射线的偏振现象时,“运气”降临了。他的实验材料是一根放在密闭铁管中的热铂丝,铁管留了一条铝做的细缝。他注意到从中射出的射线似乎能够让附近煤气灯的火焰变得更亮,而且还能让荧光屏变得更亮。他认定这也是一种未知的新射线,取名N射线,以纪念他任职的大学。

布朗洛很快又发现很多材料都能天然地发射N射线,但是木头除外。把一块砖用黑纸包好在太阳下晒一会儿,就能让它持续不断地发出强烈的N射线。就像光透过玻璃三棱镜发生折射形成光谱一样,让N射线透过铝质三棱镜也会形成频谱,虽然看不见,但是可以用一块特制的荧光屏检测出来。布朗洛还发现N射线能够奇妙地增强人的视力。

这种射线看来要比X射线神秘得多,也重要得多。布朗洛迫不及待地发表论文宣布其发现,在3年内发表了26篇相关论文和一部著作。其他法国科学家也纷纷跟进,到1906年时已有120多名科学家发表了近300篇研究N射线的论文。1903年诺贝尔物理学奖获得者贝克勒尔也来凑这个热闹,写了10篇论文。最神的是布朗洛的同事、南锡大学医学院教授查彭蒂尔,他发现人体也能发射很强的N射线,为此发表了38篇论文。

但是德国、英国的物理学家们却无法重复布朗洛的发现,不免心存疑惑。1904年,恰好以善于揭露伪科学著称的美国著名物理学家罗伯特·伍德到英国参加会议,与会者便请他去布朗洛实验室看个究竟。

布朗洛热情地向伍德演示N射线实验。这些实验都是在暗室中进行的,这就让伍德有了“恶作剧”的机会。在第一个实验中,布朗洛用N射线源对准电火花,声称这使火光变亮,然后用手遮挡N射线源,声称火光又变暗了。但是伍德看不出亮度有变化,提议由他用手来遮挡N射线源让布朗洛观察火光亮度变化。伍德后来向《自然》报告说,他的手根本没有动弹,布朗洛却一会儿说亮了,一会儿说暗了。第二个实验是布朗洛把一把锉刀放在眼睛旁,声称锉刀发出的N射线使得他的视力增强,能够看清远处夜光钟的指针。伍德提出替他握锉刀,偷偷地换成不该发出N射线的木头尺子,布朗洛同样声称看清了指针。第三个实验是N射线的折射实验,布朗洛准确地从屏幕上一条条读出了N射线的频谱,他不知道伍德早已偷偷地把铝质棱镜拿走藏到兜里,N射线根本不应该发生折射!

有的文献说,在伍德向外界公布了这些实验结果,证明了N射线纯出自想像之后,布朗洛身败名裂,甚至发疯而死。但事实上布朗洛在那一年再次获得了法国科学院的大奖,到1910年才因到了退休年龄而退休,并一直活到1930年,享年81岁。其间他还在著书立说、发表演讲,丝毫没有发疯的迹象——当然,他一直坚持认为N射线是真实存在的,只是太过微妙,不能用简单的实验来验证。

布朗洛看来是很真诚地相信他的发现,而不是有意造假。科学史上类似这种由于强烈的主观偏向而自欺欺人的例子屡见不鲜,但是为何有如此多的训练有素甚至声名卓著的科学家都跟着晕头转向,却是一个比N射线更神秘的谜。他们以法国科学家为主。

在19世纪下半叶,法国已丧失了世界科学中心的地位,落后于德国和英国。也许,正是在赶英超德、振兴法国科学事业的爱国激情的驱使下,他们浮躁地抛弃了一些基本的科学原则,结果却沦为国际笑柄。

这个事件经常被有些反科学人士拿来证明科学研究并不像人们设想的那么客观,其实它恰恰说明,虽然再著名的科学家也有可能犯错误,但是科学却有能力自我纠正,关键在于如何严密地设计控制实验,避免主观偏向而获得客观的结果。毕竟,否证N射线的也是科学家,而伍德的“恶作剧”实际上是在采用一个基本的科学实验方法:盲法试验。

author: 方舟子
title: 告诉我为什么
date: 2010-01-13

幼儿开始会说话后,最爱问的是“这是什么?”。等到再大一点,他们就会不停地改问“为什么”了。儿童虽然很有探索精神,喜欢刨根问底,但是也很轻信,不管多么刁钻古怪的问题,大人用一两句话随便给一个答案,他们也就满足了。

等儿童再长大一些,有了怀疑的态度,学会了做思考,就不容易打发了。于是解答“为什么”的科普读物应运而生。我们这一代人,基本上小时候都受过《十万个为什么》的熏陶。那是知识读物极度缺乏的时代,难得有一套科普书能稍稍满足少年儿童的求知欲。用今天的眼光看来,这套富有时代色彩的书籍的内容和写法都乏善可陈,没能经得起历史的考验,倒是那个学自苏联、不符合汉语表达习惯的书名成了名牌,衍生出众多模仿、跟风之作,国内各家出版社出版的以“十万个为什么”为名的图书,据说至少有一百多种。

这些图书其实是以问答方式编写的百科知识入门读本,问题大多很抽象,解答也像考题标准答案一样的呆板、枯燥。它们被归为少儿读物,似乎人一旦长大,就没有了探究“为什么”的兴趣。只有少数成年人还继续保持童心,享受探索的乐趣。在古代他们是思想家,在现代他们是科学家。科学研究的目的,简单地说也是为了回答儿童喜欢问的那两个问题:“是什么”(对事实的描述)和“为什么”(事实背后的机理或因素)。

在科学出现之前,人们对“为什么”的解答都是出于臆想。中国学者的解答依据是神话传说和阴阳五行之类的玄学。西方学者则多了一个神学解答,而且人们从小就被灌输。有一首传统英语儿歌《告诉我为什么》如此唱道:

告诉我为什么星辰闪耀,
告诉我为什么常春藤缠绕,
告诉我为什么天空如此蔚蓝,
那么我将告诉你为什么我爱你。

如果你以为这是在激励儿童去做科学探索,那就错了。这首歌的第二段马上就给出了简单得不能再简单的回答,要对儿童做所谓“终极关怀”:

因为上帝创造星辰闪耀,
因为上帝创造常春藤缠绕,
因为上帝创造天空如此蔚蓝,
因为上帝创造了你,那就是为什么我爱你。

把想不明白的问题,都归为上帝(或神仙、外星人),从此不去做进一步的探索,是一种非常煽情然而也非常懒惰的做法。何况这些问题都已有了并不复杂的科学解答,并不需要抬出“上帝”来吓人。恒星会发光是由于它们有巨大的质量,在引力作用下恒星内部有很高的温度,引起核聚变,释放出大量的能量。常春藤缠绕而上是为了获得阳光进行的向性运动(植物的叶子有朝着阳光生长的向光性,而茎有朝与重力相反方向生长的负向重力性)。晴朗的天空之所以呈蔚蓝色是由于空气分子对阳光的散射引起的,阳光中的蓝光波长短,散射比较强。这种现象是英国物理学家瑞利发现的,称为瑞利散射。至于男女之爱,则离不开激素的影响。美国著名科普作家阿西莫夫曾经据此给上面的儿歌改了歌词:

核聚变让星辰闪耀,
向性运动让常春藤缠绕,
瑞利散射让天空如此蔚蓝,
我之所以爱你是由于睾丸激素。

对这些解答当然可以继续追问为什么。比如,植物为什么会产生向性运动?我们可以从生物化学、细胞生物学和分子生物学的角度解释向性运动的机理(和植物生长素或生长抑制物质的不均匀分布有关)。为什么会出现这样的机理?我们可以从进化生物学的角度解释这是自然选择的结果。

一步一步地追问下去,可以让我们更深入地研究某种自然现象,对它有更透彻的了解。现在回答不了的,也可以留待以后的研究结果。但是这种追问不可能无限地继续下去,总有必须叫停的时候。这个时候,我们就会说这个问题没有科学意义,是个伪问题。比如,如果有人继续问,为什么会有自然选择?我们只能告诉他,这是在满足一定的条件后必然会出现的最基本的自然规律,去追究为什么会出现自然规律,没有科学意义。

有些人可能会兴奋地说,原来科学并不是什么问题都能回答的啊,科学回答不了的,就交给我们哲学家、神学家来进行“终极关怀”。对上面的问题,有人会说,自然规律是上帝创造的。但是这既无法让人信服,也不增加任何知识量,纯属多余。否则,我们也可以学着继续追问:为什么上帝要创造自然规律?为什么会有上帝?……如果你要说上帝是“第一因”,到了上帝这里就不能再追问了,那么我们也可以把自然规律做为“第一因”,没有必要再加一个子虚乌有的“上帝”。科学回答不了的,哲学、神学的回答也只是自作聪明。

author: 方舟子
title: 小鸟的大道理
date: 2010-03-03

提起动物学家,大家马上想到的是那些研究珍稀野生动物的,黑猩猩、大熊猫、狮子、老虎之类,似乎这些或漂亮或聪明或威武的动物才有意思,为之长年待在深山老林、草原荒漠才令人敬仰。但是英国动物学家尼克·戴维斯却选择在剑桥大学的植物园里观察一种毫不起眼的常见小鸟——篱雀,而且十年如一日,先后跟踪了那里427只成年篱雀的生活,在繁殖季节,几乎每天都要去拜访它们。

篱雀样子很像麻雀,羽毛颜色黯淡,看上去很单调。19世纪英国博物学家兼牧师莫里斯曾经盛赞这种小鸟,号召其教区的教徒们以它为榜样,过一种低调、谦逊而正派的生活。不过,在戴维斯的眼中,这种样子低调的小鸟的生活可是一点也不谦逊、正派。他描述道:

“一对篱雀在一起觅食,安详地跳进树丛中。到那里以后,雄鸟跑到一边,雌鸟去了另一边。一旦出了雄鸟的视线,雌鸟立即飞进附近的矮树丛里,和藏在那里的另一只雄鸟交配。过后她立即和她的配偶汇合,做出好像什么都没有发生过的样子。”

虽然鸟类常常被当做爱情的象征,天鹅、爱情鸟、鸳鸯之类经常成为诗人讴歌的对象,但是它们的相亲相爱显然不是出于感情,而是为了传播基因。它们的生活被达尔文法则决定了:留下尽可能多的后代。雌、雄为此走在了一起,但是它们的利益并不总是一致的,其生理特征导致了它们的目标有所差异:雄性是要尽可能多地播种,雌性则是要尽可能多地养育自己的后代。对雌性来说,对自己最有利的婚姻形式是一妻多夫制(多一个丈夫就是多一个养家的帮手),其次是一夫一妻制,再次是一夫多妻制。对雄性来说,则倒了过来,最好的形式是一夫多妻制(能有更多的后代),其次是一夫一妻制,再次是一妻多夫制。

雌雄在长期进化过程中相互博弈的结果,让大多数鸟类都采用了一夫一妻制,这样做似乎对雌雄双方都公平。但是篱雀这种外表单调的小鸟却有着最丰富的婚姻形式:一夫一妻制、一夫多妻制、一妻多夫制都存在着,还普遍存在多夫多妻制。甚至在剑桥大学植物园这么个小群体(一群大约只有80只)篱雀中,这四种形式全都同时存在,一夫一妻制、一夫多妻制、一妻多夫制、多夫多妻制在雌鸟中分别占了32%、7%、23%、38%。那些采取一夫一妻制的,是在双方都没能吸引来第三者的情况下的无奈选择,而那些采取多夫多妻制的,则似乎是陷入了僵局。

戴维斯发现,那些表面上是一夫一妻制的家庭,雌鸟通常也会主动勾引第三者来交配,这么做会鼓励第三者为雌鸟的后代提供食物。而雌鸟的原配一旦发觉,会尽力把第三者赶走。根据达尔文法则,第三者应该根据是否与雌鸟成功地交配来决定要不要为雌鸟的后代服务。如果交配成功,雌鸟的后代中有可能有第三者的种,第三者去帮忙才会增加自己的基因传播的机会,不然就是在做无偿服务了。

戴维斯的观察发现,第三者基本上是根据这一法则行事的。在第三者与雌鸟成功交配后,有80%的可能会为幼鸟提供食物。而如果交配失败,只有9%的可能会提供食物。而且第三者会根据成功的程度来调整帮忙的程度:交配的次数越多(意味着留下自己的后代的几率越高),就越努力去提供食物。

雌鸟勾引第三者的好处非常明显。一窝由母亲和两只雄鸟养育的幼鸟(平均一窝有2.95只能成年),要比由一雌一雄养育的幼鸟(平均一窝有1.21只能成年)更容易存活,在会飞时体重也更重。甚至原配雄鸟也有可能由此获益。戴维斯的计算表明,如果一窝幼鸟中有60~70%是原配雄鸟的种,那么让第三者参与进来,对原配雄鸟也有好处。但是原配为什么通常要把第三者赶走呢?这似乎表明他很“清楚”他的后代不可能达到这个比例。戴维斯对幼鸟做亲子鉴定(对比DNA),证明的确如此。在那些由第三者参与养育的幼鸟中,平均来说只有45~55%是原配雄鸟的后代。在这种情况下,原配雄鸟当然最好防范第三者。

篱雀多姿多彩的家庭生活,其实是两性既合作又冲突的结果,双方都想利用对方来为自己留下尽可能多的后代。这个适用于所有有性的生物的道理,却是由一种不起眼的小鸟如此鲜明地证明了。

项目地址:GitHub

「双注」的含义为「双拼」+「注音」,即指此输入法兼有类似注音输入的切音法与双拼输入法的便捷性。此输入法在全拼的基础上加以改动,修正了全拼中我个人认为有问题的点,实际使用感受为学习时间短,输入效率高。希望大家都能来尝试并提出意见。

全拼中的韵母 ü 在本文档中的表示以及输入的键码均为 v。

本输入法有如下设计:

  1. 去掉声母 y, w,在双注输入法中由 i, u 代替。将 yu 还原为 v。

  2. 如果声母的发音与汉字相同,去掉拼音中多余的韵母。如下所示。

| 全拼 | 双注 | | —— | —– | | bo | b | | po | p | | mo | m | | fo | f | | de | d | | te | t | | ne | n | | le | l | | ge | g | | ke | k | | he | h | | ji | j | | qi | q | | xi | x | | zhi | zh | | chi | ch | | shi | sh | | ri | r | | zi | z | | ci | c | | si | s | | yi | i | | wu | u | | yu | v | | yuan | van |

  1. 改写全拼中的某些韵母,使其更加符合发音规律。

| 全拼 | 双注 | | ————— | —— | | iu | iou | | ui | uei | | (j,q,x)un | ven | | un | uen | | in/yin | ien | | ing | ieng | | (j,q,x)u | v | | (j,q,x)uan | van |

如果 un 的声母为 j, q, x,则其改为 ven,否则改为 uen。另外将 ju, qu, xu 还原为 jv, qv, xv。

  1. 将多个字母表示的韵母分配到单个按键。

| 全拼 | 双拼 | | —– | —– | | ai | d | | ao | c | | an | j | | ang | h | | ei | w | | en | f | | er | r | | eng | g | | ou | z | | ong | s |

  1. 将 zh, sh, ch 也重新分配键位。

| 全拼 | 双拼 | | —– | —– | | zh | y | | ch | e | | sh | w |

使用双拼的人应该很熟悉这种分配。经此操作,一个发音只需按一个按键表示,但同一个按键可能表示多个发音。可通过以下汉字辅助记忆: “谁(shei)更草菅分走送代航”。当然”谁”字的正确拼音是 shui,双注输入法键码为 wuw。

若要开启超级简拼模式,取消 wuhyu.schema.yaml 中 speller/algebra 的以下项的注释:

- derive/^([bpmfdtnlgkhjqxzcsyewiu]).+$/$1/

经此操作后,即可用单个汉字键码的第一个按键表示全部由此码开头的字。比如输入「卧虎藏龙」不必输入 uohuchls 而只需输入 uhcl

我尝试过使用 abbrev 指令,但不知为何并不生效。

最后,我们试着用双注输入一段汉字。

理性就像贞操,失去了就不会再有;只要碰上了开心的事,乐观还会回来的。
——王小波《积极的结论》

以上汉字的输入码位如下:

li'xig'jiz'xih'yf'cc, w'qv'l'jiz'bu'huw'zd'iz; y'ic'pg'wh'l'kd'xif'd'w, l'guj'hd'huw'huw'ld'd.
uh'xic'b<j'j'd'jie'luf>

符号 ' 用于码位间的分隔,实际输入时都可以忽略。

今天是五一小长假的最后一天。今年的五一假要特殊一些,除连上双休日,还从前后各借一天,加起来凑成五天。五天时间不算短,大多数人一旦有了这种长度的假,第一反应恐怕就是去个不算太近的地方玩一玩。所以整个假期,我所看到、听到、感受到的,便是各种大大小小的地方人满为患,出行车票销售一空,央视的新闻对消费盛况欣喜万分。

而我这几天躺在家里,抱着手机看人头攒动的图片视频,却想到一个很特别的概念,就是物理学里的「熵」。其实我物理学得相当之烂,对于热力学这部分掌握的并没有很透彻,甚至不算多清晰。目前只大约知道,熵是系统无序程度的度量,封闭系统的熵是不断增加的。我们身边事物自然变化的过程,总是从有序到混乱——譬如我们总要抽出时间来扫地拖地,整理书桌,若是放任不管,就会越来越脏乱——所以熵增的方向也被叫做「时间之矢」。

经典力学里是不会有时间方向这个概念的,因为即使把时间反向,所有的定理也依然成立。假如有一个小球从低处向高处运动,速度越来越慢的视频,你看完后并不能判断出它是正放还是倒放,因为这原本既可能是小球在上抛,也可能是小球在自由落体。但如果是大象闯进瓷器店的视频,我们就不会误判,因为在现实生活中,我们决不会看到瓷器碎片自发聚到一起,形成完好瓷器的过程。

以我对物理学一知半解的印象,也就解释成这个样子,还请千万不要当真。

然而到这里,我还是没有说明为什么旅游的人群和「熵」这个字有什么关联,所以还要啰嗦几句。热力学是研究巨量分子运动的整体表现,那必然要用到概率。所谓从有序到混乱的过程,也就是概率由低到高的变化,「此乃自然之理」。于是我便想到,处在群体中的个人,恰似水流中的单个分子。分子顺着水流运动的概率大而逆着水流运动的概率小,所以顺流而动是熵增,逆流而上是熵减。如果这个分子在自来水管里,恐怕它从哪个水龙头里出来,只取决于人把哪个水龙头拧开,它自己没有选择。

我们应该庆幸单个分子没有意识和记忆,这样他们构成的整体才会按规律变化,能控可控。否则若是想去哪就去哪,整个世界便会瞬间分崩离析。人类的发展即是认识和利用自然规律的过程:我们圈养某些动物,养肥之后宰杀吃掉;我们种植作物,长成之后一齐收割。应该不会有多少脑子有贵恙的人把这些视作人类道德缺陷的证明,这仅仅是「自然之理」。

说到这里,我又想到网上的一个段子,就是电视剧【康熙王朝】里皇帝怒斥群臣的那一段,里面有这样一句话:

想想吧,崇祯皇帝朱由检吊死在煤山上才几年呐。忘了?!那棵老歪脖子树还站在皇宫后边,天天地盯着你们呐。

——【康熙王朝】

有资格站在大殿之上、皇帝面前的人都是上层,显然非同一般,所以康熙才会有此立论。要是平民百姓,就该完全是另一套说辞。因为单个分子是没有记忆的,几年之前的事忘得一干二净是必然结果。所以对于过去发生的事,恐怕要按天来论。那么这一段我想可以改成这样:

想想吧,疫情防控足不出户才几天呐。忘了?!那些店铺门前张贴的告示和二维码还没完全撕净,天天地盯着你们呐。

2023-05-03

周汝昌先生在一次《红楼梦》主题讲座里说,他年轻的时候同胡适讨论,对给《红楼梦》标点分段、使用新式格式这种做法稍有意见,认为这样做对一些传统的东西有影响,甚至有破坏。听到这一节之后我才有意识想到,我们今天看到的古文古诗词、甚至于明清小说,在创作及最开始流行之时,不但文字是古字而非简中,并且格式标点,都是没有的。当然以前也知道这件事,但仅仅是知道,没有意识。

所以有一个关于《红楼梦》的问题,是我自己想出来的,留在我脑子里很久。如果以后我遇到某个自称比较了解《红楼梦》的人,我一定要问问他。就是:为什么比贾宝玉小一辈的那批人,起的名字都是草字头,而唯独贾兰不是?

古代中国人发明文字而没有发明标点符号,自然可以解释。就是用刀在竹简上刻字太费劲,竹简空间宝贵,容不下标点分段。但是用于书写的廉价纸很早就发明了,那之后一直都没有出现标点这东西,显然并不是人们担心空间浪费。那么答案就显而易见:不用标点是我们中华文化博大精深的例证,是中华文化优越性的标志。直到国门被大炮轰开,当时人们渴求进步,用力过度,才非要借鉴来西式标点。后来连汉字也要简化,着实是对传统文化造成不小的打击。

而最近一阵据我个人观察,原生于西方的标点符号又有消失的趋势,这现象很好,令我很激动。事情虽小,但意义极大,或许它就是我们中华传统文艺复兴的开端。用不了多久,我们就可以享受手捧竹片的感觉,体会古文的深邃和厚重。我们大家都开开心心去做传统文化虔诚的信徒。

现在看公众号文章,不必说一般的个人号,就是「中科院物理所」这类研究机构,有的时候码起字来,都是一句一行,标点全无,并且全部居中,远远望去就像宝塔,尤其像倒修的宝塔。这却并不是我在乱说,倒修宝塔这东西我是见过的,就是在游戏「纸嫁衣」里,是用来供奉藏尊的。然而宝塔这东西,需要站在底下仰头看的,若是倒修,看上去不免疑心它摇摇欲坠。本来砌成大方块的文字都变成了宝塔,一句摞一句,不免就要拖长。读者一面看,一面伸出手指划划划,三五下后就要被吓得心惊肉跳,生怕这一层层不规则的东西不小心塌下来。

不晓得是不是受此影响,越来越多的人在日常文字交流时,也抛弃了标点。抛弃西方毒瘤自然是应该提倡的好事,遗憾的是他们用空格代替了标点,仍旧不够完美。后来我想了一下,文字之间穿插空格,也是有其道理。好比你要砌墙将人围起来,若把墙砌得严严实实,水泄不通,那不久就要给人闷死。一定要中间留几个空隙,使人一眼望去,万幸坚固的墙上保留了通气孔,无论如何可以放心喘气了,还不至于被憋死。

要我说,我们还是应该对传统文化更加有信心,坚决拥护中国文字无上的魅力——以后码字,不但决不用标点,连空格也不要敲。一口气从头读到尾最后被憋死的人,不适合我们的文化。连续码字不但不影响表达,发消息的人也省去了大量按空格的时间,可以多刷一会短视频了。至于看文字的人,只要对我们的伟大创造有信心,有能力,最终还是会理解。至此,唯愿敲字不带标点不带空格的人越来越多,我们便可尽早迎来真正的大和谐。