Comments by "Lawrence D’Oliveiro" (@lawrencedoliveiro9104) on "Computerphile" channel.

  1. 1000
  2. 253
  3. 139
  4. 130
  5. 119
  6. 101
  7. 68
  8. 62
  9. 56
  10. 56
  11. 55
  12. 49
  13. 46
  14. 42
  15. 40
  16. 38
  17. 35
  18. 29
  19. 29
  20. 28
  21. 27
  22. 27
  23. 27
  24. 27
  25. 25
  26. 24
  27. 23
  28. 23
  29. 22
  30. 21
  31. 20
  32. 19
  33. 18
  34. 17
  35. 17
  36. 15
  37. 15
  38. 14
  39. 14
  40. 14
  41. 13
  42. 13
  43. 12
  44. 12
  45. 12
  46. 12
  47. 12
  48. 12
  49. 12
  50. 12
  51. 11
  52. 11
  53. 11
  54. 11
  55. 11
  56. 10
  57. 10
  58. 10
  59. 10
  60. 10
  61. 10
  62. 10
  63. 10
  64. 10
  65. 10
  66. 9
  67. 9
  68. 9
  69. 9
  70. 9
  71. 8
  72. 8
  73. 8
  74. 8
  75. 8
  76. 8
  77. 8
  78. 7
  79. 7
  80. 7
  81. 7
  82. 7
  83. 7
  84. 7
  85. 7
  86. 7
  87. 7
  88. 7
  89. 7
  90. 7
  91. 6
  92. 6
  93. 6
  94. 6
  95. 6
  96. 6
  97. 6
  98. 6
  99. 6
  100. 6
  101. 6
  102. 6
  103. 6
  104. 6
  105. 5
  106. 5
  107. 5
  108. 5
  109. 5
  110. 5
  111. 5
  112. 5
  113. 5
  114. 5
  115. 5
  116. 5
  117. 5
  118. 5
  119. 5
  120. 5
  121. 5
  122. 5
  123. 5
  124. 5
  125. 5
  126. 5
  127. 5
  128. 5
  129. 4
  130. 4
  131. 4
  132. 4
  133. 4
  134. 4
  135. 4
  136. 4
  137. 4
  138. 4
  139. 4
  140. 4
  141. 4
  142. 4
  143. 4
  144. 4
  145. 4
  146. 4
  147. 4
  148. 4
  149. 4
  150. 4
  151. 4
  152. 4
  153. 4
  154. 4
  155. 4
  156. 3
  157. 3
  158. 3
  159. 3
  160. 3
  161. 3
  162. 3
  163. 3
  164. 3
  165. 3
  166. 3
  167. 3
  168. 3
  169. 3
  170. 3
  171. 3
  172. 3
  173. 3
  174. 3
  175. 3
  176. 3
  177. 3
  178. 3
  179. 3
  180. 3
  181. 3
  182. 3
  183. 3
  184. 3
  185. 3
  186. 3
  187. 3
  188. 3
  189. 3
  190. 3
  191. 3
  192. 3
  193. 3
  194. 3
  195. 3
  196. 3
  197. 3
  198. 3
  199. 3
  200. 3
  201. 3
  202. 3
  203. 3
  204. 3
  205. 3
  206. 3
  207. 3
  208. 3
  209. 3
  210. 3
  211. 3
  212. 3
  213. 3
  214. 3
  215. 3
  216. 3
  217. 3
  218. 3
  219. 3
  220. 3
  221. 3
  222. 3
  223. 3
  224. 3
  225. 3
  226. 3
  227. 3
  228. 2
  229. 2
  230. 2
  231. 2
  232. 2
  233. 2
  234. 2
  235. 2
  236. 2
  237. 2
  238. 2
  239. 2
  240. 2
  241. 2
  242. 2
  243. 2
  244. 2
  245. 2
  246. 2
  247. 2
  248. 2
  249. 2
  250. 2
  251. 2
  252. 2
  253. 2
  254. 2
  255. 2
  256. 2
  257. 2
  258. 2
  259. 2
  260. 2
  261. 2
  262. 2
  263. 2
  264. 2
  265. 2
  266. 2
  267. 2
  268. 2
  269. 2
  270. 2
  271. 2
  272. 2
  273. 2
  274. 2
  275. 2
  276. 2
  277. 2
  278. 2
  279. 2
  280. 2
  281. 2
  282. 2
  283. 2
  284. 2
  285. 2
  286. 2
  287. 2
  288. 2
  289. 2
  290. 2
  291. 2
  292. 2
  293. 2
  294. 2
  295. 2
  296. 2
  297. 2
  298. 2
  299. 2
  300. 2
  301. 2
  302. 2
  303. 2
  304. 2
  305. 2
  306. 2
  307. 2
  308. 2
  309. 2
  310. 2
  311. 2
  312. 2
  313. 2
  314. 2
  315. 2
  316. 2
  317. 2
  318. 2
  319. 2
  320. 2
  321. Actually printf is an interesting case, because it shows up the drawbacks of trying to do everything as a library routine within the limited type system offered by C. The trouble is that printf needs to be polymorphic -- accept arguments of any mixture of different types -- which C really cannot handle. So it simply gives up and doesn’t bother checking the argument types. There is another approach, which is illustrated by the memory-allocation API in Modula-2. The language defines built-in “NEW” and “DISPOSE” routines, which are fully type-safe, because they are constructs known to the compiler. But the language itself doesn’t define any memory-allocation routines. Instead, these constructs are translated to lower-level calls to routines named “ALLOCATE” and “FREE”, which are type-unsafe, and not defined anywhere in the language. Instead, they have to be provided somewhere in the program, or imported from some library. This way you get the best of both worlds -- type-checking at the high level, but full versatility of implementation at the low level. Imagine if something similar could be done on a more general scale, for I/O and possibly for other things. C++ uses a similar idea for its memory-allocation mechanism, but unfortunately its “<<” and “>>” I/O operators are a bit rubbish. And its printf support is just as unsafe as in C. GCC tries to do some type-checking of printf format strings. But this cannot work if the string is dynamic, since that requires the argument type information to be available at run-time.
    2
  322. 2
  323. 2
  324. 2
  325. 2
  326. 2
  327. 2
  328. 2
  329. 2
  330. 2
  331. 2
  332. 2
  333. 2
  334. 2
  335. 2
  336. 2
  337. 2
  338. 2
  339. 2
  340. 2
  341. 2
  342. 2
  343. 2
  344. 2
  345. 2
  346. 2
  347. 2
  348. 2
  349. 2
  350. 2
  351. 2
  352. 2
  353. 2
  354. 2
  355. 2
  356. 2
  357. 2
  358. 2
  359. 2
  360. 2
  361. 2
  362. 2
  363. 2
  364. 2
  365. 2
  366. 2
  367. 2
  368. 2
  369. 2
  370. 2
  371. 2
  372. 2
  373. 2
  374. 2
  375. 2
  376. 2
  377. 2
  378. 2
  379. 2
  380. 2
  381. 2
  382. 2
  383. 2
  384. 2
  385. 2
  386. 2
  387. 1
  388. 1
  389. 1
  390. 1
  391. 1
  392. 1
  393. 1
  394. 1
  395. 1
  396. 1
  397. 1
  398. 1
  399. 1
  400. 1
  401. 1
  402. 1
  403. 1
  404. 1
  405. 1
  406. 1
  407. 1
  408. 1
  409. 1
  410. 1
  411. 1
  412. 1
  413. 1
  414. 1
  415. 1
  416. 1
  417. 1
  418. 1
  419. 1
  420. 1
  421. 1
  422. 1
  423. 1
  424. 1
  425. 1
  426. 1
  427. 1
  428. 1
  429. 1
  430. 1
  431. 1
  432. 1
  433. 1
  434. 1
  435. 1
  436. 1
  437. 1
  438. 1
  439. 1
  440. 1
  441. 1
  442. 1
  443. 1
  444. 1
  445. 1
  446. 1
  447. 1
  448. 1
  449. 1
  450. 1
  451. 1
  452. 1
  453. 1
  454. 1
  455. 1
  456. 1
  457. 1
  458. 1
  459. 1
  460. 1
  461. 1
  462. 1
  463. 1
  464. 1
  465. 1
  466. 1
  467. 1
  468. 1
  469. 1
  470. 1
  471. 1
  472. 1
  473. 1
  474. 1
  475. 1
  476. 1
  477. 1
  478. 1
  479. 1
  480. 1
  481. 1
  482. 1
  483. 1
  484. 1
  485. 1
  486. 1
  487. 1
  488. 1
  489. 1
  490. 1
  491. 1
  492. 1
  493. 1
  494. 1
  495. 1
  496. 1
  497. 1
  498. 1
  499. 1
  500. 1
  501. 1
  502. 1
  503. 1
  504. 1
  505. 1
  506. 1
  507. 1
  508. 1
  509. 1
  510. 1
  511. 1
  512. 1
  513. 1
  514. 1
  515. 1
  516. 1
  517. 1
  518. 1
  519. 1
  520. 1
  521. 1
  522. 1
  523. 1
  524. 1
  525. 1
  526. 1
  527. 1
  528. 1
  529. 1
  530. 1
  531. 1
  532. 1
  533. 1
  534. 1
  535. 1
  536. 1
  537. 1
  538. 1
  539. 1
  540. 1
  541. 1
  542. 1
  543. 1
  544. 1
  545. 1
  546. 1
  547. 1
  548. 1
  549. 1
  550. 1
  551. 1
  552. 1
  553. 1
  554. 1
  555. 1
  556. 1
  557. 1
  558. 1
  559. 1
  560. 1
  561. 1
  562. 1
  563. 1
  564. 1
  565. 1
  566. 1
  567. 1
  568. 1
  569. 1
  570. 1
  571. 1
  572. 1
  573. 1
  574. 1
  575. 1
  576. 1
  577. 1
  578. 1
  579. 1
  580. 1
  581. 1
  582. 1
  583. 1
  584. 1
  585. 1
  586. 1
  587. 1
  588. 1
  589. 1
  590. 1
  591. 1
  592. 1
  593. 1
  594. 1
  595. 1
  596. 1
  597. 1
  598. 1
  599. 1
  600. 1
  601. 1
  602. 1
  603. 1
  604. 1
  605. 1
  606. 1
  607. 1
  608. 1
  609. 1
  610. 1
  611. 1
  612. 1
  613. 1
  614. 1
  615. 1
  616. 1
  617. 1
  618. 1
  619. 1
  620. 1
  621. 1
  622. 1
  623. 1
  624. 1
  625. 1
  626. 1
  627. 1
  628. 1
  629. 1
  630. 1
  631. 1
  632. 1
  633. 1
  634. 1
  635. 1
  636. 1
  637. 1
  638. 1
  639. 1
  640. 1
  641. 1
  642. 1
  643. 1
  644. 1
  645. 1
  646. 1
  647. 1
  648. 1
  649. 1
  650. 1
  651. 1
  652. 1
  653. 1
  654. 1
  655. 1
  656. 1
  657. 1
  658. 1
  659. 1
  660. 1
  661. 1
  662. 1
  663. 1
  664. 1
  665. 1
  666. 1
  667. 1
  668. 1
  669. 1
  670. 1
  671. 1
  672. 1
  673. 1
  674. 1
  675. 1
  676. 1
  677. 1
  678. 1
  679. 1
  680. 1
  681. 1
  682. 1
  683. 1
  684. 1
  685. 1
  686. 1
  687. 1
  688. 1
  689. 1
  690. 1
  691. 1
  692. 1
  693. 1
  694. 1
  695. 1
  696. 1
  697. 1
  698. 1
  699. 1
  700. 1
  701. 1
  702. 1
  703. 1
  704. 1
  705. 1
  706. 1
  707. 1
  708. 1
  709. 1
  710. 1
  711. 1
  712. 1
  713. 1
  714. 1
  715. 1
  716. 1
  717. 1
  718. 1
  719. 1
  720. 1
  721. 1
  722. 1
  723. 1
  724. 1
  725. 1
  726. 1
  727. 1
  728. 1
  729. 1
  730. 1
  731. 1
  732. 1
  733. 1
  734. 1
  735. 1
  736. 1
  737. 1
  738. 1
  739. 1
  740. 1
  741. 1
  742. 1
  743. 1
  744. 1
  745. 1
  746. 1
  747. 1
  748. 1
  749. 1
  750. 1
  751. 1
  752. 1
  753. 1
  754. 1
  755. 1
  756. 1
  757. 1
  758. 1
  759. 1
  760. 1
  761. 1
  762. 1
  763. 1
  764. 1
  765. 1
  766. 1
  767. 1
  768. 1
  769. 1
  770. 1
  771. 1
  772. 1
  773. 1
  774. 1
  775. 1
  776. 1
  777. 1
  778. 1
  779. 1
  780. 1
  781. 1
  782. 1
  783. 1
  784. 1
  785. 1
  786. 1
  787. 1
  788. 1
  789. 1
  790. 1
  791. 1
  792. 1
  793. 1
  794. 1
  795. 1
  796. 1
  797. 1
  798. 1
  799. 1
  800. 1
  801. 1
  802. 1
  803. 1
  804. 1
  805. 1
  806. 1
  807. 1
  808. 1
  809. 1
  810. 1
  811. 1
  812. 1
  813. 1
  814. 1
  815. 1
  816. 1
  817. 1
  818. 1
  819. 1
  820. 1
  821. 1
  822. 1
  823. 1
  824. 1
  825. 1
  826. 1
  827. 1
  828. 1
  829. 1
  830. 1
  831. 1
  832. 1
  833. 1
  834. 1
  835. 1
  836. 1
  837. 1
  838. 1
  839. 1
  840. 1
  841. 1
  842. 1
  843. 1
  844. 1
  845. 1
  846. 1
  847. 1
  848. 1
  849. 1
  850. 1
  851. 1
  852. 1
  853. 1
  854. 1
  855. 1
  856. 1
  857. 1
  858. 1
  859. 1
  860. 1
  861. 1
  862. 1
  863. 1
  864. 1
  865. 1
  866. 1
  867. 1
  868. 1
  869. 1
  870. 1
  871. 1
  872. 1
  873. 1
  874. 1