Welcome, Guest. Please login or register.

Author Topic: Layers.library V45 on the aminet  (Read 65517 times)

Description:

0 Members and 1 Guest are viewing this topic.

Offline Minuous

Re: Layers.library V45 on the aminet
« Reply #329 from previous page: September 18, 2014, 06:35:31 PM »
Quote from: olsen;773283
There are three books which profoundly changed how I work. These are "Debugging the development process", "Writing solid code" and "Code complete".

I've read the 2nd and 3rd of these, and can confirm they are very good for high-level language programmers (maybe less relevant for assembly language coders such Cosmos). They are available at http://amigan.1emu.net/aw/
« Last Edit: September 18, 2014, 06:43:17 PM by Minuous »
 

Offline kamelito

Re: Layers.library V45 on the aminet
« Reply #330 on: September 18, 2014, 07:19:49 PM »
@Olsen
>Well, you asked for it ;)

Thanks. About Code complete AFAIR the first edition is about C and the other about OO languages. Is the first edition enough?
I read good comments about Programming Pearls any thoughts about this book?

Regards
Kamelito
 

Offline olsen

Re: Layers.library V45 on the aminet
« Reply #331 on: September 18, 2014, 08:01:57 PM »
Quote from: kamelito;773329
@Olsen
>Well, you asked for it ;)

Thanks. About Code complete AFAIR the first edition is about C and the other about OO languages. Is the first edition enough?

I only read the first edition, always was planning to give the second a look, though.

Quote from: kamelito;773329

I read good comments about Programming Pearls any thoughts about this book?
Regards
Kamelito

I wouldn't have recommended it, because it covers so much ground. There is programming practice, the matter of verifying that you got your implementation right, understanding how algorithms work, how optimizations can be made, and when they are useful (estimation methods, why optimization matters). As a book on getting to know your craft, and when to try picking a better algorithm than you already have, and why it may not be a good idea, it's as good as it gets.

The chapter on algorithm design techniques which has an example of how an algorithm in interpreted BASIC on a TRS-80 using a 1.7 MHz Z-80 CPU can beat a different implementation of that algorithm, written in 'C' and running on a DEC workstation using a 300 MHz Alpha CPU is worth the price of admission alone!

Enjoy :)
 

Offline Bif

  • Full Member
  • ***
  • Join Date: Aug 2009
  • Posts: 124
    • Show only replies by Bif
Re: Layers.library V45 on the aminet
« Reply #332 on: September 19, 2014, 09:21:00 AM »
That's an interesting question - what defines a coder vs. a software engineer. Hadn't thought of it in those terms until now.

My personal revelation from my own growth experience is I feel software engineering is more about code development process than knowledge of design patterns/languages, etc. Of course those are important too but I think without good process you are going to have far more problems than you should with your resulting code.

A might think a coder writes code without really caring too much how they get something done as long as they get their immediate problem/feature working. They have their own way of working that they feel works for them.

A software engineer employs a large number of long standing good practices that help in creating large and complex programs that contain few bugs.

I would say for the first 15 years of my career I was more of a coder. In the last 10 years I feel I'm more of a software engineer. I evolved because people that were smarter/more experienced than me were brought in to make a concerted effort to increase code quality in our large development studio.

While there are many processes I have learned and employed to write better code, the main differences that saw me evolve were moving to test driven development and automated testing. Hackers always avoid this as they feel it is too much work and will slow down development (they are usually too busy fighting fires due to their undiscovered bugs to have "time" to make the switch).

I'm tempted to write all sorts of stuff describing this but I don't want to waste time, Google it if interested. All I can say is since adopting these practices, only maybe one or two minor bugs a year are found by my customers in the code that I write. It's not that I am super smart or write perfect code, it's just that I find all my bugs before I release my code by writing thorough tests (using code coverage tools, etc.) - and I only have to press one key to run thousands of tests across all sorts of platforms and configurations - something that is always done before code is checked into source control. It gets to the point where this becomes a safety net you cannot live without. If I need to change some existing code I don't even need to think the ramifications through much - my main question will be, does it pass my existing tests? Oh it does? Code is probably good then. To think of trying that without test scares the crap out of me now.

Now when I see other people just coding something up, running some quick manual test that covers maybe 20% of the code paths, and just "figuring the rest will work because it should because I am smart" I have to shake my head. Sadly I work on a team where the other coders still do this. They are constantly chasing bugs, and frustratingly my tests in my code area run into all sorts of their bugs in their areas (these are large complex projects), and it is unbelievably expensive to have to continually communicate the problems and schedule fixing when they could have just found the bug while writing their code so that I didn't have to waste hours dealing with something they have to fix anyway.

I think it is to the point where if I am ever interviewing for a job again, I will interview them about their coding department's software engineering processes before I accept an offer. I will refuse to work with "coders" again.

Anyway, that's just my personal view on it, maybe not some well defined definition, but that's how I feel.
 

Offline modrobert

  • Newbie
  • *
  • Join Date: Nov 2008
  • Posts: 47
  • Country: th
    • Show only replies by modrobert
Re: Layers.library V45 on the aminet
« Reply #333 on: September 19, 2014, 11:33:41 AM »
My advice is to adopt a shameless attitude towards learning in general, all the information is out there on internet these days if you dig deep enough.

Want to learn a new physics theory? Watch a lecture when the professor who won the recent Nobel price for it explains the theory in detail, made freely available as a video by some University or foundation. If there is something he/she is talking about you don't understand, then search and learn about that as well. Just keep trying, give it time, eventually you will learn. After doing this you will start to get your own ideas and think about solutions to problems not yet solved.

Want to learn hardware design? Learn electronics. Read primers and books (PDF) about VHDL/Verilog on internet until your eyes bleed. After a couple of years, when you design your first state machine (simple CPU) and code a little program running on it, all the effort will be worthwhile.

Want to learn software engineering? Learn the basics of a computer language, anything will do, and then, for example, look at the fastest known sorting method. Tweak something in the code, experiment, watch what happens, even if it gets slower, why did it get slower? One morning you might wake up with a tweak idea which makes it slightly faster. The thrill of that might inspire you to write your own sorting method one day.

Want to learn philosophy? Good, it will help you to think out of the box, and come up with new ideas because suddenly abstraction takes you beyond previous borders of comprehension.

Why not learn all of the above? You can do it, don't let anyone make you think otherwise.

Don't worry about a career, don't worry about academia and titles. Instead, use internet and learn for the sake of knowledge which is its own reward. One day, you will have the potential to be more than anyone blindly following the wisdom of others, make your own path, and eventually others will follow you instead.
« Last Edit: September 19, 2014, 11:58:23 AM by modrobert »
A1200: 68020 @ 14 MHz (stock), 2MB Chip + 8MB Fast RAM, RTC, 3.1 ROMs, IDE-CF+4GB, WiFi WPA2/AES, AmigaOS 3.1, LCD 23" via composhite - Thanks fitzsteve & PorkLip!
 

Offline kamelito

Re: Layers.library V45 on the aminet
« Reply #334 on: September 19, 2014, 12:59:18 PM »
I'm wondering if OS 4.x is tested against tools like purify, valgrind or PVS Studio or any others tools like that to improve code quality and if automated tests cases are run before production.

Kamelito
 

Offline olsen

Re: Layers.library V45 on the aminet
« Reply #335 on: September 19, 2014, 01:35:42 PM »
Quote from: kamelito;773373
I'm wondering if OS 4.x is tested against tools like purify, valgrind or PVS Studio or any others tools like that to improve code quality and if automated tests cases are run before production.

Kamelito
As far as I know none of these tools exist for the OS4 target platform. For Purify and Valgrind that's a real dealbreaker (Valgrind needs an x86 platform, Purify is available for IBM Power architecture, but still seems to need a POSIX operating system to work its magic). As for PVS Studio, it seems that it could be used for static analysis even if the code produced was never intended to run on the PowerPC. I have no idea how good the static analysis capabilities of PVS Studio are compared to, say, LLVM-based Xcode, but I've used Xcode extensively for a small Amiga project of mine, and it certainly did help to shake a large number of bugs out of the code.

As for OS4 development work, if such code quality tests were available for the development environment, and properly integrated, it certainly would be very useful. Back in the day when Commodore switched from using a cross compiler to native development, employing the more modern Lattice and Aztec 'C' compilers, code quality did improve.
 

Offline olsen

Re: Layers.library V45 on the aminet
« Reply #336 on: September 19, 2014, 02:24:00 PM »
Quote from: Bif;773363
That's an interesting question - what defines a coder vs. a software engineer. Hadn't thought of it in those terms until now.

My personal revelation from my own growth experience is I feel software engineering is more about code development process than knowledge of design patterns/languages, etc. Of course those are important too but I think without good process you are going to have far more problems than you should with your resulting code.

My personal take on the difference between what these terms stand for is that the software engineer has a significantly bigger toolbox to draw upon than the coder. For the software engineer, the toolbox contains such things as process, a common language (terminology), and a big collection of methods which have been tried and tested.

None of this is the exclusive domain of the software engineer, the coder can use these tools, too. The thing is, if you practice software development professionally and enjoyed a professional education, you acquire this toolbox and it becomes part of your daily work. The coder has to work harder on acquiring it, and chances are that he won't be exposed to tools which a software engineer winds up finding in his toolbox as part of his education that at the time when they show don't seem to matter much. Only lateron some of their value may become apparent, and then it's often of crucial importance. A coder may not see the immediate value and discard that tool.

This sounds pretty abstract, so I'd like to give an example of such a tool that might show up one day and prove its value lateron: software configuration management (SCM), using tools such as SCCS, RCS, CVS, SVN, git, you name it. One can make backups of the source code as one maintains and modifies it, and that may be sufficient if the code base is small and the changes are sufficiently small as to be manageable. But one might cross the threshold when this is no longer the case, and if one hasn't picked up the habit of using an SCM, one may not realize how much work and effort it saves in the long run.

Quote from: Bif;773363

A might think a coder writes code without really caring too much how they get something done as long as they get their immediate problem/feature working. They have their own way of working that they feel works for them.

A software engineer employs a large number of long standing good practices that help in creating large and complex programs that contain few bugs.

Somebody might argue that a coder can accomplish the same thing through grit and determination alone ;)

The big difference here may be in that you learn to use tools to do the work for you which the coder still has to do all by himself, using his brains alone. If a task can be performed through automation, it is reasonable to assume that it can be done more quickly in this form than a human could, and it's probably quite boring to begin with. It will save you time and effort which you can spend elsewhere. Instead of combing your code for problems, testing it one problem fix at a time, you can focus on different and more complex aspects of the software.

Quote from: Bif;773363

I would say for the first 15 years of my career I was more of a coder. In the last 10 years I feel I'm more of a software engineer. I evolved because people that were smarter/more experienced than me were brought in to make a concerted effort to increase code quality in our large development studio.

While there are many processes I have learned and employed to write better code, the main differences that saw me evolve were moving to test driven development and automated testing. Hackers always avoid this as they feel it is too much work and will slow down development (they are usually too busy fighting fires due to their undiscovered bugs to have "time" to make the switch).

I know all too well to what you refer to :(  What always gets me is how programmers can be so confident and effective in making their lives not just harder, but really miserable by working without the assistance of simple tools which others use regularly.

You certainly can create code with a simple text editor, without using an SCM, test the code manually without even using a debugger, crank out code which makes testing hard, makes the code hard to read, etc. but it's not going to make you happier or make it easier to collaborate with your collleagues. You'll probably just end up spreading the misery.

Yet this is par for the course for many programmers you are going to meet. It's not just that they work like they do, by rejecting just about every tool you have been using to great effect in the past 20 years, they tend to insist that you have to work like them because they find it difficult to understand why anybody would even bother using different tools and methods than they do. Things tend to get difficult at this point :(

Quote from: Bif;773363

I'm tempted to write all sorts of stuff describing this but I don't want to waste time, Google it if interested. All I can say is since adopting these practices, only maybe one or two minor bugs a year are found by my customers in the code that I write. It's not that I am super smart or write perfect code, it's just that I find all my bugs before I release my code by writing thorough tests (using code coverage tools, etc.) - and I only have to press one key to run thousands of tests across all sorts of platforms and configurations - something that is always done before code is checked into source control. It gets to the point where this becomes a safety net you cannot live without. If I need to change some existing code I don't even need to think the ramifications through much - my main question will be, does it pass my existing tests? Oh it does? Code is probably good then. To think of trying that without test scares the crap out of me now.

Now when I see other people just coding something up, running some quick manual test that covers maybe 20% of the code paths, and just "figuring the rest will work because it should because I am smart" I have to shake my head. Sadly I work on a team where the other coders still do this. They are constantly chasing bugs, and frustratingly my tests in my code area run into all sorts of their bugs in their areas (these are large complex projects), and it is unbelievably expensive to have to continually communicate the problems and schedule fixing when they could have just found the bug while writing their code so that I didn't have to waste hours dealing with something they have to fix anyway.

This sounds painfully familiar :(

My personal impression is that if you are going to have a life and a job writing code, then you'd better make writing the code a task which does not impinge on your life. That means having a plan for dealing with the task at hand (a process) and a big enough tool box to draw upon when facing the unexpected. If you are going to slip and fall, you ought to be able to stand up and try again.
 

Offline psxphill

Re: Layers.library V45 on the aminet
« Reply #337 on: September 19, 2014, 03:12:19 PM »
Quote from: olsen;773379
My personal take on the difference between what these terms stand for is that the software engineer has a significantly bigger toolbox to draw upon than the coder.

It's pointless to use terms when you are applying your own definition of what they mean, as words are only useful to communicate your ideas.

http://en.wikipedia.org/wiki/Programmer

"A programmer, computer programmer, developer, coder, or software engineer is a person who writes computer software"

http://en.wikipedia.org/wiki/Software_engineer

"Software engineers apply the principles of engineering to the design, development, maintenance, testing, and evaluation of the software and systems that make computers or anything containing software work."

Most people who call themselves software engineers are doing it through arrogance as they are piss poor programmers who can't design for toffee. If you call yourself a software engineer because you think it sounds good, then be careful where you work.

"Some of the states regulate the use of terms such as "computer engineer" and even "software engineer". These states include at least Texas[30] and Florida.[31] Texas even goes so far as to ban anyone from writing any real-time code without an engineering license"

I've never called myself a software engineer because I'm not that pretentious, I preferred the term software developer. If I was arrogant I'd call myself a software architect, which trumps your made up software engineer status.
« Last Edit: September 19, 2014, 03:19:24 PM by psxphill »
 

Offline olsen

Re: Layers.library V45 on the aminet
« Reply #338 on: September 19, 2014, 05:33:58 PM »
Quote from: psxphill;773383
I've never called myself a software engineer because I'm not that pretentious, I preferred the term software developer. If I was arrogant I'd call myself a software architect, which trumps your made up software engineer status.
As far as I know the term "software engineer" is not a "standardized" professional term.

It has been used as shorthand for applying the professional standards which engineers are held to in the field of software development. Not a bad idea, considering what a mixed bag the professional standards in software development tend to be. If I remember correctly, the term "software engineering" goes back at least thirty years, and look how far we've come since then :-/

The term has also been used to denote differences in status between the lowly programmer, the programmer who has leveled up twice, and so forth, up to the apex of the imaginary pyramid, where presumably the "principal architect" sits (what do you give a programmer if you can't pay him a higher salary? a fancy job title) and looks downward, smiling benevolently and drawing the kind of salary which allows him to smile, if not smirk, and hardly lift a finger actually doing any programming work ;)

The term "software engineer" can be anything to anybody. Which is why I mentioned the context in which I used it. Because Thomas used this term to make his point, it does seem prudent to me to keep using it.

As for attaching status to titles, I'd personally be content to be known as a reliable programmer who tries to solve interesting problems and most of the time gets results ;)
 

Offline psxphill

Re: Layers.library V45 on the aminet
« Reply #339 on: September 19, 2014, 07:30:06 PM »
Quote from: olsen;773392
The term "software engineer" can be anything to anybody. Which is why I mentioned the context in which I used it. Because Thomas used this term to make his point, it does seem prudent to me to keep using it.

If you know that everybody has a different meaning to it, then why would you waste time assigning your own meaning and using the term?

All you'll do is have endless arguments over what the term means, which can't be solved as you are only one person and statistically nobody cares about your point of view.

Life is too short, which is why I'm not going to push you to understand my point of view.
« Last Edit: September 19, 2014, 07:33:54 PM by psxphill »
 

Offline Karlos

  • Sockologist
  • Global Moderator
  • Hero Member
  • *****
  • Join Date: Nov 2002
  • Posts: 16867
  • Country: gb
  • Thanked: 4 times
    • Show only replies by Karlos
Re: Layers.library V45 on the aminet
« Reply #340 on: September 19, 2014, 08:13:26 PM »
Quote from: wawrzon;773225
you have had access to the sources and been working on a w3d driver predating os4? wow!


It was a long time ago. I was trying to write some code around the V4 API and it kept having issues on my BVision. Somehow I ended up volunteering to find the source of the bugs and I got access.

Although the driver was never publicly released for the issues stated earlier,  the specific architectural changes that made the updated driver much smaller were adopted in the later drivers for other chips.

I later got involved in Warp3D on OS4 because I was one of few people with the necessary experience and will. I (re)wrote the Permedia driver for OS4 based on my updated 3.x code.

I like Warp3D, but it has far outlived it's usefulness. It's closed, deprecated and for many reasons it'll never deliver the full performance of the hardware it can support.

IMHO, for better 3D in OS3.x (and indeed OS4 on lower end machines), we need a replacement, open-source driver system, designed from the ground up on and for our machines. Such a driver could then have wrappers implemented for both Warp3D and OpenGL.

I have a lot of ideas for this, but no time.
int p; // A
 

Offline itix

  • Hero Member
  • *****
  • Join Date: Oct 2002
  • Posts: 2380
    • Show only replies by itix
Re: Layers.library V45 on the aminet
« Reply #341 on: September 19, 2014, 08:21:00 PM »
Quote from: psxphill;773383

"Some of the states regulate the use of terms such as "computer engineer" and even "software engineer". These states include at least Texas[30] and Florida.[31] Texas even goes so far as to ban anyone from writing any real-time code without an engineering license"


That is quite funny to is Finns. Here in Finland title is (usually) used to describe your job than competence. It has gone ven so far that I can craft my job title if I want to. And sometimes i do. So far I have been Software engineer, embedded engineer, project engineer, research engineer, training engineer, development engineer and it could be anything relating to my work. :)
My Amigas: A500, Mac Mini and PowerBook
 

Offline psxphill

Re: Layers.library V45 on the aminet
« Reply #342 on: September 19, 2014, 08:23:17 PM »
Quote from: itix;773414
That is quite funny to is Finns. Here in Finland title is (usually) used to describe your job than competence. It has gone ven so far that I can craft my job title if I want to. And sometimes i do. So far I have been Software engineer, embedded engineer, project engineer, research engineer, training engineer, development engineer and it could be anything relating to my work. :)

Yes, it's why we have sandwich artists and kitchen technicians.
 
 The job title you have is largely irrelevant, I'd rather have more money than a flashier title (some companies stroke your ego with a flashy title just so they can pay you less)
 

Offline itix

  • Hero Member
  • *****
  • Join Date: Oct 2002
  • Posts: 2380
    • Show only replies by itix
Re: Layers.library V45 on the aminet
« Reply #343 on: September 19, 2014, 08:29:10 PM »
Quote from: psxphill;773416
Yes, it's why we have sandwich artists and kitchen technicians.
 
 The job title you have is largely irrelevant, I'd rather have more money than a flashier title (some companies stroke your ego with a flashy title just so they can pay you less)


I have been told that in India if you don't get promoted regularly employees quit. So companies have invented different levels of engineers, like level 1, 2, 3 etc software engineers to keep workers happy.
My Amigas: A500, Mac Mini and PowerBook
 

Offline olsen

Re: Layers.library V45 on the aminet
« Reply #344 on: September 21, 2014, 09:13:58 AM »
Quote from: kamelito;773249
@Olsen @Thor,

Since it's too late to go back to school, could you please give a list of good books to go from a "coder" to a "software engineer". Being about C, C++, Algorithms, Design patterns whatever else suit you.

Thanks
Kamelito
I missed one book which might be helpful, and which is also very readable: "The practice of programming", by Brian Kernighan and Robert Pike. It covers some of the same ground as the "Programming pearls" collection, but complements it well with material absent from it, such as testing and debugging. I'd say that had this book been available to me some 25 years ago, it would have opened doors which at the time I did not even know to exist.
« Last Edit: September 21, 2014, 09:16:51 AM by olsen »