ianchanning + blogs   893

Why should I have written ZeroMQ in C, not C++ (part I)
C++ exceptions just didn't fill the bill. They are great for guaranteeing that program doesn't fail — just wrap the main function in try/catch block and you can handle all the errors in a single place.

However, what's great for avoiding straightforward failures becomes a nightmare when your goal is to guarantee that no undefined behaviour happens. The decoupling between raising of the exception and handling it, that makes avoiding failures so easy in C++, makes it virtually impossible to guarantee that the program never runs info undefined behaviour.
C++  c  blogs  programming  softwareEngineering  objectorientated 
8 hours ago by ianchanning
The deepest problem with deep learning
The guy is an idiot but he has some interesting links
deeplearning  blogs 
9 days ago by ianchanning
Lisp Quotes
SQL, Lisp, and Haskell are the only programming languages that I've seen where one spends more time thinking than typing.
lisp  scheme  blogs 
5 weeks ago by ianchanning
John Carmack on Idea Generation
Just as human bones get stronger when subjected to stress and tension, and rumors or riots intensify when someone tries to repress them, many things in life benefit from stress, disorder, volatility, and turmoil. What Taleb has identified and calls “antifragile” is that category of things that not only gain from chaos but need it in order to survive and flourish.
johncarmack  blackswan  Inspiration  blogs  ideas  negativefeedback 
6 weeks ago by ianchanning
An invitation to category theory
Just what is category theory? Tai-Danae Bradley explains
categorytheory  blogs  articles  tutorials 
7 weeks ago by ianchanning
Moti asks: Objects Never? Well, Hardly Ever!
I think this article raises important issues.

A good example of a large system I consider “object-oriented” is the Internet. It has billions of completely encapsulated objects (the computers themselves) and uses a pure messaging system of “requests not commands”, etc.

By contrast, I have never considered that most systems which call themselves “object-oriented” are even close to my meaning when I originally coined the term.

So part of the problem here is a kind of “colonization” of an idea — which got popular because it worked so well in the ARPA/PARC community — by many people who didn’t take the trouble to understand why it worked so well.

And, in a design-oriented field such as ours, fads are all to easy to hatch. It takes considerable will to resist fads and stay focused on the real issues.

Combine this with the desire to also include old forms (like data structures, types, and procedural programming) and you’ve got an enormous confusing mess of conflicting design paradigms.

And, the 70s ideas that worked so well are not strong enough to deal with many of the problems of today. However, the core of what I now have to call “real oop” — namely encapsulated modules all the way down with pure messaging — still hangs in there strongly because it is nothing more than an abstract view of complex systems.

The key to safety lies in the encapsulation. The key to scalability lies in how messaging is actually done (e.g. maybe it is better to only receive messages via “postings of needs”). The key to abstraction and compactness lies in a felicitous combination of design and mathematics.

The key to resolving many of these issues lies in carrying out education in computing in a vastly different way than is done today.
——————————————————————-

A few more comments here.

If you are “setting” values from the outside of an object, you are doing “simulated data structure programming” rather than object oriented programming. One of my original motivations for trying to invent OOP was to eliminate imperative assignment (at least as a global unprotected action). “Real OOP” is much more about “requests”, and the more the requests invoke goals the object knows how to accomplish, the better. “Abstract Data Types” is not OOP!

A larger problem here is that though the invention of OOP and the coining of the term were influenced by several prior systems (including Sketchpad and Simula, and others which can be found in the history I wrote for the ACM — a nice irony it turns out!), it is quite clear that the idea of OOP did not include most of its precursors.

We didn’t even do all of the idea at PARC. Many of Carl Hewitt’s Actors ideas which got sparked by the original Smalltalk were more in the spirit of OOP than the subsequent Smalltalks. Significant parts of Erlang are more like a real OOP language the the current Smalltalk, and certainly the C based languages that have been painted with “OOP paint”.

The largest problem here is that a misapplication of a paradigm is being blamed for what is really bad language and systems designs and implementations. And I agree completely with the author that most of the features cited are really bad. But they have nothing to do with OOP.

For example, Smalltalk initially did not have inheritance because I thought the way it was used in Simula was all to easily the foundation of nightmares (too many different semantics from one mechanism). Instead the original Smalltalk used many LISP ideas to allow dynamic experiments with many kinds of generalizations.

