news.volyx.in

Challenging algorithms and data structures every programmer should try (austinhenley.com)

439 points by whack · 1352 days ago · 111 comments on HN

Article summary

The article discusses several challenging algorithms and data structures that every programmer should try, including topological sort, recursive descent parsing, and bloom filters. These algorithms can be useful in solving real-world problems and can help programmers think differently about problems. The article also provides resources for learning these algorithms, including books and online courses. By learning these algorithms, programmers can improve their skills and become more proficient in their work.

Main themes

  • algorithms and data structures
  • programming skills
  • software development
  • problem-solving
  • technical interviews
  • industry trends
  • probabilistic data structures
  • parser implementation
  • programming in the small, medium, and large
  • trade-offs and requirements

What commenters say

  • Some commenters believe that knowing algorithms like bloom filters and recursive descent parsing is essential for certain areas of software development, but not necessary for others.
  • Others argue that while these algorithms are useful, they are not typically used in real-world applications and are mostly asked in technical interviews.
  • There is a disagreement about the importance of implementing algorithms from scratch, with some arguing that it is not necessary and others believing that it is essential for understanding how they work.
  • Some commenters think that the industry's focus on algorithms is misguided and that other skills, such as problem-solving and communication, are more valuable.
  • It is suggested that there are different types of programmers, some who enjoy algorithms for their own sake and others who prefer to solve real-world problems.
  • The use of probabilistic data structures, such as bloom filters and skip lists, is discussed as a way to improve performance in certain applications.
  • Some commenters believe that the ability to implement algorithms like parsers is a valuable skill, even if it is not used frequently, as it can help identify places where it would be useful.
  • There is a discussion about the difference between programming in the small, medium, and large, and how different skills are required for each.
  • The importance of understanding the trade-offs between different algorithms and data structures is highlighted, as well as the need to consider the specific requirements of a problem when choosing a solution.