12 Articles Every Programmer Must Read

As a Java programmer and software developer, the XXX articles that every programmer should know taught me a lot, they provided some practical and in-depth information in a specific area, these things Usually hard to find.


I have read many very useful articles during my studies and I have bookmarked them for future reading or reference. I personally think that all developers can benefit from these articles, so I've also written a "what every programmer should know" article to share with you.


This is my personal collection. In this post, you'll see some classic articles that every programmer should know, covering topics like memory, unicode, floating point numbers, networking, object-oriented design, timing, URL encoding, strings, and more. This list is very important for beginners and novices, because what they lack right now is actual combat experience. And these articles happen to be practically relevant, and they can learn a lot from them.


Knowing the basics early in your career will help you avoid mistakes later on that other programmers and software developers have stepped on as they learn. You may still not understand some of the details of floating-point numbers, or you may be confused by the details of memory, but it is still necessary to keep this list handy and refer to it from time to time when the time is right. Good luck and hope you enjoy these articles. By the way, if there is any must-read series for programmers that isn't on this list, don't forget to share it.


This is a very classic article that programmers must know about memory


. It will lead you into all aspects of memory, old and new, known and unknown. Although memory is common and ubiquitous, not every programmer knows enough about it. Understanding memory in modern systems is especially important if you are writing high-performance applications.


Hardware designers have brought in more sophisticated memory processing and acceleration techniques, such as CPU caches, but they can't be of maximum value without the programmer. I'm still reading this and it's hard to tell how much I've actually learned about random access memory (RAM), CPU caches including level 1, level 2 caches, different types of memory, direct memory access, memory controller design and Knowledge of ordinary memory. In short, it's a must-read for programmers of all levels.


What Every Computer Scientist Must Know About Floating Point Arithmetic


Floating point arithmetic is a very technical topic and not easy to master. Many Java programmers are unaware of what goes wrong when comparing float/double types using the == operator. Many people often make mistakes when using float/double for monetary calculations. This article is the best of the bunch and should be read by all software developers.


As your experience grows, you will definitely want to dive into the details of some common things, and floating-point arithmetic is one of them. As a senior Java developer, you must know how to do monetary arithmetic, when to use float, double or BigDecimal, how to round floating point numbers, and more. Even if you know some basics of floating point arithmetic, you will definitely learn something new by reading this article.


Unicode Every Programmer Must Know


Character encoding is another area that many programmers struggle with, "Every programmer should absolutely know about Unicode and character sets (no excuses!)" fills that void. A note, yes, that's the title of this article. It was written by Joel Spolsky, one of the founders of stackoverflow.com.


Joel posted this on his blog 10 years ago, but it's still relevant today. This article will tell you what Unicode is, what character encodings are, how characters are represented by bytes, and more. The best thing about this article is its language and writing, which you can easily understand even if you don't know what Unicode is at all. In a word, this is another must-read article for programmers, code farmers, and software engineers.


Time Every Programmer Must Know


In addition to character encodings, time and date is another area where programmers, myself included, often fall for it. Even senior developers get screwed with Greenwich Mean Time (GMT), UTC, Daylight Saving Time, leap seconds. Frankly speaking, it's hard not to hit some pitfalls when it comes to dealing with time zones, not to mention daylight saving time.


It's even worse if you want trial and error, because doing so will never solve your problem. There are many things that can go wrong or misunderstood. For example, whether the date includes a time zone or not may bother you, converting UNIX time to another time zone may crash you, and you might as well forget about clock synchronization and delays. I hope that after reading this classic article, many of your misconceptions about time can be cleared up and you can consolidate some basic common sense about dates. Every WEB developer must know URL encoding This article introduces some common misunderstandings in Uniform Resource Locator (URL) encoding, then tries to clarify what is HTTP URL encoding, and finally lists some common mistakes and solutions. Although the content of this article is not specific to a programming language, it is in Java to describe the problem and fix the problem with URL encoding.








You will learn the basic syntax of URLs, common URL formats used in HTTP and other protocols. This post also covers some common mistakes in URLs, such as character encoding, reserved characters in different parts of the URL, and URL encoding and decoding issues. If you are a Java developer, you will learn how to properly handle URLs in Java, how to construct URLs, and how to use the Apache Common Http client library. Finally, it offers some best-practice advice, like what you should encode when building URLs, make sure your URL-rewriting filters handle URLs correctly, and more. This is a must read for any web developer. WEB DEVELOPMENT EVERY PROGRAMMER MUST KNOW This is a very interesting article on programmers.stackexchange.com about the technical details that programmers need to implement before they can publish their website to the public. This includes interface design and user experience, security, web standards, performance, search engine optimization (SEO), and some important resources. Today's world relies heavily on the Internet, and many programmers have their own website, usually a blog. What you learn in this article may not help you professionally, but it will certainly help you in your personal matters. You'll learn about key technologies such as HTML, HTTP, XML, CSS, JavaScript, browser compatibility, tips for reducing website load times, XML sitemaps, W3C specifications, and many other key details. Every programmer must know SEO This is another very important article for WEB developers, programmers, and bloggers. Since many programmers are also bloggers, you can’t turn a blind eye to SEO. It’s still very important to learn a basic knowledge of SEO, which can help Google retrieve your content and recommend it to other programmers. In today's Internet-connected era, no company can exist without the WEB, and SEO has become particularly important. If you have a startup that sells some products, then SEO is something to focus on. All programmers, especially web developers, can benefit a lot from this article.




















