Kitz ADSL Broadband Information
adsl spacer  
Support this site
Home Broadband ISPs Tech Routers Wiki Forum
 
     
   Compare ISP   Rate your ISP
   Glossary   Glossary
 
Please login or register.

Login with username, password and session length
Advanced search  

News:

Pages: 1 [2]

Author Topic: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)  (Read 1665 times)

Weaver

  • Addicted Kitizen
  • *****
  • Posts: 7249
  • Retd sw dev; A&A; 4 × 7km ADSL2; IPv6; Firebrick
Re: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)
« Reply #15 on: February 23, 2019, 02:03:45 AM »

> what’s the best coding to learn

If you want to learn some really serious programming take a look at the D programming language. I had sixteen years of professional systems programming experience in various ASM and C. Now I’m retired D is my dream tool as I feel C++ is a real dogs’ breakfast, it’s just turned into a total mess and although a lot of sane professionals stick to C instead, we can do much much better, with D. D is general-purpose, a ‘system programming’ language, the fastest language there is and it’s extraordinarily powerful with three compilers two of which produce stunning quality code. You can write any kind of code in D without finding that you are running up against the limits of the language. D can be mixed with C freely too which is s huge benefit.

If you want to learn programming from the ground up, with no prior experience, there is a free D book written by Ali Çehreli - at http://ddili.org/ders/d.en/ Although it’s intended for complete beginners, new to programming in general, I found it to be quite accessible even as a professional who is converting from C.

If you are new to programming then you need to be aware that there are several different types of programming languages. There are domain-specific languages vs general-purpose programming languages. Domain-specific ones are only any good for writing certain types of restricted programs, for example php is only any use for writing programs that run inside web servers, as far as I know. And javascript is sometimes restricted to programs that live inside a webpage. (although I did once write a Microsoft jscript program which could be run separately on it own and whose execution could be started from the windows command line.) So watch out for one-trick ponies.

Secondly there are dog-slow languages and fast languages. Python programs tend to take a fortnight to run and unless performance doesn’t matter you simply stay well away. Some programs are ‘interpreted’ and some programs are generate by a ‘compiler’ and then run. Google these terms. If you want to learn professional programming and how to produce ultra-high-speed small efficient programs then you need a compiled programming language such as D, C or C++.

Thirdly there is systems programming and application programming. The latter is what it says on the tin, writing apps. Systems programming is everything else. Writing software libraries, modules - code that is for other programmers to use, and which will form a part of some larger unknown systems. Systems programming might involve writing (part of) an operating system, or a device driver - that software that is devoted to handling hardware  - or very technical stuff which involves getting the best out of your processor in terms of exploiting speed or new features. It could involve writing communications protocols, code to talk to another system. Or it could involve writing code that will live inside some kind of device other than your own usual computer, say code that lives inside a printer or inside a modem. Only a few programming languages are suitable for systems’ programming. D, C, C++ and Ada are examples. Languages such as Python, PHP, Perl, Javascript and so on could not be used to write an operating system, or power a modem or a printer. Also they could not realistically be used as tools to allow you to write a spreadsheet because even if you could do it at all it would take about 17 years to do anything at all.
Logged

burakkucat

  • Global Moderator
  • Senior Kitizen
  • *
  • Posts: 26376
  • Over the Rainbow Bridge
    • The ELRepo Project
Re: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)
« Reply #16 on: February 23, 2019, 05:40:02 PM »

There, above, you have a very welcome guide written by a professional.

What do I use? C. And if I can't do what I would like to do in C, then I will resort to native assembler.  :D
Logged
:cat:  100% Linux and, previously, Unix. Co-founder of the ELRepo Project.

Please consider making a donation to support the running of this site.

Chrysalis

  • Content Team
  • Addicted Kitizen
  • *
  • Posts: 5719
Re: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)
« Reply #17 on: February 23, 2019, 06:29:38 PM »

