• 开源镜像
  • 开源沙龙
  • 媛宝
  • 猿帅
  • 注册
  • 登录
  • 息壤开源生活方式平台
  • 加入我们

开源日报

  • 开源日报第1018期:《操作系统 SerenityOS》

    25 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《操作系统 SerenityOS》
    今日推荐英文原文:《Why Self-Taught Programmers Should Not Have a Minority Complex》

    今日推荐开源项目:《操作系统 SerenityOS》传送门:项目链接
    推荐理由:Serenity 是一个图形化的类 Unix 操作系统。界面设计十分复古,结合了1990年代计算机设计的美学和21世纪计算机的高效率。
    今日推荐英文原文:《Why Self-Taught Programmers Should Not Have a Minority Complex》作者:
    原文链接:https://medium.com/better-programming/why-self-taught-programmers-should-not-have-a-minority-complex-e9d95b14d8d9
    推荐理由:自学编程也有其优势,很多时候能力比学历更重要。

    Why Self-Taught Programmers Should Not Have a Minority Complex

    Skills and motivation do a better job than certificates

    The demarcation line between the self-taught folks and “normal” programmers with a degree became slightly discriminating. This article encourages the former ones to raise their heads and wear that self-taught title with pride.

    The perceived lack of theoretical knowledge behind the programming languages is often seen as a disadvantage and hindrance for a developer career. Where does the bias come from? Most probably, it originates from the conviction that each developer career must have a software architect title as an ultimate goal. Having said that, I am not saying that a self-taught coder can never become an architect, but just that it is not true that every developer has to become the highest-ranked visionary.

    Some people just want to stay craftspeople and get better and better with every small figurine that they finish. The hindrance does not exist. As a self-taught programmer, you are valuable.

    You Have Proven That:

    You can learn

    It is difficult not to say all these banalities about developer career being a rapidly changing occupation with a lot of learning that you have to be ready for to simply pursue this career path.

    Technologies that were innovations just a couple of years ago — are legacies nowadays or disappeared without leaving any considerable hints. But to bridge these couple of years, a developer has to pick up new things quickly.

    Who dares to say that you can’t do that?

    You do not need supervision

    Neither at work nor in learning. You have been your own mentor, supervisor, teacher, and professor. You have selected your learning materials and composed your learning plan all by yourself.

    You did not need faculty to remind you about exams and term papers. OK, you did not have to write any either, but still. Practicing and your first job was your toughest exams, and you passed them successfully.

    You have inner motivation

    As you were still learning to code, you did not need a tutor to remind you about your homework. Experienced headhunters working for clients who value good programmers will keep that in mind.

    Indeed, a university degree means a lot of past work and motivation, too. But university students are given tutors, schedules, plans, ideas, literature lists, library accesses, PowerPoint slides, etc.

    You managed to break through without it all. Be proud of yourself.

    You never confuse working hard with expecting too much

    Companies tend to use pathetic wordings in their job announcements stating that they only accept strategically thinking developers (i.e. developers with a lot of architecture-related knowledge). But in reality, each company needs people who just get the work done without radiating with ambition.

    Besides, in many practical situations, working under pressure means an ability to turn off the strategic perspective and just fix a bug here and now. Although a lot of bug fixing may be a sign of bad architecture, strategical thinking and perfectionism often blur and prevent good developers from working toward a big result in small and calculable steps.

    The Rise of Microservices

    It is another good reason to be a self-taught programmer. More and more enterprises turn their backs to allrounder platforms — as they have proven to require a lot of customization to align with the needs of one particular company.

    Instead, enterprises rely on agile architectures consisting of many smaller one-purpose components. And since developer jobs still outnumber the candidates, this may be a perfect niche for self-taught coders.

    A “real” developer may feel claustrophobic working on a restrained microservice application. For a self-taught person, it will be easier to focus on it without worrying too much about the bigger picture. The microservices can talk with each other freely without creating any mutual influence. This fact allows the isolated development of single mini-applications. But each microservice must do a good job. For this, we need developers and coders that can feel comfortable with short-term tactical tasks.

    Become an Entrepreneur

    If you still feel that headhunters or graduated colleagues watch you down, just fire your boss. Only really bad developers are left without a job these days. Freelancing platforms barely ask you about your study certificate. Neither do customers that you will find through agencies mediating temporary project workers and employers.

    And if you do a good job, the word will spread about it.

    Alternatively, consider working with other self-taught programmers. People tend to think about entrepreneurship as a rare miracle, but, although it is not easy, being a businessperson is just another job.

    Go and Get a Damned Certificate

    Many platforms offer their own certifications. AWS ones are the hottest now. More niche platforms, for instance, Salesforce, have certificates and exams matched with different career stages and more narrow job profiles. Some platforms provide exhaustive free learning materials in all possible forms — written, visual, quizzes, and other fun things — to make their certifications more doable and attractive.

    AWS and other big players become closed universes, and to enter one, a very specific skill set is required. Their certifications start to play an even more significant role for intermediate career stages than university degrees.

    An Afterward: Find People Who Trust You

    Personally, I have met a lot of people who did not trust my expertise, and there always seemed to be a thousand reasons for this: self-taught, female, Russian, too young, etc. At one particular moment, I stopped to look for the reason inside myself.

    But before it happened, I used to explain that my coding experience comes from the university, although I mostly learned it by myself. Later in my career, I met people who did not drill into my way of acquiring knowledge but simply trusted my results.

    I regret that I used to focus too much on legitimizing my skills rather than building more connections to those colleagues who did not need any formalized proof.

    Today I am strongly convinced that a certificate or its absence should not mark us as insiders or outsiders.


    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1017期:《programmer-job-blacklist》

    24 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《programmer-job-blacklist》
    今日推荐英文原文:《Argo gives its self-driving vehicle hardware a big upgrade》

    今日推荐开源项目:《programmer-job-blacklist》传送门:项目链接
    推荐理由:拼多多公司内部各种丑闻近期引来曝光. 不仅拼多多存在各种丑闻, 知名的互联网”大厂”过去也是丑闻不断. 这个仓库记录了程序员找工作黑名单, 帮助大家更好地保护自己.
    今日推荐英文原文:《Argo gives its self-driving vehicle hardware a big upgrade》作者:Kyle Hyatt
    原文链接:https://www.cnet.com/roadshow/news/argo-self-driving-car-hardware-upgrade/
    推荐理由:Argo已经和它的合作伙伴福特和大众汽车一起开发其自动驾驶汽车平台有一段时间了,在这段时间里,它取得了一些不错的进展。不过现在,它已经准备好进入下一个阶段,为此,根据其周五的公告,它已经创建了一套更新的硬件。

    Argo gives its self-driving vehicle hardware a big upgrade

    Argo has been working on its self-driving car platform for a while now alongside its partners Ford and Volkswagen, and in that time, it’s made some decent progress. Now though, it’s ready to move to the next level, and to do that, it’s created an updated suite of hardware, according to its Friday announcement.

    This hardware’s claim to fame is that it’s much closer to “automotive-grade,” which, according to Argo’s release, means that it’s “hardware built to withstand extreme thermal conditions and maintain structural integrity over time,” and it can be manufactured in volume. How is this different from Argo’s previous tech?

    To start with, the company has condensed its lidar system into a single unit with a longer visual range. The single unit can better handle high operating temperatures thanks to built-in fans and can even keep itself clean with built-in water jets. Next, Argo upgraded its radar system by nearly doubling its range, which, when paired with the upgraded lidar, allows the vehicles to operate safely at higher speeds.

    Argo also went all-in on developing the camera system that its test vehicles will be using. Both near-field and far-field high-definition cameras are in use here, with bespoke image sensors that can better handle high-dynamic-range lighting situations. Argo also added three microphones to the sensor package, which allow vehicles to listen for emergency vehicle sirens and react to them even before they’re in visual range for the other sensors.

    To deal with all this sensor input, Argo is employing two self-driving computer systems, with the second one acting as a redundant unit in case the first one fails. The first computer is called the Autonomous Vehicle System and handles the bulk of the vehicle’s driving tasks. The second computer is called the Complementary Autonomous Vehicle System, and in addition to being a backup, it helps carry some of the load of the collision avoidance systems.

    It’s difficult to say how effective this new hardware will be compared with tech from other self-driving developers like Waymo or Cruise, but one area where Argo is lagging behind is in its tech’s visual appeal. Waymo and Cruise both have plenty of sensor bulges on their test vehicles, but nothing close to the sensor pods on Argo’s Ford Escape development vehicles. Appearance may sound like a silly thing to be critical of, but ultimately, when talking about something that’s meant to be sold to customers, it’s something to consider.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1016期:《复古 XP.css》

    23 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《复古 XP.css》
    今日推荐英文原文:《Don’t Just Write Code, Solve Problems》

    今日推荐开源项目:《复古 XP.css》传送门:项目链接
    推荐理由:一个复古风格的 css 库,可以把页面装点成古老 windows 系统的风格。项目提供的文档就使用了这种复古风格,而且在细节方面也有很高的完成度,代码示例,滚动条和菜单都可能让人误以为这不是浏览器而是操作系统提供的部件,还原程度相当高。
    今日推荐英文原文:《Don’t Just Write Code, Solve Problems》作者:Douglas Navarro
    原文链接:
    推荐理由:介绍了一套用于解决问题的行动模式

    Don’t Just Write Code, Solve Problems

    Focus on problem-solving to improve your code skills

    You’ve gotten stuck so many times while coding. We all have. Some hard, nasty problem. Many conditions. Maybe this can be broken down into smaller problems. Maybe some dynamic programming could help. There must be some famous algorithm behind this.

    “I know I wouldn’t have a hard time writing this code. If only I had any idea of what code to write.”

    After being through this a few times, you start to notice patterns. Little strategies. There’s always some similar problem. A sketch always helps. All of these small things that don’t seem important but end up helping a lot.

    Well, it turns out someone discovered and shared most of those “little strategies” a long time ago. In 1954, to be more precise. The man was named George Polya, and he was an amazing mathematician. He devoted a considerable part of his career to figuring out systematic methods of problem-solving, discovery, and invention.

    I’m not sure if Polya expected 21st-century software developers to read his work, but it has certainly helped me. And I’m sure it will keep being valuable for decades to come.

    Here’s what he has to say.

    Problem-Solving Is Not a Gift

    “Solving problems is a practical skill like, let us say, swimming. We acquire any practical skill by imitation and practice. Trying to swim, you imitate what other people do with their hands and feet to keep their heads above water and, finally, you learn to swim by practicing swimming. Trying to solve problems, you have to observe and imitate what other people do when solving problems and, finally, you learn to do problems by doing them.” — George Polya, How to Solve It

    Polya states this quite early in his book, and with good reason. You can’t start learning this if you think it is only for some gifted, special people.

    Problem-Solving Is Not a Purely “Intellectual Affair”

    “Teaching to solve problems is an education of the will. Solving problems which are not too easy for him, the student learns to persevere through unsuccess, to appreciate small advances, to wait for the essential idea, to concentrate with all his might when it appears.” — George Polya, How to Solve It

    Determination and emotions play an important role when solving tough problems, as every software developer eventually will.

    According to Mr. Polya, a good problem-solver is determined, as sometimes this person will have no idea of how to even start solving the problem. It is also important to have small victories — that is, to be able to solve smaller or related problems as well as different parts of the same problem.

    The Procedure

    Whenever you’re going through the problem-solving process, keep these four steps in mind:
    • Understanding the problem.
    • Devising a plan.
    • Carrying out the plan.
    • Looking back and reviewing.

    1. Understanding the Problem

    “It is foolish to answer a question that you do not understand. It is sad to work for an end you do not desire.” — George Polya, How to Solve It

    Before trying to jump straight to solutions, it is important to have all of the elements of the problem laid out. This will help you achieve a better understanding.

    Can you state your problem in one sentence?

    “Speaking and thinking are closely connected, the use of words assists the mind. Certain philosophers and philologists went a little further and asserted that the use of words is indispensable to the use of reason.” — George Polya, How to Solve It

    This small exercise is very helpful for two things: convincing yourself you understood your goal and not spending too much energy with that understanding while you are focused on trying to solve it.

    Explaining the problem to someone else is also helpful. As written in The Pragmatic Programmer, “rubber duck” debugging is simply forcing yourself to have a clear enough understanding of the problem that you can teach it to someone else. This enables you to have an idea and move forward.

    Are there constraints to be satisfied?

    “Therefore, let us, first of all, understand the problem as a whole. Having understood the problem,we shall be in a better position to judge which particular points may be the most essential. Having examined one or two essential points, we shall be in a better position to judge which further details might deserve closer examination. Let us go into detail and decompose the problem gradually, but not further than we need to.” — George Polya, How to Solve It

    What are the boundaries of your problem? Write them down somewhere.

    It can be a comment above the first line of a function you’ve written. It can be a list of bullet points on top of your design doc. It’s important to have them under focus while trying to come up with a solution.

    Offloading multiple constraints from your brain is also a way of removing some of the balls from the “mental juggling” we do while trying to come up with a good idea.

    Also, be careful if there are too many constraints. According to Polya, if you consider too many details at once, you may lose yourself. They may distract you from giving sufficient attention to the main point or even from seeing the main point at all. “Think of the man who cannot see the forest for the trees.”

    Can you draw a figure? Introduce suitable notation

    “An important step in solving a problem is to choose the notation. It should be done carefully. The time we spend now on choosing the notation may be well repaid by the time we save later by avoiding hesitation and confusion.” — George Polya, How to Solve It

    This one is always a winner for me, especially when it’s hard to wrap my head around some code-related problem. We all know we have to do some serious “mental juggling” sometimes, and when this happens, having sketches always helps.

    That is because your drawings will help you offload some of those thoughts onto paper (physical or not) and make more room in your head to focus on the tricky parts. From flowcharts to block diagrams, any sort of notation will definitely help you understand things better.

    Miro has been my choice when doing this collectively with other people or if this understanding needs to be shared later.

    My trusty unruled notebook also never leaves my desk, as it’s great for quick, ugly sketches.

    2. Devising a Plan

    “We have a plan when we know, or know at least in outline, which calculations, computations, or constructions we have to perform in order to obtain the unknown. The way from understanding the problem to conceiving a plan may be long and tortuous. In fact, the main achievement in the solution of a problem is to conceive the idea of a plan.” — George Polya, How to Solve It

    Although it is hard to even visualize which steps are required to solve your particular problem once you’ve understood it, Polya has come up with a few things that you can do to help get you started.

    One thing I’ll add here is this: Don’t mind the code initially. Solve the problem on paper first. Writing the code always seems easier in our heads and gets much trickier once you are trying to run it. Don’t do both things at the same time. First, solve the problem. “Run” an example on your notebook or on pseudo-code. Then, implement it for the machine.

    Do you know a related problem?

    “Good ideas are based on past experience and formerly acquired knowledge. Mere remembering is not enough for a good idea, but we cannot have a good idea without recollecting some pertinent facts.” — George Polya, How to Solve It

    What Polya is suggesting here is that you need to know at least what kind of problem or family of problems you are dealing with. For software people, that will usually mean answering these questions:
    • Is this an architectural issue?
    • Are there architectural patterns that are commonly used in this scenario?
    • Is this problem more on the level of an algorithm?
    • Are there battle-proven algorithms that solve this kind of problem?
    You’ll know you’re there once you’re able to find a problem that’s related to yours and has been solved before. Then you must ask yourself, “Can I use it?” Many problems may have some point in common, but the ones that share the most essential requirements or premises will probably be the most helpful.

    Could you restate the problem?

    Can you look at the problem from a different perspective? There are multiple ways of doing so. Can you drop a part of the condition or some of the requirements? Can you state this problem under a more specific scenario?

    If you are writing tests, thinking of simple examples that are created just by specific conditions of the problem is great for gaining ground on your final, more general solution. This leads us to…

    If you cannot solve the proposed problem, try to solve some related problem first

    Or a related and also simpler problem. Like writing good software, exercising good problem-solving can be thought of as an incremental process. Don’t try doing everything at once. Building up your final code or even system design diagrams and ideas is a process that will benefit a lot from doing the same thing for smaller problems.

    Even if your final artifact, such as a Git commit or design doc, is not very obviously an evolution of the last one, the ideas that you used to create it certainly are.

    3. Carrying Out the Plan

    “To devise a plan, to conceive the idea of the solution is not easy. It takes so much to succeed; formerly acquired knowledge, good mental habits, concentration upon the purpose, and one more thing: good luck. To carry out the plan is much easier; what is needed is mainly patience.” — George Polya, How to Solve It

    The 21st-century-developer version of this is “Think first, code later.” Once you are done understanding the steps of your algorithm or system design, implementing it later will be so much easier.

    Polya states that good problem-solvers are capable of checking each step of their solution once it’s done and questioning it from start to end. From a purely analytical, mathematical line of thought, one wrong step destroys everything. This may not seem so immediately dangerous in software, but it can be just as deadly, as the nastier bugs will manifest themselves in the worst moments — and possibly under very specific circumstances.

    For us, this translates to having good test coverage. If you didn’t test it, you didn’t question it. That means you’ve presumptuously considered your solution perfect, which we know is never true. Having this “Will it break?” mindset of constantly trying to come up with all the various failure modes of your solution is always helpful and will be conveniently documented with tests if you care to write them.

    To summarize, convince yourself of the correctness of your solution. Don’t make that convincing all too easy.

    4. Looking Back

    “Even fairly good students, when they have obtained the solution of the problem and written down neatly the argument, shut their books and look for something else. Doing so, they miss an important and instructive phase of the work. By looking back at the completed solution, by reconsidering and reexamining the result and the path that led to it, they could consolidate their knowledge and develop their ability to solve problems.” — George Polya, How to Solve It

    Not looking back and appreciating the trade-offs of your solution is something that happens a lot when things are done with too much haste.

    If it’s an algorithm, can you tell its time and space complexity? Does the code read well?

    If you are making decisions that will have a system-wide impact, please write down those trade-offs on a billboard if you have to. Spending one hour reexamining the outcome of your work will save you so much more later on. Take a break if you have to, come back to it later. Being deeply immersed in the problem you are solving will probably cause you to have tunnel vision and forget about relevant details.

    Also, it is possible that your solution to that particular problem could be generalized to be used in multiple scenarios. Think about that. Combined with good taste and careful thinking, creating new abstractions is a way of solving that problem for other people who encounter it.

    Wrapping Up

    Polya’s How to Solve It is a book I’ll keep close to my desk during my entire career. Software engineering is a truly thought-intensive, problem-solving field and Polya’s timeless advice may help you in a time of need.

    The book contains not only the four-step framework for solving problems but many other pieces of precious advice that fit the creative professions of the 21st century very well.
    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
  • 开源日报第1015期:《设备同步 FnSync》

    22 1 月, 2021
    开源日报 每天推荐一个 GitHub 优质开源项目和一篇精选英文科技或编程文章原文,坚持阅读《开源日报》,保持每日学习的好习惯。
    今日推荐开源项目:《设备同步 FnSync》
    今日推荐英文原文:《The Slowest Modern Programming Languages》

    今日推荐开源项目:《设备同步 FnSync》传送门:项目链接
    推荐理由:FnSync 是手机和电脑的同步工具,能够同步手机通知至电脑,同步剪切板,具有文件管理和传输功能,还可以通过手机控制电脑锁屏,通过拔掉手机充电电源,就能立即锁定电脑。
    今日推荐英文原文:《The Slowest Modern Programming Languages》作者:Mohammed Ayar
    原文链接:https://medium.com/better-programming/the-slowest-modern-programming-languages-d29ea2306675
    推荐理由:解释型编程语言通常比编译型要慢,但是当然不意味着没有竞争力。本文列举了5种最慢的编程语言,它们有各自的特点和“慢”的理由。

    The Slowest Modern Programming Languages

    And the reasons as to why they are slow

    (Photo by Karl Ibri on Unsplash)
    Programming languages have been out there for decades. Each language is built to satisfy a certain need.

    As of today, the world counts about 700 notable programming languages. While about 250 managed to stay afloat, the rest was dumped by the programming community. (Latest data from Wikipedia)

    Performance has been always an alarming matter for programmers. While before, execution time could be measured in calendars, nowadays, it is measured in fractions of seconds. Credits go to advancements in electronics.

    The speed rate by which computers evolve follows Moore’s law:

    (Moore’s law. Source: Wikimedia)
    In electronics, speed and performance translate to the number of transistors a particular chip can have. The number surprisingly doubles every two years according to Moore’s law. That’s why your hand-sized mobile phone is way faster than a room-sized supercomputer of the 1990s.

    When it comes to computer science, there is a difference between a faster code and a faster PC. A slow program and a slow computer.

    I bet our friends at Intel and AMD are doing a great job creating powerful computing systems in terms of speed. Creating robust and fast programs is, therefore, up to us.

    One of the things to take into account while creating software is language expectations. Each language is implemented differently, so each one delivers on its proper merits. And speed might simply not be among these merits.

    Now, if you’re trying to build a program that would carry out demanding tasks such as games and heavy mathematical computations, you’d better steer clear from slow programming languages.

    Generally, programming languages are two types:

    + Statically-typed programming languages + Dynamically-typed programming languages Statically-typed languages are usually compiled, meaning a program called the compiler parses and converts your entire English-like code to assembly language and produces a new file. This file, in turn, is executed manually by the user.

    Dynamically-typed languages are usually interpreted, meaning a software — the interpreter — analyzes and runs the code in a line-by-line fashion.

    The particulars of compilers and interpreters are heavily academic and therefore beyond the scope of this article.
    Most of us like dynamically-typed languages. The languages that are less error-prone and interpreted easily by the human such as Python. But this comes at a cost. Speed.

    In this post, we will lay down the 5 relatively slowest common dynamically-typed programming languages.

    Perl

    If you used UNIX before, it is highly unlikely that you haven’t seen a Perl script. The majority of UNIX files are in Perl.

    Perl is a Unix scripting language. It was created to mitigate the hardship programmers have to endure coding lengthy Shell programs. It is simply a bunch of Shell commands stuffed into a file.

    More importantly, Perl came to ease the tasks that were considered a nightmare to accomplish in C and the other Unix languages. Of course, C wouldn’t accept to be overtaken without paying the price.

    As it was, Perl was taxed speed wise.

    Additionally, finding a great Perl programmer these days is like trying to find a needle in a haystack. This is because, unlike Python, for instance, Perl is pretty sensitive to implementations and every operator should be in the right place to have a relatively efficient program.

    Even with the most efficient implementations, Perl still stumbles behind its high-level programming languages counterparts. Yet, it’s still growing and efficiency problems are being solved one after one especially after Perl 6 release in 2019, which was named Raku.

    PHP

    PHP is a scripting web development programming language and usually complements HTML, CSS, and MySQL in website deployment.

    Many argue that PHP is obsolete. But the truth is: IT IS NOT!

    w3techs said :

    “PHP is used by 79.0% of all the websites whose server-side programming language we know.”
    On top of that, the recent 2020 StackOverflow survey on programming, scripting, and markup languages showcased PHP as a perfectly alive language toping both C++ and Typescript:

    (Source: StackOverflow 2020 survey.)
    However, Because PHP has a gradual learning curve and cheap to host, it takes damages in terms of performance.

    PHP is incredibly slow because of the lack of just-in-time compilation (JIT compiler) and the fact that it is a dynamically-typed language. Fortunately, on November 26, 2020, PHP 8 came out with a performance optimization feature: a built-in JIT compiler.

    The built-in JIT compiler helped PHP draw nearer to the programming languages of its class in terms of speed and performance.

    Ruby

    Yukihiro Matsumoto, the official author of Ruby and known as Matz in the Ruby community, said:

    “Ruby is designed to make programmers happy”
    Ruby is an objected-oriented programming language. Everything is interpreted as an object. This has made it an elegant and easy tool to work with. Wave the wand and, your task is completed.

    However, in terms of performance, Ruby is a typically interpreted language. Because interpreted languages run the code statement by statement, they tend to be slower compared to languages that use compilers.

    Ruby takes another hit in terms of speed from the Global Interpreter Lock (GIL). This means that the language allows one thread at a time to use the GIL.

    Lastly, Ruby also suffers from high memory consumption and slow garbage collection.

    Python

    The versatile Python has recently ranked 1st as the most popular programming language according to multiple sources such as statista and The Economist. It is heavily used in data science, web development, and cybersecurity.

    Needless to flatter Python on this occasion as its benefits clearly outweigh its drawbacks. But as things stand now, most Pythonistas are allergic to speed. Yes, Python, unfortunately, is haunted by speed.

    Python and Ruby are members of the same family. They are both slow because of the GIL and the fact of using an interpreter. The main difference between these two is that the former is data science-oriented while the latter leans more towards web development.

    However, Python is backed by its powerful libraries and functions. And some of these libraries and functions, like the Numpy module and Filter() built-in function, are implemented in C++ resulting in a significant boost in terms of performance. That’s why Python is booming these days overtaking its fellow programming languages.

    Takeaway

    While speed and performance are important factors to take into account when it comes to software implementation, the blame should not be put on the programming languages alone.

    Indeed, the root cause of major speed and performance issues is poor implementations and bad code design.

    (Source: Twitter)
    Ultimately, despite dynamically-typed languages being slow they provide promising language experience as well as pump up productivity. So, coding is never boring.


    下载开源日报APP:https://opensourcedaily.org/2579/
    加入我们:https://opensourcedaily.org/about/join/
    关注我们:https://opensourcedaily.org/about/love/
←上一页
1 … 4 5 6 7 8 … 262
下一页→

Proudly powered by WordPress