Remember, SEO is a very broad subject, and different search engines, such as Google, Yahoo, etc., have different SEOs. Therefore, to master this skill you need to update your knowledge base frequently. Undefined Behavior that C programs must know about the C language has a concept of undefined behavior. Undefined behavior is a very broad topic, it has many nuances, that's one reason why I like Java, not so much undefined behavior, not so much confusion, more stable and quieter. Things that seem natural to many people are actually undefined behavior in C, and this is a common source of program bugs. Beyond that, any undefined behavior in C is up to the implementation (compiler and runtime), and they generate code that will format your hard drive, do unexpected things, or worse. Read this article and dive into the ocean of undefined behavior. What programmers must know about the network This quote is taken from this article, "You are a programmer. Have you ever wondered how a multiplayer game is implemented? From the outside it looks like it is: two or more players share over a network The same experience, as if they were in the same virtual world. But as programmers, we know the truth is different from what you see. It's all just an illusion.” This is a very interesting article about the web, written for game developers, but I think every program developer can benefit from it. Java programmers must know String This is my own article about java.lang.String, I personally think every Java developer should know about it. String is very important in day-to-day Java development, that's why every Java programmer should know it very well. This article covers many important areas of String, including String pools, string constants, comparing strings using == and equals, converting byte arrays to Strings, why strings are immutable, and how to properly concatenate strings ,etc. Advanced programmers should know this stuff, but it's good to have a look back.





























A Computer Science student asked this question on StackOverFlow . Just as we learned about some common programming concepts such as operating systems, algorithms, data structures, computer architecture, and other things, understanding security is just as important. Security is a big topic, including encryption and decryption, SSL, WEB security, obfuscation, authentication, authorization, etc. It is the basic knowledge that every programmer should know.


When I first started this business, I didn't know much about security. At this time, I started to write some Java WEB programs based on Servlet/JSP. Later, I learned about EWB security and some security threats such as SQL injection. Denial of Service, XML Injection, Cross-Site Scripting, etc.


As a Java developer, I now code following the Java Safe Coding Guidelines provided by fortify, PMP, and some other static code analyzers. This article is a great collection of resources on the topic of security, whether you are coding or not, these resources will be very useful to you. The Latency Time Every Programmer Must Know This article is a bonus, but one that every programmer should read. No matter what language you use, Java or C++, to write high-performance applications, you need to understand the basics of latency, such as how long it takes to read a variable from memory, read from L1 cache How long will it take, what about the second level cache, how long will it take to read randomly from the SSD hard disk, and if it is read from the disk? How long does it take to unlock a mutex, how long does it take to send a packet from one city to another, and how long does it take to be in the same data center? These latency numbers are independent of any programming language, and developers must think about writing high-frequency, low-latency applications, and they are part of the core knowledge base. The good news about this article is that it will tell you how these delay times have changed over the years. You can see what the delay was in 2006 and what it is now.











This is the list of must-read articles for all programmers. See the titles of these articles, XXX that every programmer should know, and you can get some in-depth knowledge about a topic. Frankly speaking, programmers have a lot to learn, like learning Java language is just the tip of the iceberg, but not everyone has the enthusiasm to learn.


Writing programs is a challenging job, and the basics that will help you in your career, such as memory, Unicode, floating point numbers, time, security, are very important for any programmer important. Some articles are language-related, like my own article on String, and undefined behavior every C programmer should know about, but it's good for many beginners to learn.


Annotation: I think there is another must-read, that is, counting, there are 12 articles in total. . There are a few articles that I can't access, and I also moved them to my blog.

From: it.deepinmind.com

1. https://www.akkadia.org/drepper/cpumemory.pdf

2. http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

3 , http://www.joelonsoftware.com/articles/Unicode.html

4, http://unix4lyfe.org/time/?v=1

6, http://programmers.stackexchange.com/questions/46716/what- technical-details-should-a-programmer-of-a-web-application-consider-before

7、http://katemats.com/what-every-programmer-should-know-about-seo/

8、http://en.deepinmind.com/blog/2014/05/15/what-every-c-programmer-should-know.html

9、http://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/

10、http://en.deepinmind.com/blog/2014/05/15/java-string-tutorial-and-examples-beginners-programming.html

11、http://stackoverflow.com/questions/2794016/what-should-every-programmer-know-about-security

12、http://www.eecs.berkeley.edu/~rcs/research/interactive_latency.html

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=326445827&siteId=291194637