nhaliday + advanced   140

multithreading - C++11 introduced a standardized memory model. What does it mean? And how is it going to affect C++ programming? - Stack Overflow
I like the analogy of abandonment of sequential consistency to special relativity tho I think (emphasis on *think*, not know...) GR might be actually be the more appropriate one
q-n-a  stackex  programming  pls  c(pp)  systems  metal-to-virtual  computer-memory  concurrency  intricacy  nitty-gritty  analogy  comparison  physics  relativity  advanced 
august 2019 by nhaliday
C++ Core Guidelines
This document is a set of guidelines for using C++ well. The aim of this document is to help people to use modern C++ effectively. By “modern C++” we mean effective use of the ISO C++ standard (currently C++17, but almost all of our recommendations also apply to C++14 and C++11). In other words, what would you like your code to look like in 5 years’ time, given that you can start now? In 10 years’ time?

“Within C++ is a smaller, simpler, safer language struggling to get out.” – Bjarne Stroustrup


The guidelines are focused on relatively higher-level issues, such as interfaces, resource management, memory management, and concurrency. Such rules affect application architecture and library design. Following the rules will lead to code that is statically type safe, has no resource leaks, and catches many more programming logic errors than is common in code today. And it will run fast - you can afford to do things right.

We are less concerned with low-level issues, such as naming conventions and indentation style. However, no topic that can help a programmer is out of bounds.

Our initial set of rules emphasize safety (of various forms) and simplicity. They may very well be too strict. We expect to have to introduce more exceptions to better accommodate real-world needs. We also need more rules.


The rules are designed to be supported by an analysis tool. Violations of rules will be flagged with references (or links) to the relevant rule. We do not expect you to memorize all the rules before trying to write code.

This will be a long wall of text, and kinda random! My main points are:
1. C++ compile times are important,
2. Non-optimized build performance is important,
3. Cognitive load is important. I don’t expand much on this here, but if a programming language or a library makes me feel stupid, then I’m less likely to use it or like it. C++ does that a lot :)
programming  engineering  pls  best-practices  systems  c(pp)  guide  metabuch  objektbuch  reference  cheatsheet  elegance  frontier  libraries  intricacy  advanced  advice  recommendations  big-picture  novelty  lens  philosophy  state  error  types  concurrency  memory-management  performance  abstraction  plt  compilers  expert-experience  multi  checking  devtools  flux-stasis  safety  system-design  techtariat  time  measure  dotnet  comparison  examples  build-packaging  thinking  worse-is-better/the-right-thing  cost-benefit  tradeoffs  essay  commentary  oop  correctness  computer-memory  error-handling  resources-effects  latency-throughput 
june 2019 by nhaliday
Delta debugging - Wikipedia
good overview of with examples: https://www.csm.ornl.gov/~sheldon/bucket/Automated-Debugging.pdf

Not as useful for my usecases (mostly contest programming) as QuickCheck. Input is generally pretty structured and I don't have a long history of code in VCS. And when I do have the latter git-bisect is probably enough.

good book tho: http://www.whyprogramsfail.com/toc.php
WHY PROGRAMS FAIL: A Guide to Systematic Debugging\
wiki  reference  programming  systems  debugging  c(pp)  python  tools  devtools  links  hmm  formal-methods  divide-and-conquer  vcs  git  search  yak-shaving  pdf  white-paper  multi  examples  stories  books  unit  caltech  recommendations  advanced  correctness 
may 2019 by nhaliday
6.896: Essential Coding Theory
- probabilistic method and Chernoff bound for Shannon coding
- probabilistic method for asymptotically good Hamming codes (Gilbert coding)
- sparsity used for LDPC codes
mit  course  yoga  tcs  complexity  coding-theory  math.AG  fields  polynomials  pigeonhole-markov  linear-algebra  probabilistic-method  lecture-notes  bits  sparsity  concentration-of-measure  linear-programming  linearity  expanders  hamming  pseudorandomness  crypto  rigorous-crypto  communication-complexity  no-go  madhu-sudan  shannon  unit  p:**  quixotic  advanced 
february 2017 by nhaliday
« earlier      
per page:    204080120160

related tags

