Reputation: 649
I have noticed that term "Core" is mainly used for CPU cores and "Kernel" for OS kernels. This question at English SE clarifies that Core and Kernel are used to denote the central part of a fruit or nut. But what about IT? When should I use "Core" and when "Kernel"? How should I call the central part of a software? In my native language we have a single word to denote CPU core and OS Kernel, so two English words confuse me.
Upvotes: 8
Views: 4928
Reputation: 3624
Outside of domains where they're part of the established terminology (e.g. those you mentioned, CPU cores, OS kernels, etc.), it's very much up to your personal preference, as long as you're trying to express/reflect the architectural layering of a system, emphasizing markedly different "worlds" inside and outside of it.
As both strongly suggest a well-defined boundary (usually a documented interface, like an API, and/or some sort of a deployment/executive barrier etc.), you should be fine with either.
Accordingly, e.g. web frameworks come to mind that call their "inner circles" core (e.g. Drupal), or kernel (e.g. Symfony), or both at the same time, quite freely. Even though they, of course, rarely mean the exact same thing (according to the specifics of their own systems), if you'd force them to swap and use the other word, it could hardly cause any confusion (barring clashes with existing/external dependencies etc., obviously).
(E.g. I myself have been oscillating between the two in my designs for >30 years, annoying the hell out of myself with that, so I feel for anyone being frustrated about this word choice... As a rule of thumb for myself: if a system repeatedly reminds me of an OS, for whatever reason, I just give in and call it's core "the kernel", and if it's some higher-level, less generic (or less robust, or just lighter), more frameworkish thing, then I just call its kernel "the core", even if it may be counter-intuitive to a biologist. :) )
Upvotes: 1
Reputation: 27962
As you correctly state in your question, CPUs have “cores” and operating systems have “kernels”.
How should I call the central part of a software?
Typically, the terms “back-end”, “business logic (layer)” or “application logic (layer)” are commonly used to refer to the 'central' part of a software application. The term “back-end” usually dnotes the whole layer including all its purely technical parts, while “business logic” rather refers to the subset of an application's code dealing with the unique aspects of the application's subject matter, not including purely technical components.
From my perspective, talking about “core” to denote certain inner parts is fine, too. “.NET Core” is a good example of a software system where the word “core” denotes its 'innermost' part in terms of composition of various layers and modules.
Disclaimer: I'm not a native speaker of English. Improvements to this answer are welcome.
Upvotes: 3