张小龙:做 PC 版微信是一种破坏

本文转载自 IT之家

微信早期是没有 PC 版的,即使现在已经有了,也不如手机端好用,每次登录都需要在手机上确认,长时间不登录甚至需要手机端重新扫码。

据了解,“微信之父”张小龙在其作品《微信背后的产品观》一书中透露,微信本来不想做 PC 版,因为觉得做 PC 版是一种破坏。但是因为很多用户说在手机里面输入文字太辛苦了,经常坐在计算机旁边,却用手机输入文字。所以微信为了更好地解决输入的问题,做了 Web 版而不是真正的 PC 端。

至于为什么不做 PC 端,张小龙表示:“如果我们去做 PC 版,会带来的结果是:用户不再相信对方能立即收到消息了,因为我们可能发到一台没有人在旁边的计算机上,那么他会选择别的可以很快找到他的工具”。

也就是说,微信的理念是时时刻刻可以收到消息。

以下是《微信背后的产品观》部分节选内容:

我们再说 Web 微信是怎么产生的。我们一直对外界说我们不做 PC 版,因为我们觉得做 PC 版是一种破坏

我想找一个人的时候为什么用微信,而不是用 QQ 呢?因为希望能立即找到他。为什么觉得 QQ 不能立即找到他呢?因为通过 QQ 知道他在不在线,或者是他隐身了不告诉你,所以你才会觉得立即找到他要用微信,因为微信给你的概念是长期在线,一直在线的。而 QQ 不是永远在线的,它有一个在线和非在线的状态。

如果我们去做 PC 版,会带来的结果是:用户不再相信对方能立即收到消息了,因为我们可能发到一台没有人在旁边的计算机上,那么他会选择别的可以很快找到他的工具,这是很可怕的。所以,我们一直坚持不做 PC 版。可是我们为什么又做了一个 Web 版本?

因为很多用户说在手机里面输入文字太辛苦了,而我们经常也是坐在计算机旁边,却用手机输入文字。那么在这里,Web 微信的定位其实是连接键盘,而不是真正的 Web 版。

所以我们想提供给大家的是连接你的键盘,而不是要做一个 PC 版。最开始的时候甚至想连 Web 界面都没有,只是连接 PC 键盘,显示都还在手机端,你在键盘上打字,消息就会在手机端出现。这是我们做 Web 版的最初想法。

但后来把这种想法否定了,因为这样操作起来不方便,使用键盘输入的同时,还要把手机放在旁边看屏幕,所以最后做了一个有界面的 Web 版,目的是更好地解决输入的问题。

  • 40
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 48
    评论
好的,下面是MATLAB编写纯ALOHA协议的仿真代码,并生成业务量与吞吐量的关系图以及业务量与平均传输时延的关系图。请注意,由于我是AI,我无法在本地运行代码。因此,我无法确保代码是否完全正确。但我会尽力提供帮助。 ``` % 纯ALOHA协议仿真代码 clear all; close all; clc; % 定义信道参数 p = 0.05; % 传输概率 L = 1024; % 数据包长度 R = 1000000; % 信道速率 d = 10; % 传输距离 N0 = 10^(-14); % 噪声功率 % 定义接入点信息 n = 100; % 终端数 d_min = 10; % 终端之间最小距离 x = d_min * rand(1,n); y = d_min * rand(1,n); % 定义终端信息 t = zeros(1,n); % 终端状态变化时刻 s = zeros(1,n); % 终端发送数据包的状态 r = zeros(1,n); % 终端接收数据包的状态 c = zeros(1,n); % 终端发送数据包时的碰撞计数 % 初始化相关参数 T = 0; % 当前时间 success = 0; % 成功发送的数据包数 max_time = 10^6; % 最大仿真时间 % 开始仿真 while success < 1000 && T < max_time % 根据业务量的大小进行一些参数的初始化 lambda = p * n / (R * L * (1 - p * n * exp(-d/d_min))); % 业务量 dt = exprnd(1/lambda); % 生成数据包产生的时间间隔 T = T + dt; % 更新当前时间 % 终端数据包产生时刻 for i = 1:n if T >= t(i) s(i) = 1; r(i) = 0; c(i) = 0; t(i) = T + exprnd(1/lambda); end end % 判断是否有多个终端在同时发送数据 for i = 1:n if s(i) == 1 && r(i) == 0 && sum(s & r) > 1 % 发生碰撞的数据包 c(i) = c(i) + 1; s(i) = 0; % 不考虑捕获效应,认为传输失败 r(i) = 0; % 考虑捕获效应 % snr = p * R * L * exp(-d/d_min) / (N0 + p * R * L * exp(-d/d_min)); % if snr > 2 % r(i) = 1; % else % r(i) = 0; % end end end % 统计成功发送的数据包数 success = success + sum(r == 1); % 更新终端状态变化的时刻 for i = 1:n if s(i) == 1 || r(i) == 1 t(i) = t(i) + L/R + d/d_min; end end end % 统计业务量、吞吐量和平均传输时延 traffic = p * n ./ (1:n); throughput = success / T; delay = (sum(t(r == 1) - t(s == 1)) + sum(c(c > 0)) * L/R) / success; % 输出结果 fprintf('业务量: %f\n', traffic); fprintf('吞吐量: %f\n', throughput); fprintf('平均传输时延: %f\n', delay); % 绘制业务量与吞吐量的关系图 plot(traffic,throughput,'b','LineWidth',2); xlabel('业务量'); ylabel('吞吐量'); title('纯ALOHA协议业务量与吞吐量的关系'); % 绘制业务量与平均传输时延的关系图 plot(traffic,delay,'b','LineWidth',2); xlabel('业务量'); ylabel('平均传输时延'); title('纯ALOHA协议业务量与平均传输时延的关系'); ``` 在这个代码中,我们首先定义了信道参数、接入点信息和终端信息,并初始化了相关参数。然后根据协议的工作过程进行仿真。在每次仿真时,我们根据业务量的大小进行一些参数的初始化,然后根终端数据包产生时刻,分别在相应的时间点上改变终端状态,随后,判断是否有多个终端在同时发送数据,如果有,则认为数据包产生碰撞,根据是否考虑捕获效应,分别对碰撞的数据包进行不同的处理。处理完成后,更新终端状态变化的时刻,进行下一轮循环,直到成功发送的数据包达到预先设定的数目,仿真停止。最后,对仿真中实际产生的业务量、吞吐量和平均传输时延分别进行统计,得到业务量与吞吐量的关系图以及业务量与平均传输时延的关系图。 请注意,此代码仅供参考。您可能需要根据自己的需求进行修改和调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 48
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值