C is by far the best language, whenever I use a program written in C its fast, low memory footprint and snappy, then use coded in something like .net it feels like it needs a 16 core 10ghz cpu to be responsive.  But I believe C is a pain to code in, dev's seem to all hate it, and prefer using frameworks like .net.
Logged
Sky Fiber Pro - Billion 8800NL bridge & PFSense BOX running PFSense 2.4 - ECI Cab - LINE STATISTICS CLICK HERE

sevenlayermuddle

  • Helpful
  • Kitizen
  • *
  • Posts: 4019
Re: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)
« Reply #18 on: February 23, 2019, 10:20:03 PM »

Ah, my own code writing career spanned a mere  30 years though 10 years further on, I’m still addicted to code writing. :)

For those who wish to take absolute best advantage of hardware, assembler is imo unbeatable, with its direct correspondence to hardware.   Trouble with assembler is, it is different for each processor family, with a big learning curve for each new architecture.   In my own career I have written code of which I am rather proud, for certainly proprietary mainframes, for Motorola 68000, and for Microchip PIC.   But I have never been able to justify the time to learn how to efficiently code Intel assemblers, so I’d not be a good person for an Intel assembler project.

Along came ‘C’, one goal of which was to provide a good chance of machine-independent correspondence to most processors’ assembly languages.   It has for many years  been the favourite for devs with whom I worked, simply because you can generally get a good idea, from looking at what you have written, how much code it will occupy, and with what memory footprint.   In my own career, OS internals and protocol stacks, performance and efficiency was all-important, and with custom designed hardware performance was set in concrete, so nobody liked to get further from the hardware than ‘C’.

Object-oriented variations such as C++ and its variants, allow an amazing amount of functionality to be obtained from a single line of code, and are well suited to abstract problems.    Trouble is, it can be very hard to envisage what machine code that line of code will generate, hence very difficult to know whether it is efficient enough.  But if your goal is to must write something that works, in a short time, and you have the option to simply specify a faster CPU if your code runs too slow, OO languages can be very useful.

And then of course, there are the proliferation of other platform-independent interpreted  languages, like Basic, Java, Python etc.   All have their uses, but generally hugely inefficient, if your mission is to make every CPU cycle count.

In summary, I’d say that good (emphasise good) programming in ‘C’ should be a mandatory skill for anybody serious about programming as a career, even if not used on a daily basis.   If you can write good ‘C’ you can probably learn any assembler.  A bit like studying the Highway Code is mandatory for getting a driving licence, or when learning to cycle. :)

Logged

Weaver

  • Addicted Kitizen
  • *****
  • Posts: 7249
  • Retd sw dev; A&A; 4 × 7km ADSL2; IPv6; Firebrick
Re: Which distros are good for noobs and semi-noobs..? (& a Q about WINE)
« Reply #19 on: March 04, 2019, 04:45:14 AM »

Even though I have been a career full-time 100% asm programmer for four years, and I love it, and am still addicted, I have to say that asm is so incredibly unproductive and error-prone. Languages such as D and C++ and C (to a lesser extent) can be so powerfully intelligent in terms of code generation, both by the compiler itself and by compile-time function evaluation in D now and generics’ tricks in C++ with ugly template black magic, that they can generate efficient adaptive code that is so very hard for a human to create. You can basically view D/C++/C compilers as very sophisticated assemblers now and that’s the right way to think about it, especially as GDC, GCC and LDC / Clang can mix assembler macros right into the guts of the code inline and apply optimisation to it and generate optimised automatic interface code needed to wrap round the assembler fragments and get input and output parameters in and out safely. I basically now write machine code using an assembler called GDC (GCC D compiler).

So asm source as we knew it has in my view had its day because far better tools came along and we only gained lots of efficiency and intelligence, without having to sacrifice which we had to do thirty-plus years ago.

In my view asm is still around, but it’s just now right to let it contain a lot of curly brackets. And it has far fewer bugs.

Said with regret, in a way. Nostalgia, sweet memory, but that’s how things go.
Logged

boost

  • Reg Member
  • ***
  • Posts: 763

Thanks for that insight, Weaver/bcat/sevenlayermuddle :)

I know there's going to come a day when I have to teach myself systems coding. Quite looking forward to it, weirdly!
Logged
Pages: 1 [2]