I think the remedy is to consign the current wide-spread meanings of “object-oriented” to the rubbish heap of still taught bad ideas, and to make up a new term for what I and my colleagues did.

A smaller consideration is to notice that what is good about the original idea is still quite good, but it does require more thinking (and different thinking) and design to accomplish (but with great benefits in expressiveness, scalability and safety).

Blaming a good idea for being difficult is like blaming the Golden Rule for not being easily able to be learned by most humans. I think the main points of both lie elsewhere.

Best wishes,

Alan
oop  alankay  blogs  erlang  smalltalk  actormodel 
7 weeks ago by ianchanning
« earlier      
per page:    204080120160

related tags

aaronswartz  academic  academics  accents  activism  actormodel  add-on  addon  addons  adobe  ads  advertising  advice  agency  aggregator  agile  ai  ajax  alankay  algorithm  algorithms  amazing  amazon  america  amsterdam  analysis  analytics  andrejkarpathy  android  anger  angular  angular.js  angularjs  animation  animations  antipatterns  antispam  apache  api  apis  app  apple  applications  apps  appstore  aquaponics  architecture  archive  arrowfunctions  art  articles  artificialintelligence  artist  artists  artofwar  asperger  assistant  atheism  audio  aurous  author  authors  autism  autoloading  automation  automattic  awesome  awk  aws  babel  backups  bake  balance  banking  bash  batch  bayes  bbc  beautiful  belgie  belgium  belief  benchmark  berlin  bestpractices  bias  bicycle  bicycles  big  bigcommerce  bigdata  bigpicture  bikes  billgates  binarytrees  birkbeck  bitcoin  bittorrent  black  blackswan  blockchain  blog.merger  blogging  blogs  bookmark  bookmarking  bookmarklet  bookmarklets  books  bootlegs  bootstrap  boston.com  botnet  botnets  bots  bower  brain  brand  branding  brettvictor  browser  browsers  brynn  bsd  bubbles  bucklescript  buddypress  bugs  builderpattern  business  c  c#  c++  cache  caffeine  cakephp  calvinandhobbes  canonical  capital  career  careers  carousel  cars  cartography  casperjs  cassandra  categorytheory  cello  charity  chart  charts  chat  children  chimp  chocolatey  choice  christianity  CI  cities  civilrights  classes  claudeshannon  clean  cleanup  clickbait  climate  clothes  clothing  cloud  cms  cnn  code  codeigniter  codeigniter-people  coding  codinghorror  coffee  collaboration  comedy  comics  commandline  comments  commits  communication  community  companies  comparison  competition  composer  computer  computers  computerscience  computing  concurrency  conferences  conservative  consul  consulting  consumer  consumers  containers  content  continuousintegration  convolutions  cooking  cool  copyright  copywriting  corners  courier  Courses  cpanel  crashes  creativecommons  creativity  critique  crypto  cryptocurrency  cryptography  cs  css  CSS3  ctags  culture  currying  customers  cybernetics  cyclelanes  cycling  cynogen  d3  d3js  danabramov  data  database  datascience  datasets  datavisualisation  datawarehouse  dave  day  death  debates  debugging  decisions  decisiontrees  decryption  deeplearning  deepmind  del.icio.us  delicious  democracy  democrat  deployment  depression  derivatives  design  designblog  designer  designpatterns  desktop  developer  developers  development  deviantart  devops  dht  dijkstra  dilbert  directory  discussion  diskspace  divorce  diy  django  docker  docs  documentation  documents  domain  doping  dos  douglasadams  douglasengelbart  download  drawing  drink  drivers  driving  drm  dropbox  drupal  dry  dsl  dualboot  duckduckgo  e-commerce  eastereggs  ebay  eco  ecologia  ecology  ecommerce  economics  economy  editor  editors  education  edwyncollins  electric  electronics  elixir  elm  elonmusk  emacs  email  emotions  employment  empty  encryption  energy  engineering  engines  entertainment  entrepreneur  entrepreneurship  entropy  environment  epl  ergonomics  erlang  errorhandling  es6  escher  eslint  essay  essays  estimation  ethical  ethics  etsy  Europe  examples  excel  exceptions  exercise  experiment  extensions  f#  facadism  facebook  faces  failure  fake  family  fan  fantasy  fantasyfootball  farnsworth  fashion  fastcgi  fasting  fastmail  fav  favicon  features  fedora  feed  feeds  fellows  feminism  film  films  finance  firebase  firebug  firefox  firephp  firing  fizzbuzz  flask  flickr  flux  focus  font  fonts  food  football  forecast  forecasts  formula1  forum  forums  foss  fp  fractals  frameworks  freakonomics  free  freelance  freemium  freesoftware  freespeech  freeware  friction  frontend  frp  fsm  fulham  fun  function  functional  functionalprogramming  funding  funny  fusion  future  gadgets  gaia  game  games  gaming  gates  geek  gender  generator  geneticalgorithms  geneticdisorders  genetics  geography  germany  gerrymandering  getthingsdone  gimp  git  gitflow  github  gitlab  gitolite  gittip  globalization  gmail  gnolia-import  gnome  go  god  golang  golf  google  googleanalytics  government  gpu  gradients  graph  graphics  graphs  green  grids  grunt  gtd  Guardian  guide  guidelines  guides  guns  habari  hack  hackathon  hackernews  hacking  hadoop  happiness  hardening  hardware  harry  hart  hashicorp  hasicorp  haskell  hats  hci  health  HHVM  hidpi  hierarchy  hiring  history  hmac  holland  home  how-to-geek  howto  html  html2txt  html5  http  https  humanrights  humans  humor  humour  hungarian  hypercard  hyperloop  hypermedia  hypertext  i18n  ia  ibm  icon  icons  iconsets  ide  ideas  identity  IE  iis  illustration  images  immigration  immutability  imperial  improvement  include  independent  indie  inetpub  infographics  information  informationtheory  information_architecture  infrastructure  injection  innovation  inspiration  installation  installer  insults  integration  intelligence  interactive  interesting  interface  international  internationalization  internet  interview  interviews  introverts  investing  ios  ip  ipython  isset  it  iteration  jamesbond  jasonbourne  java  javascript  jekyll  jest  jetpack  jobs  joelspolski  johncarmack  jonskeet  journalism  js  json  jupyter  keras  keynes  keywords  khanacademy  labour  language  languages  languageserverprotocol  laptop  laptops  laravel  law  layout  laziness  leadership  learning  leaverou  lectures  legal  lenovo  lessons  letters  liberal  libraries  library  libreoffice  life  lifehacks  linearalgebra  linkedin  links  linq  linting  linux  linuxmint  lisp  list  lists  localization  localize  lock  logarithms  logging  loggly  logo  logos  logs  london  loudness  lovelock  lsp  lstm  mac  machinelearning  magnolia  mail  maintenance  malcolmgladwell  malware  man  management  mandelbrot  map  mapping  mapreduce  maps  marathon  markdown  marketing  markup  marriage  masculinism  mastodon  materialdesign  math  mathematics  maths  measuring  meat  media  medical  meditation  medium  mediumalike  memes  memory  mens  mercurial  merge  messaging  messenger  meta  metaphors  meteor  meteorology  methodology  metro  meyendcandy  microblogging  microservices  microsoft  midnightcommander  mindfulness  minecraft  minimal  minimalism  minimalist  missionstatement  MIT  mixins  ml  mobile  mobiles  mod  model-view-controller  mods  modules  monads  money  mongodb  monitoring  monoids  monopoly  mooc  moritz  mortality  motivation  mouse  movies  mozilla  mp  mp3  mp3blog  music  MUSIC-NEW  mvc  myspace  mysql  naomiklein  nasa  nature  negativefeedback  neovim  netherlands  netscape  network  networking  neuralnetworks  neuroscience  new  newrelic  news  newspaper  nginx  nlp  node  node.js  nodejs  nosql  notation  notes  npm  npr  nuclear  nuget  nvidia  nytimes  o'reilly  obama  objectorientated  ocaml  octopress  office  online  oop  openai  opensource  openstreetmap  opinion  oracle  organic  organisation  organizations  origami  outbound  owasp  p2p  pachyderm  package  packages  pandoc  papers  parallax  parallels  parenting  parliament  passion  passwords  patternrecognition  patterns  paulgraham  paulocoelho  payments  pca  peakoil  peckham  pelican  people  performance  perl  personal  phd  philosophy  phishing  photo  photographs  photography  photojournalism  photos  php  php-fig  php-fpm  physics  pi  picture  pictures  piecharts  pinboard  pinterest  piracy  pixel  planning  plants  platform  platforms  playing  playlists  plesk  plugin  plugins  podcast  poetry  police  political  politics  politicsblogs  portfolio  positive  postgresql  potencier  potter  pouchdb  power  powershell  pragmatic  prediction  predictions  premiership  presentations  primarykey  principalcomponentanalysis  printing  privacy  probability  process  procrastination  product  productivity  programming  programmingoctopress  project  projectmanagement  projects  promises  protocol  psychology  publication  publicdomain  publishing  purefunctions  puzzle  python  qa  qualitative  quantity  quantum  quantumcomputing  questions  quickcheck  quotes  r  racing  racism  racket  radio  rage  rails  random  randomforests  rants  rape  raspberrypi  react  reactjs  reactnative  reader  reading  reasonml  recipe  recipes  recursion  reddit  redirects  redux  refactoring  reference  regex  reinforcementlearning  rejection  relay  religion  remote  repl  research  resource  resources  responsive  REST  restful  rethinkdb  retro  reviews  richardfeynman  richterscale  rights  river4  rnn  robots  rocket  roguelike  role  roon  roonio  roots  rpc  rpggames  rss  rss2  rss2email  ruby  rubyonrails  running  rust  safety  salary  samaltman  satire  scaffolding  scalability  schedule  scheme  school  science  scifi  scripting  scripts  scrum  search  security  selenium  selfdriving  selfesteem  sem  semantics  seo  server  servers  serviceworker  setup  sexism  sexualassault  shares  shell  shirts  shoes  shop  shopify  shopping  showcase  shuttle  sicp  simplicity  simula  sklearn  skype  slack  slavery  slides  slowdown  smalltalk  sms  SMTP  snakes  sneakers  soccer  social  socialmedia  socialnetworking  socialnetworks  socialsoftware  society  sociology  software  softwareEngineering  software_engineering  solar  sound  soundcloud  source  sourcecontrol  sourceforge  spacex  spam  spark  speechrecognition  speed  spider  sport  sports  spotify  sql  sqlinjection  sqlserver  srp  ssh  stackoverflow  stacktrace  stallman  standards  stands  stanford  startup  startups  starwars  state  statemachine  statemachines  static  staticgenerator  statistics  stats  stellar  stephenfry  stevensinofsky  stochastic  stoicism  store  story  strategy  stripe  studies  studio  study  style  styleguide  stylus  sublime  sublimetext  success  sucks  suits  supermarkets  surveillance  sustainability  svg  svn  swimming  symfony  symfony2  sync  syntax  sysadmin  t-shirts  tables  taxis  tdd  teaching  teams  tech  techdirt  technical  technology  ted  telegram  telenet  television  temp  templates  tensorflow  tensors  terrypratchett  tesla  testing  tests  text  textpattern  the  theano  theatre  theman  themes  theming  theoldreader  theory  thinking  timemanagement  times  timetracking  tip  tips  titleless  tomwatson  toolbar  tools  toread  torrent  tracking  trademarks  trainers  training  translation  transport  travel  trees  trends  tricks  tron  troubleshooting  tufte  tutorials  tv  tweeted  twenty-fifteen  twig  twitter  type  typefaces  typewriters  typography  uber  ubuntu  ucbcem  uhd  ui  uk  unicode  unit  unittesting  unix  update  usa  usability  usb  userexperience  userinterface  utility  ux  vagrant  vanevarbush  vc  vectors  vegan  vegetarian  venture  venturecapital  versioncontrol  vi  via:popular  videopress  videos  view  views  vihart  vim  violin  virtualbox  virtualization  virtualmachines  virtualreality  visualisation  visualization  visualizations  visualstudio  voice  volz  voting  vr  vscode  vue  vuejs  vulnerability  walking  wardrobe  warrenbuffet  water  weather  web  web-development  web.py  web2.0  webadmin  webapplications  webapps  webcomic  webcomponents  webdesign  webdev  webdevelopment  webkit  webpack  webserver  webservice  website  websites  whatsapp  white  widget  wifi  Wikipedia  windows  windows7  windows10  winer  women  woo  woocommerce  wood  woothemes  wordpress  wordpress-plugins  wordpress-themes  wordpress.org  wordpressmu  work  workflow  world  wp  wpmu  writing  xdebug  xeroxparc  xkcd  xml  xmlrpc  xp  xperf  xss  yahoo  ycombinator  york  youtube  zen  zenhabits 

Copy this bookmark:



description:


tags: