当前位置: 首页 > news >正文

选择的自由

(倪可的父亲说)“……你 经常挂在嘴边的萨特笔下的自由,只是‘选择的自由’,一种有前提的自由。”——卫慧《上海宝贝》

前一段一直在BLOG上讨论服务器OS的选择问题,还有语言的多样性问题。其实归根到底就是关于选择的自由问题。

其实根本没有所谓绝对的自由,我们能得到的自由只能是选择的自由,差别只在于可供选择的东西或多或少而已。

Windows固然有千万般的好处,但它并不是没有问题的,在很多时候,Unix、Linux……会是更好的选择——即使你不喜欢,它们的存在仍然为你提供了选择的自由。

语言也一样,C#和Java固然近于万能,但C、汇编、COBOL……也仍然有市场——你可以不学不用,但不能剥夺别人选择的自由。

还有GC。GC固然是好,但是GC的性能再好也比不上栈模型的一句 sub esp, xxx 来得高效——这就是我反对在C里增加GC的根本原因,只是想保留一个选择不用GC的选项。

GPL v3自从被提出开始,就遭到很多的批评,其根本原因就在于强迫开源的条款剥夺了别人不开源的自由,这也是我一直不太喜欢GPL的最主要原因——我写的原生应用程序从来不用GPL。

在 Python 的 Web Framework 中, Django 无疑是一个好东东,是一个 All in one 的 solution ——它包括了从后端的 O/R mapping 到前端的 Web tamplate ,最关键的是它还有不错的性能。但是我现在还是转向了 TurboGears ,因为它提供了更多选择的自由,比如 O/R mapping除了用默认的 SQLObject 以外,还可以选择 SQLAlchemy (据说现在 Django 也支持 SQLAlchemy 了),而Web template的选择就更多了,从默认的 KID ,到与 Django 相同的 Jinja ,还有像 Genshi 这样的。

当然还可以引申出去,不过那就不安全了,打住。

补充风三火提供的一段Linus Torvalds对GPL的反应:
"By being pragmatic and not being too crazy about it, the 'Open Source' people ended up making open source a lot more accessible to a lot more users, and they made the software better, too. Because when you make your technical choices on technical grounds, rather than on religious ones, they end up being better."

相关文章:

  • DSA and RBackupWindow
  • 慢连接 java_java nio 如何处理慢速的连接
  • 臭毛病从何而来
  • graphpad7.04多组比较p值_手把手教你用Graphpad做单因素方差分析
  • java查询sqlserver_JAVA实现对SQLServer增,删,改,查
  • 用最简单的办法,实现最好的打印(用BCB调用WORD的打印功能)
  • java 模块添加新功能_springboot添加新模块的方法
  • 用最简单的办法,实现最好的打印(用BCB调用记事本的打印功能)
  • java弹簧布局_Java弹簧布局管理器使用方法详解
  • 把EXCEL的数据导入数据库(ACCESS、MSSQL等)
  • java套接字客户端时间间隔连接服务器_纠结了一天的JAVA简单客户端服务器Socket编程终于解决了...
  • 把表的数据导出到EXCEL,同时还可以打印
  • java无线电台RS制信号_中国MOOC_零基础学Java语言_第2周 判断_2信号报告
  • AT91RM9200引导程序的建立(二)--------TFTP和NFS服务的设置
  • mysql 发送数据_mysql需要太长时间才能发送数据
  • 2019年如何成为全栈工程师?
  • GDB 调试 Mysql 实战(三)优先队列排序算法中的行记录长度统计是怎么来的(上)...
  • Laravel Mix运行时关于es2015报错解决方案
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • leetcode讲解--894. All Possible Full Binary Trees
  • Ruby 2.x 源代码分析:扩展 概述
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • vue中实现单选
  • 高程读书笔记 第六章 面向对象程序设计
  • 湖南卫视:中国白领因网络偷菜成当代最寂寞的人?
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 力扣(LeetCode)22
  • 小程序开发中的那些坑
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • #Linux(Source Insight安装及工程建立)
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (Mac上)使用Python进行matplotlib 画图时,中文显示不出来
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (初研) Sentence-embedding fine-tune notebook
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (十)【Jmeter】线程(Threads(Users))之jp@gc - Stepping Thread Group (deprecated)
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (正则)提取页面里的img标签
  • (轉貼) 蒼井そら挑戰筋肉擂台 (Misc)
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .net framework 4.0中如何 输出 form 的name属性。
  • .NET gRPC 和RESTful简单对比
  • .NET 应用架构指导 V2 学习笔记(一) 软件架构的关键原则
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET/MSBuild 中的发布路径在哪里呢?如何在扩展编译的时候修改发布路径中的文件呢?
  • .NET6实现破解Modbus poll点表配置文件
  • .net程序集学习心得
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • [ 云计算 | AWS 实践 ] 基于 Amazon S3 协议搭建个人云存储服务
  • [20160807][系统设计的三次迭代]
  • [Android] 240204批量生成联系人,短信,通话记录的APK
  • [Avalon] Avalon中的Conditional Formatting.