aaronson  abstraction  academia  accretion  acm  acmtariat  advanced  adversarial  advice  age-generation  aging  agriculture  ai  algebra  algebraic-complexity  algorithmic-econ  algorithms  allodium  amortization-potential  analogy  analysis  analytical-holistic  ankur-moitra  aphorism  apollonian-dionysian  applicability-prereqs  applications  approximation  arrows  art  article  atoms  average-case  backup  baez  bandits  bayesian  ben-recht  benchmarks  berkeley  best-practices  better-explained  big-list  big-picture  big-surf  binomial  bitcoin  bits  blog  boaz-barak  books  boolean-analysis  browser  brunn-minkowski  build-packaging  business  c(pp)  caching  caltech  career  carmack  cartoons  causation  certificates-recognition  chaining  characterization  cheatsheet  checking  checklists  chemistry  circuits  classification  clever-rats  cmu  code-dive  code-organizing  coding-theory  cog-psych  combo-optimization  commentary  communication-complexity  comparison  competition  compilers  complexity  composition-decomposition  compressed-sensing  computation  computer-memory  concentration-of-measure  concept  concurrency  confluence  confounding  contest  convexity-curvature  cool  coordination  cornell  correctness  cost-benefit  counting  coupling-cohesion  course  cracker-prog  criminal-justice  crypto  cryptocurrency  cs  culture  curiosity  curvature  dan-luu  dana-moshkovitz  dark-arts  data-science  data-structures  database  dataviz  dbs  debugging  decision-making  decision-theory  deep-learning  definite-planning  definition  degrees-of-freedom  dependence-independence  design  devops  devtools  differential  differential-privacy  dimensionality  direction  dirty-hands  discrete  discussion  distributed  distribution  divide-and-conquer  dotnet  DP  draft  dropbox  duality  eastern-europe  economics  editors  education  electromag  elegance  embedded  embeddings  encyclopedic  energy-resources  engineering  ensembles  entropy-like  equilibrium  ergodic  erik-demaine  error  error-handling  essay  estimate  ethics  examples  existence  expanders  expansionism  expectancy  expert  expert-experience  explanans  explanation  exploratory  explore-exploit  exposition  extrema  fermi  fields  fluid  flux-stasis  food  foreign-lang  formal-methods  formal-values  fourier  frequentist  frontier  functional  game-theory  gaussian-processes  gedanken  gelman  generalization  geoengineering  geometry  git  google  gotchas  gowers  gradient-descent  graph-theory  graphical-models  graphics  graphs  gravity  greedy  ground-up  growth  guessing  guide  h2o  hamming  hardware  harvard  hashing  haskell  heavy-industry  heavyweights  heuristic  hg  hi-order-bits  hierarchy  high-dimension  higher-ed  history  hmm  homepage  homogeneity  huge-data-the-biggest  humility  hypothesis-testing  ide  ideas  IEEE  iidness  impro  info-foraging  information-theory  init  innovation  insight  instinct  interdisciplinary  intersection-connectedness  intricacy  intuition  ising  israel  iterative-methods  jobs  judgement  jvm  kernels  knowledge  language  latency-throughput  latent-variables  learning-theory  lecture-notes  lectures  legacy  lens  lesswrong  letters  levers  libraries  lifts-projections  limits  linear-algebra  linear-models  linear-programming  linearity  liner-notes  links  linux  list  llvm  local-global  logic  lower-bounds  machine-learning  macro  madhu-sudan  magnitude  management  markov  martingale  math  math.AG  math.AT  math.CA  math.CO  math.DS  math.FA  math.GR  math.MG  math.NT  math.RT  mathtariat  matrix-factorization  measure  measurement  mechanics  mechanism-design  memory-management  meta:math  metabuch  metal-to-virtual  metameta  methodology  metric-space  metrics  micro  microsoft  mihai  minimum-viable  mit  mixing  ML-MAP-E  model-class  moments  money  monte-carlo  mostly-modern  motivation  move-fast-(and-break-things)  multi  music-theory  naturality  network-structure  networking  neuro  new-religion  nibble  nitty-gritty  nlp  no-go  nordic  norms  nostalgia  novelty  numerics  objektbuch  ocw  off-convex  oly  oly-programming  online-learning  oop  open-problems  optimization  orders  ORFE  org:bleg  org:com  org:edu  org:inst  org:junk  org:mat  organization  os  oss  osx  overflow  oxbridge  p2p  p:*  p:**  p:***  p:null  p:someday  p:whenever  PAC  papers  pcp  pdf  people  percolation  performance  perturbation  phase-transition  philosophy  physics  pigeonhole-markov  pls  plt  polynomials  population  practice  pragmatic  pre-2013  prediction  preprint  princeton  prioritizing  probabilistic-method  probability  problem-solving  productivity  prof  profile  programming  project  proof-systems  proofs  properties  pseudorandomness  psychology  puzzles  python  q-n-a  qra  quantum  questions  quixotic  quotes  rand-approx  rand-complexity  random  random-matrices  random-networks  rationality  ratty  reading  rec-math  recommendations  recruiting  reduction  reference  reflection  regression  regularization  reinforcement  relativity  relativization  repo  research  resources-effects  review  rigor  rigorous-crypto  roadmap  rounding  ryan-odonnell  s:*  s:***  safety  sample-complexity  sampling  sanjeev-arora  scale  scaling-tech  scholar  scholar-pack  sci-comp  scitariat  SDP  search  sebastien-bubeck  seminar  sequential  shalizi  shannon  skeleton  skunkworks  slides  smoothness  social-choice  soft-question  software  space  space-complexity  sparsity  spectral  speculation  spock  stackex  stanford  stat-mech  state  static-dynamic  stats  stochastic-processes  stock-flow  stories  stream  strings  structure  stylized-facts  subculture  sublinear  submodular  sum-of-squares  summary  survey  sv  synthesis  system-design  systems  talks  tcs  tcstariat  teaching  tech  tech-infrastructure  technology  techtariat  terminal  texas  the-prices  the-trenches  the-world-is-just-atoms  thermo  thesis  thinking  tim-roughgarden  time  time-complexity  time-series  toolkit  tools  top-n  topics  topology  traces  tracker  tradeoffs  trees  tricki  tricks  tutorial  twitter  types  UGC  unit  unix  usaco-ioi  valiant  vc-dimension  vcs  video  virtu  visualization  washington  web  white-paper  wigderson  wiki  wild-ideas  winter-2017  wisdom  working-stiff  world-war  wormholes  worrydream  worse-is-better/the-right-thing  yak-shaving  yoga  zooming  🎓  👳  🔬  🖥  🤖  🦉 

Copy this bookmark: