RIP to BT Garner of MindRec.com... BT passed away early 2023 from health problems. He was one of the top PCE homebrew developers and founder of the OG Turbo List, then PCECP.com. Condolences to family and friends.
IMG
IMG
Main Menu

Look Up Tables in HuC?

Started by DildoKKKobold, 02/26/2016, 02:09 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

DildoKKKobold

Hi everyone -
   I'm reaching a roadblock in my code, as I'm going to need arrays of constant chars longer than 255. I'm sure there is a good way to do LUTs, bu I have no idea how. Any advice would be great!
AvatarDildoKKKobold.jpg
For a good time with the legendary DarkKobold, email: kylethomson@gmail.com
Dildos provided free of charge, no need to bring your own! :lol:
DoxPhile .com / chat
IMG

Arkhan Asylum

Can you describe what you're doing in a little more detail?

Are you looking for an explanation of what a LUT is, or, how to do one in HuC?

The problem with HuC is that arrays suck, so you would be doing this all in assembly.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

elmer

Quote from: Psycho Arkhan on 02/26/2016, 10:07 PMCan you describe what you're doing in a little more detail?

Are you looking for an explanation of what a LUT is, or, how to do one in HuC?

The problem with HuC is that arrays suck, so you would be doing this all in assembly.
Thank you ...  thank you ... thank you Arkhan.  8)

I'd love to be able to help, but I don't have the background knowledge with HuC that you have.

However far Dark Kobold and Gredler get with this ... they have my absolute respect as fellow "developers" that are trying to create something.

I'm so happy to see their progress and to read their posts.  :D

DildoKKKobold

Quote from: Psycho Arkhan on 02/26/2016, 10:07 PMCan you describe what you're doing in a little more detail?

Are you looking for an explanation of what a LUT is, or, how to do one in HuC?

The problem with HuC is that arrays suck, so you would be doing this all in assembly.
Yeah, that was my fear. For patterns, I'm doing this:

Quoteconst char drop_pattern_x[] =  {20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 190, 160, 130, 100, 70, 40, 
                                   20, 220, 40,  180, 60, 160, 80, 140, 100, 120, 110, 100, 120, 80, 140, 60, 160, 40, 180, 20, 220,
                                     90, 110, 130,  30, 50, 70, 150, 170, 190, 210, 90, 110, 130, 150, 170 ,190, 30, 50, 70,
                                     10, 74, 138, 202, 220, 156, 92, 28, 10, 74, 138, 202, 220, 156, 92, 28, 10, 74, 138, 202, 220, 156, 92, 28,
                                     40, 200, 140, 20, 120, 60, 180, 220, 100, 170, 150, 10, 190, 30, 80, 90, 210, 50, 110, 160, 70, 130,                                    
                                     10, 220, 70, 40, 100, 60, 120, 80, 140, 100, 160, 120, 180, 140, 200, 160, 220, 140, 200, 120, 180, 100, 160, 80, 140, 60, 120, 80, 140, 100, 160, 80, 140, 60, 120, 40, 100, 20, 80};                                                                  

const char drop_pattern_data[] =  {17, 0, 21, 17, 19, 38, 24, 57, 22, 81, 37, 103}; 
drop_pattern_data serves as my look-up table - Pattern length, offset, pattern length, offset, pattern length, offset, etc.

Yeah, its hackish, but because I can't write assembly inline, I couldn't think of a better way.

However, once you hit the 255 length, this becomes even more ridiculous. I'm wondering if there is a better way to do this sort of Look-up table. 
AvatarDildoKKKobold.jpg
For a good time with the legendary DarkKobold, email: kylethomson@gmail.com
Dildos provided free of charge, no need to bring your own! :lol:
DoxPhile .com / chat
IMG

OldMan

Quoteconst char drop_pattern_data[] =  {17, 0, 21, 17, 19, 38, 24, 57, 22, 81, 37, 103};
Split that into 2 arrays; one for offset, one for length. Not a big deal, really...

Quoteconst char drop_pattern_x[] =  {20,.....
This one is a 'problem'. One nice thing to know is that HuC create initialized data in order. So, if you
start with d_p_d[], then define d_p_d1[], they should be consecutive in memory. So, if you go past the end of the first array, you should get values from the second....
The catch there is making sure the data doesn't cross a page boundary :(

personally, i'd make a c function that returned the value you need (or sets a global variable) based on an index. Then you can use #asm/#endasm in the function to do it in assembler. A bit slower than direct access via an index register, but able to handle more than 256 bytes via a simple addition

Or you could try something like

char *p;
p=d_p_d+ix;
var = *p;

Arkhan Asylum

#5
You could try loading your "data" array with the address where each pattern starts, so then when you access the pattern you can grab the address and dereference it.

You still need to keep track of the length, though.  So:

drop_pattern_addr[] = {addresses,of,stuff}
drop_pattern_len[] = {length of each pattern}

then you'd just grab each (in assembly), and be ready to barf through it.

To setup the addresses, you could either:

1) Define each pattern in its own const array, and then const int* drop_pattern_addr[] = {first, second, third, etc};

2) leave it as is, and use the length array at run time to plow through the table and build the address array when the game loads up.  It's not like that's going to be hard, or impactful to performance since it'd happen once.

You'd just be like...  (its 6am, this might make no sense)

int offset = 0;
for(i = 0; i < drop_pattern_len's length; i++)
{
      drop_pattern_addr[i] = &drop_pattern_x[offset];
      offset += drop_pattern_len[i];
}
now you have where they all start at, so you can do all the things and the stuffs.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

Gredler

Thanks for the positivity and help guys, it's really appreciated. I'm trying to get a grasp on the programming side, even a surface level understanding so that I can parse it for changing art and music stuff at one point, but man you guys sound like wizards.

IMG

Sorry DK, but this is so far above my head it makes me remember why I'm stranded on art island haha - good luck!

OldRover

That which you believe to be over your head will always be over your head as long as you believe it to be there. When you don't allow yourself to believe that you cannot understand, you can open your mind to understanding. Attitude is everything.
Turbo Badass Rank: Janne (6 of 12 clears)
Conquered so far: Sinistron, Violent Soldier, Tatsujin, Super Raiden, Shape Shifter, Rayxanber II

Gredler

Quote from: The Old Rover on 02/28/2016, 04:42 PMThat which you believe to be over your head will always be over your head as long as you believe it to be there. When you don't allow yourself to believe that you cannot understand, you can open your mind to understanding. Attitude is everything.
Thank you wise sensai. On second look a lot of it does make more sense when I slow down and try to relate it to the higher level languages I am familiar with, the for loop makes sense, beyond that I am very lost - I need to just start coding some basic stuff. I made it through hello world and went on to squirrel and then haven't touched code outside of mml since then. It really is fun, but the stuff discussed here is daunting hahaha thanks for the encouragement, someday grelder with code something!

Arkhan Asylum

Do you know how pointers/addresses work?

If not, just dig up a basic C tutorial on that to explain.   It should make sense.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

Gredler

#10
Quote from: Psycho Arkhan on 02/28/2016, 11:14 PMDo you know how pointers/addresses work?

If not, just dig up a basic C tutorial on that to explain.   It should make sense.
No, I can only assume what pointers/addresses are. I have a basic understanding of c#, MEL, GS script, etc. Scripting is the way I would define my coding ability, I can read and modify code, and setup then plug in functions, but have not done any memory management or much data handling at all.

Thanks for the specific suggestion, that is super helpful. I have not done any tutorials or study on c yet, just the hello world tut on obeybrews site , but now I have something to read while at work - thank you sir it's really appreciated

Arkhan Asylum

Oh.  Yeah, if you don't understand pointers/addresses, you're going to have a real punch-in-the-dicktip kind of time with HuC once you start trying to optimize using assembly...

lol.  Hopefully the tutorials help.   The stuff isn't hard.  It's just necessary stuff.

This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

Bernie

NONE of this makes sense to me....  I am just glad someone is making more HB for the PCE.  :)

DildoKKKobold

Quote from: Psycho Arkhan on 02/28/2016, 05:59 AMint offset = 0;
for(i = 0; i < drop_pattern_len's length; i++)
{
      drop_pattern_addr[i] = &drop_pattern_x[offset];
      offset += drop_pattern_len[i];
}
now you have where they all start at, so you can do all the things and the stuffs.
Thanks, this one makes the most sense to me. Plus it has the bonus of no asm.
AvatarDildoKKKobold.jpg
For a good time with the legendary DarkKobold, email: kylethomson@gmail.com
Dildos provided free of charge, no need to bring your own! :lol:
DoxPhile .com / chat
IMG

TurboXray

I've worked with array access in HuC and have made fast access functions to help with this kind of problem. This stuff was trivial for me a couple of years back, but I'm sure I can jump right back into it.

 Is your problem speed? Or size limitation? Or both? I'm pretty limited on time right now, but if you're serious about this then PM me and I'll make time to help you with some custom made functions for your HuC project.

DildoKKKobold

Quote from: TurboXray on 04/02/2016, 09:27 PMI've worked with array access in HuC and have made fast access functions to help with this kind of problem. This stuff was trivial for me a couple of years back, but I'm sure I can jump right back into it.

 Is your problem speed? Or size limitation? Or both? I'm pretty limited on time right now, but if you're serious about this then PM me and I'll make time to help you with some custom made functions for your HuC project.
This was solely due to the fact that array access is faster with chars, but my arrays for level data are going to quickly exceed 256 bytes.

That said, I may take you up on your offer at some point soon, especially with increasing the speed of my tile collision routine. Its going to get many executions per frame, and if my code slows down, it will most likely be the culprit. I've just started coding the main game play part, rather than working on just the boss battles. Its turning out to be the most difficult, which probably isn't surprising.
AvatarDildoKKKobold.jpg
For a good time with the legendary DarkKobold, email: kylethomson@gmail.com
Dildos provided free of charge, no need to bring your own! :lol:
DoxPhile .com / chat
IMG

TurboXray

Just out of curiosity, how big do you think your index value would be into this array?

 Yeah, at some point array or pointer access is going to slow you down. The way HuC generates array and pointer code (which is always FAR access btw, even if the memory is fixed-near), is pretty bloated and slow. I use pragma fastcalls to make assembly functions which can return any type of data you need. Pragma fastcall even allows argument overloading so you can do something like GetByte(ptr, var) or var=GetByte(ptr) with the same custom function. Or whatever. You can easily customize it if you know you need to get a string of data or sequential elements. Things like that.

Arkhan Asylum

Not to mention, using arrays in conditional checks generates some awful lookong code.

Iirc, they both use x so theres lots of gooning around.

I found its ok to set arrays up in c, and then access and use them in assembly.

I tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TurboXray

Quote from: Arkhan on 04/19/2016, 12:25 AMNot to mention, using arrays in conditional checks generates some awful lookong code.

Iirc, they both use x so theres lots of gooning around.

I found its ok to set arrays up in c, and then access and use them in assembly.

I tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
I wonder if I could get credit for "independent study" course if I worked on HuC. Heh.

Gredler

Quote from: Bonknuts on 05/01/2016, 10:22 PM
Quote from: Arkhan on 04/19/2016, 12:25 AMNot to mention, using arrays in conditional checks generates some awful lookong code.

Iirc, they both use x so theres lots of gooning around.

I found its ok to set arrays up in c, and then access and use them in assembly.

I tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
I wonder if I could get credit for "independent study" course if I worked on HuC. Heh.
Let's work it out man, can I help? I can contact your school if needed. Huc needs your love and support!!! ;)

OldMan

QuoteI wonder if I could get credit for "independent study" course if I worked on HuC. Heh.
Probably. That's how Insanity started....

Arkhan Asylum

Quote from: Bonknuts on 05/01/2016, 10:22 PM
Quote from: Arkhan on 04/19/2016, 12:25 AMNot to mention, using arrays in conditional checks generates some awful lookong code.

Iirc, they both use x so theres lots of gooning around.

I found its ok to set arrays up in c, and then access and use them in assembly.

I tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
I wonder if I could get credit for "independent study" course if I worked on HuC. Heh.
What OldMan said.

I turned alot of this crap into college credit at the time. 

Turns out dicking off on my own, and with OldMan, was more educational than college was.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

Gredler

Quote from: Arkhan on 05/04/2016, 08:11 PM
Quote from: Bonknuts on 05/01/2016, 10:22 PM
Quote from: Arkhan on 04/19/2016, 12:25 AMNot to mention, using arrays in conditional checks generates some awful lookong code.

Iirc, they both use x so theres lots of gooning around.

I found its ok to set arrays up in c, and then access and use them in assembly.

I tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
I wonder if I could get credit for "independent study" course if I worked on HuC. Heh.
What OldMan said.

I turned alot of this crap into college credit at the time. 

Turns out dicking off on my own, and with OldMan, was more educational than college was.
The personal projects and Internet collaborations I did in college werrt as important and educational as my curriculum in college, for sure. I was not wise enough to seek class credit for if, but sounds like I should have :P

NightWolve

#23
Quote from: Psycho Arkhan on 05/04/2016, 08:11 PM
Quote from: TurboXray on 05/01/2016, 10:22 PM
Quote from: Psycho Arkhan on 04/19/2016, 12:25 AMI tend to write in c and hand optimize problem spots after i bang out more important shit, like AI, and actual gameplay
I wonder if I could get credit for "independent study" course if I worked on HuC. Heh.
What OldMan said.

I turned alot of this crap into college credit at the time. 

Turns out dicking off on my own, and with OldMan, was more educational than college was.
I thought OldMan was joking, but that's cool! I could see it I guess, I remember a guy I ran into that was graduating before me had written a blackbook app for DOS all in "C". He gave me the source to help me learn a few things. So building apps or games as a final project of your choice in the language the class was taught in could be done if the format allows. I took a Compiler Theory class for needed credits which ended with building a minimal Pascal-compiler, even gave it a GUI using Borland C++, so a standard course like that is made-to-order to try to fit HuC into it somehow.

So yeah, it's possible he could work it into a class where the teacher lets you to choose your own final project in a way. But this was back before the transitioning years from "C" to Java, where courses were still taught in it with related books. At least for my university, they started to feel that Java was the end-all-be-all future, so C/C++ was being dumped/phased out in favor of it - nowadays it'd have to be in Java there, whatever you do... I got the benefit of all during the transition, started in C, some C++, Visual Basic 4/5 (special studies course), and some Java towards the end. Oh yeah, I took an 8086 Intel Assembly course as well. And my Physics minor actually allowed for studying with a Motorola MC6800 in one case.

Arkhan Asylum

Yeah, that semester, i signed up for compiler design, and computer number theory.

They cancelled the classes because noone else signed up.

I was already fiddling around with pce, so i basically went over oldmans and was like SHOW ME THINGS.

Then i filled out the forms to turn it into a class.

It was a funny coincidence that i was messing with pce, and oldman happened to be a fan. 

If i picked c64, this all may have been less exciting
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

OldMan

It was actually all pretty funny. He did Insanity for the spring semester, and mentioned that it would be neat if he could put it on CD and sell it.
He was really surprised when I pulled out some old bootlegs I made: Space Invaders, one of the Macross games, and Dracula X. Then we spent the entire summer learning the CD-system, adding music (and voices) and of course figuring out how to make a CD.
I never expected he would actually get it made and sell it.

BTW, Arkhan wasn't the first guy who asked me for help writing a game. He was just the only one who was willing to do the actual work (rather than say "It needs to do this" and expecting me to make it happen).

TurboXray

Lol - I hate you guys already! I wish someone in my family was like that. I didn't even know of anyone that programmed; family, friends, random arse people.

 But yeah, that's pretty awesome. 

QuoteThen i filled out the forms to turn it into a class.
Was it independent study credit, or actual course requisite that you got credit for? Aren't you working on your CS master's degree? How's that going?

 A bit off topic, but I learned that my university offers a CS:BA and CS:BS degree program. The BA is terminal of course, it's weird that they don't officially list it. I've been asking around and some other universities offer the same thing. It's lighter on math requirement, and don't need as many in depth upper division classes. I'm going the BS route and hopefully grad school, but I thought it was interesting.

TurboXray

Quote from: NightWolve on 05/05/2016, 11:49 AMSo yeah, it's possible he could work it into a class where the teacher lets you to choose your own final project in a way. But this was back before the transitioning years from "C" to Java, where courses were still taught in it with related books. At least for my university, they started to feel that Java was the end-all-be-all future, so C/C++ was being dumped/phased out in favor of it - nowadays it'd have to be in Java there, whatever you do... I got the benefit of all during the transition, started in C, some C++, Visual Basic 4/5 (special studies course), and some Java towards the end. Oh yeah, I took an 8086 Intel Assembly course as well. And my Physics minor actually allowed for studying with a Motorola MC6800 in one case.

 The first course is Java, but from what I've seen of the course descriptions, C++ is definitely required for some classes. I've read that most system level code is still C (instead of C++), so I'm assuming that'll be for some upper division classes as well (OS, compiler, etc).

Arkhan Asylum

Quote from: TurboXray on 05/05/2016, 11:41 PMLol - I hate you guys already! I wish someone in my family was like that. I didn't even know of anyone that programmed; family, friends, random arse people.

 But yeah, that's pretty awesome. 
Yeah, I got a little lucky that OldMan also likes the Turbo.   Having two people interested in the same thing is a good way for shit to actually get done.   

I had originally started ideas for Insanity on the C64 in BASIC/ASM using the goofy programmer reference guide, and one of those "how to make arcade games" books.

but, the C64 community is a bunch of insufferable fucking morons, so I saw myself out.

QuoteWas it independent study credit, or actual course requisite that you got credit for? Aren't you working on your CS master's degree? How's that going?
Independent Study.  It counted as an elective for my degree.  You needed like, 20 credits of electives, or something.   Insanity became relevant coursework.   

I finished my masters like 3 years ago. 


QuoteA bit off topic, but I learned that my university offers a CS:BA and CS:BS degree program. The BA is terminal of course, it's weird that they don't officially list it. I've been asking around and some other universities offer the same thing. It's lighter on math requirement, and don't need as many in depth upper division classes. I'm going the BS route and hopefully grad school, but I thought it was interesting.
What do BA and BS even stand for.

I essentially double majored in CS and math.   I also discovered that many college students going for CS are complete fucking tools and have no actual interest in anything other than getting done.   It's a joke.

the professors are all generally tenured, lazy goons.  That doesn't help.

This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TurboXray

BA= bachelors of Arts. BS = bachelors of Science.

Arkhan Asylum

Why in the fuck would Computer Science be an art degree.

who did that.

hit them.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

Gredler

Quote from: Psycho Arkhan on 05/11/2016, 01:52 AMWhy in the fuck would Computer Science be an art degree.

who did that.

hit them.
I ended up getting a BS, but a BA was what I was going for initially, as a person trying to get employed making art using computer science

Arkhan Asylum

Quote from: Gredler on 05/11/2016, 02:32 AM
Quote from: Psycho Arkhan on 05/11/2016, 01:52 AMWhy in the fuck would Computer Science be an art degree.

who did that.

hit them.
I ended up getting a BS, but a BA was what I was going for initially, as a person trying to get employed making art using computer science
Photoshop?

lol
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TailChao

Quote from: TurboXray on 05/06/2016, 03:38 AMThe first course is Java, but from what I've seen of the course descriptions, C++ is definitely required for some classes. I've read that most system level code is still C (instead of C++), so I'm assuming that'll be for some upper division classes as well (OS, compiler, etc).
Java -> C++ -> C -> Assembly is a fairly common CS timeline, with the last two mostly optional depending upon focus.

Quote from: Psycho Arkhan on 05/11/2016, 01:52 AMWhy in the fuck would Computer Science be an art degree.
Colleges haven't really settled on a consistent way to handle "math lite" versions of degrees in science and technology fields. The other popular way is just to add "tech" to the end of the major name (i.e. Electrical Engineering Tech), which is what my college did.

The pitch is that you'll focus on "what's important" - just programming or just designing hardware or whatever. The catch is employers see you did a degree on easy mode, which may or may not work out.

Quote from: Psycho Arkhan on 05/09/2016, 10:18 PMI had originally started ideas for Insanity on the C64 in BASIC/ASM using the goofy programmer reference guide...
That was a pretty good book.

TurboXray

Quote from: TailChao on 05/11/2016, 10:28 AMJava -> C++ -> C -> Assembly is a fairly common CS timeline, with the last two mostly optional depending upon focus.
For the UA, Assembly is one of the three course you are required to take in order to unlock this three tier upper division access (BS program). Java and C++ are required in the lower level classes, and I suspect it's C for operating systems (system level programming). Looking over the BA program, Assembly is still required - but no mandatory electives after that.

QuoteWhy in the fuck would Computer Science be an art degree.
They're probably using the old meaning of "arts", as in skill and not art itself. But it seems really strange to have a BA in with a "science" title. Why not name it something else? Well, maybe there are exceptions like Political Science and such. I dunno. It's still weird.

 Anyway, the BA program more flexible in the class choice than the BS program (you're only required to do half of the CS classes and no elective category requirements). The BS program definitely has some rigorous courses and definitely appears to be tailored for continuing on to grad school. The BS program requires ~28creds in 300 or higher level course to graduate (out of 42 total). They won't let me take more than three CS courses a semester. And summer courses are damn expensive :/

 

Arkhan Asylum

Computer science needs to start with C/ASM, and then C++. 

All these fucking java/c#/goony programmers are getting dumber and lazier by the day.

If you can't at least manage C++, stay away from programming. 

This may sound cocky, but I don't really care.   I deal with lazy-mode programmer nonsense daily.   It's garbage.   

I talked to a professor when I was in class still.   She and I agreed it would be wise for computer science classes to have a class that spends an entire semester teaching you say, C64, or Apple II.

You can use an emulator and find free software now to let you program the things and learn how to wrap your head around an entire system and do things.

The catch would be finding a professor that hasn't shut their brain off due to tenure.


It's kind of a sad state that these things are in now.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

TurboXray

Quote from: Psycho Arkhan on 05/12/2016, 12:05 AMComputer science needs to start with C/ASM, and then C++. 

All these fucking java/c#/goony programmers are getting dumber and lazier by the day.

If you can't at least manage C++, stay away from programming. 

This may sound cocky, but I don't really care.   I deal with lazy-mode programmer nonsense daily.   It's garbage.   

I talked to a professor when I was in class still.   She and I agreed it would be wise for computer science classes to have a class that spends an entire semester teaching you say, C64, or Apple II.

You can use an emulator and find free software now to let you program the things and learn how to wrap your head around an entire system and do things.

The catch would be finding a professor that hasn't shut their brain off due to tenure.


It's kind of a sad state that these things are in now.
^This. I'm both fascinated, and slightly horrified by the mentality and direction of programming is heading nowadays. I've been on Quora the last 6 months scoping out what professional programmers in their fields have to say about all of this, and some if it pretty shocking. I'm trying really hard to remain open minded about a lot of these changes, so I can at least understand them. But it's difficult. For example, Python and its proponents in general perplexes me. Specifically when they think it's the superior programming language in the world (and C/C++ is almost useless and too complex to learn), and we're talking about large scale constructs (dynamic type languages make me cringe). When I look at Python, I think ahh that's cute. And dead easy language to learn with an incredible library (how that came to be, I have no idea); great for beginners stuff. The syntax to me actually feels like some form of BASIC. But I'm shocked someone would create something larger than 100 lines of code with it.

 I starting to understand some the dynamics at play that are influencing these changes in attitudes and programming philosophies (which is directly being driven by the business sector for obvious reasons), but I keep getting this feeling that this is a runaway effect (performance is external; hardware can always be upgraded and cost less than development). And then there's stuff on the opposite end of the spectrum like COBOL still being used (albeit a small fragment of the business community). The more I peer under the professional software world as a whole, the more of mess it seems to be.

elmer

#37
Quote from: Psycho Arkhan on 05/12/2016, 12:05 AMAll these fucking java/c#/goony programmers are getting dumber and lazier by the day.
Quote from: TurboXray on 05/12/2016, 03:07 AMI starting to understand some the dynamics at play that are influencing these changes in attitudes and programming philosophies (which is directly being driven by the business sector for obvious reasons), but I keep getting this feeling that this is a runaway effect (performance is external; hardware can always be upgraded and cost less than development).
Hardware is cheap, but programmers are expensive ... so the obvious solution to getting things "done" is ... cheaper and dumber programmers!  #-o

Everyone just wants to program-to-the-standard-library today, and not to ever have to write anything new beyond gluing library calls together.

I quit a consulting gig recently where the boss wanted to do the project in node.js (one of the currently "hot" software platforms).

He refused to do the project in C/C++ because those languages were obviously too hard, and memory-management is impossible to get right, and C/C++ programmers are difficult to find compared to web programmers (node.js is Javascript).

He didn't realize that node.js is actually just like a modern game engine ... Javascript is the scripting language, but whenever it needs to do something fast, the core functionality is written in C/C++. But whatever ... how hard could it be to do an application in Javascript?

I tried, I really tried, but I had to quit when it became clear (to me) that it's almost-impossible (IMHO) to write good, documented, maintainable code in Javascript.

Now one of the big things about node.js is that there's a built-in package manager (called "npm") with tens of thousands of Open Source libraries that exist ... so you're supposed to make constant use of that resource of high-quality code rather than writing you own stuff.

That's supposed to make it quick to write applications ... but gawd help the poor users who get hit by the bugs!

I found it hilarious that a whole bunch of popular node.js applications crashed recently because one programmer had a hissy-fit and removed his libraries from "npm", and the whole stack came crashing down from the lack of one 11-line trivial library package.

http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/


Quote from: Psycho Arkhan on 05/12/2016, 12:05 AMComputer science needs to start with C/ASM, and then C++. 
...
She and I agreed it would be wise for computer science classes to have a class that spends an entire semester teaching you say, C64, or Apple II.
I'd agree with this. Learn the fundamentals first, then you're in a better position to understand WTF the whole of programming is based on, and you'll get a better appreciation for the good bits of modern programming, and a better idea of what the time/complexity/cpu costs are of what you write.

But this pretty-much-contradicts the commercial pressures in education, which is to get folks out-of-the-door with a degree and lots of debt, knowing just-enough to fit into the workplace.


Quote from: Psycho Arkhan on 05/12/2016, 12:05 AMIf you can't at least manage C++, stay away from programming.
IMHO C++ has become a dreadful mess.

The language has evolved to the point where it's nearly impossible to look at something and see what it's doing, or supposed-to-do, without a knowledge of how the program is actually built, and what all of those classes/templates actually do.

It's no mistake that the Visual Studio editor has to basically include a C++ compiler built into itself just so that it can understand the code enough to give you hints on what stuff really means.

I find it completely unsurprising that it was Bjarne Stroustrup himself, the creator of C++, that wrote up the standards-document for software development for the F-35 fighter.

You know ... the F-35 that's very late, and who's radar needs constant rebooting, and that's even when it will actually take off instead of having the system software just shut the jet engine down when it panics (yay for a great example of exception-handling!).

Arkhan Asylum

#38
It's a giant mess.  Quora is full of insufferable fuckups that shouldn't be allowed to talk.

The biggest problem now is, people are lazy.  The programmers learning things now have been brought up in the era of "easy to use".   They think programming should be the same.   They cling to cutesy programming languages with lots of easy features and syntactic sugar or whatever the weaklings call it.

Some languages, like Python, do have their legitimate uses.  It's pretty good for mathematical simulations and experimentation.   It's just a weird language because they let indentation dictate scope, which was stupid of them.

You have other languages like LISP and Prolog which are weird, but have uses.   Functional programming scares most people away, too.

Most people don't want to sit and tinker, or sit and learn how things actually work.   They'd rather have intellisense filling out their code for them, and press a few buttons to get everything going. 

They don't want to understand memory impacts, performance, or how anything really works.    Languages like Java and C# abstract all of this away.    Your average student now, and even average 1-5 year employee at a software company, is afraid of pointers and will say they don't like C or C++ because it's hard.

That's horse shit.

What you ultimately get is people who are lazy, a bit clueless, and used to just googling Stack Overflow for fast answers to broken things.   These people are basically incapable of digging into anything and figuring out a problem.   If the answer isn't on StackOverflow, they are straight up fucked.

http://www.theallium.com/engineering/computer-programming-to-be-officially-renamed-googling-stackoverflow/


As for C++, alot of the fuckups you will see and deal with now seem to be caused by people who didn't know what the hell they were doing, banging away in Visual Studio or something, until all the red underlines went away, and it made the little light blink when they pressed Run.

People who are responsible enough with their code know better.

Also, C++11 has some features that shit all over everything.   It's pretty good.

But again, it's like giving blind chimps loaded handguns.

It will go poorly.


OH, and there was also COM.   COM contributed to C++ code being a hot mess now.  Whoever did all that Macro nonsense and said it was a good idea needs to never be allowed to touch a computer ever again. 

Ever.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

spenoza

Quote from: Psycho Arkhan on 05/11/2016, 01:52 AMWhy in the fuck would Computer Science be an art degree.

who did that.

hit them.
Bachelor of Arts typically is referring to liberal arts. BAs have broader base requirements across multiple disciplines and are a little less intense in the area of the degree. BA degrees are considered to be more flexible, where as the BS is considered to be less flexible and more area-of-study focused. BS degrees are more common at universities and BA degrees are more common at liberal arts schools. That said, several folks I went to school with at Kenyon came out with BA degrees in the sciences (Kenyon doesn't give out any BS degrees) and are now researchers and scientists, so I don't really think either degree is a hindrance. It could be argued that a BA is in some ways better for folks headed into grad school because BA candidates are often more robustly educated and thus better able to deal with some of the research requirements of grad school. BS degrees are more useful for people going straight into the field and skipping further education because they are more rigorously trained in their chosen academic field.

And it's all generalities, so none of it really matters for any given individual. BA, BS, who cares? Are you competent? Great! That's all that counts.

spenoza

In response to some of this other stuff... Java is a perfectly fine language, and there's tons of evidence out there to support that statement, not the least of which is its widespread popularity and presence in both programming projects and academia. Kinda hard to argue with Minecraft. Mojang certainly made it work for them.

Beyond that, the truly best tool depends a lot on what you're building with it. High-performance 3D game engine? If you aren't working in C or C++, why the hell not? But for anything that's not in a resource-tight environment? Why does it matter if a large-scale document management project isn't written in x86 assembly? Does it do what it was intended to do? Was is developed on-time and in-budget? Is it relatively secure against the more common exploits in the wild, like buffer overflows? Great! You win and nobody cares what language it was programmed in!

Arkhan Asylum

The point is that people who start in Java, and cling to it while fleeing the other way from other languages, are generally the kind of people that get hired at a place, ultimately get stuck working on some C++ and will likely go "uhh yeah I can... do that I guess" because they don't want to get fired.

So now you have someone poking around in something "sort of" like Java, getting it to work, but definitely not working right.

That is a gigantic problem. 

It's kind of irresponsible to be a computer programmer without knowing how some of these concepts actually work.

There's too much "fudging it" going on. 


Also, people *do* care what language it was written in, to an extent.

.NET (C#) doesn't exactly play nice with cross platform yet.   They've started to try doing that correctly now, but, things that are stuck in C# land are a bit hosed if they want to really be multi platform.
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

spenoza

#42
Quote from: Psycho Arkhan on 05/12/2016, 05:15 PMThe point is that people who start in Java, and cling to it while fleeing the other way from other languages, are generally the kind of people that get hired at a place, ultimately get stuck working on some C++ and will likely go "uhh yeah I can... do that I guess" because they don't want to get fired.

So now you have someone poking around in something "sort of" like Java, getting it to work, but definitely not working right.

That is a gigantic problem. 

It's kind of irresponsible to be a computer programmer without knowing how some of these concepts actually work.

There's too much "fudging it" going on. 


Also, people *do* care what language it was written in, to an extent.

.NET (C#) doesn't exactly play nice with cross platform yet.   They've started to try doing that correctly now, but, things that are stuck in C# land are a bit hosed if they want to really be multi platform.
Those points I can definitely agree with. Don't code in a language if you're not willing to come to terms with it. If a project needs C, learn C correctly and do it well. If the project doesn't really need C, but some manager has it in his head that he wants C, that gives you two options. Make the case for using a familiar language that still meets the needs of the project, or learn C and learn to do it well so you can do that project in C.

QuoteAlso, people *do* care what language it was written in, to an extent.

.NET (C#) doesn't exactly play nice with cross platform yet.   They've started to try doing that correctly now, but, things that are stuck in C# land are a bit hosed if they want to really be multi platform.
I didn't mean to imply language isn't important, only that there is no one grand language to rule them all. There are only projects with specific needs and guidelines. You match a language to the project. As long as the language is good enough, you're in the clear. In this case, if multi-platform is one of the specific guidelines, C# is not only not ideal, I'd argue it's not even "good enough".

Arkhan Asylum

Yeah see the thing is, if you know how to handle C/C++/ASM, and understand how a computer works, the newer things fall into place easily.


It doesn't go the other way though.   You basically get flailing, until the red underlines go away and it builds.

It's a mess, lol
This "max-level forum psycho" (:lol:) destroyed TWO PC Engine groups in rage: one by Aaron Lambert on Facebook "Because Chris 'Shadowland' Runyon!," then the other by Aaron Nanto "Because Le NightWolve!" Him and PCE Aarons don't have a good track record together... Both times he blamed the Aarons in a "Look-what-you-made-us-do?!" manner, never himself nor his deranged, destructive, toxic turbo troll gang!

spenoza

Quote from: Psycho Arkhan on 05/12/2016, 05:52 PMYeah see the thing is, if you know how to handle C/C++/ASM, and understand how a computer works, the newer things fall into place easily.


It doesn't go the other way though.   You basically get flailing, until the red underlines go away and it builds.

It's a mess, lol
I think someone who learned higher-level languages could still go on and learn a lower-level language. I agree it's probably a good bit easier to go the other way. But I think someone could learn on a higher-level language, stick to those languages, and still be a fantastic programmer. I think it's unnecessary for every programmer to know both high-level and low-level languages. There are so few projects these days (compared to the total number of programming and app development projects) that require those specific skill sets. I don't mean to suggest low-level programming is dying or unnecessary, just that I'm not convinced it's something that should be required for anyone who wants to do programming for a living.

I think of it as a very specific skill set. Valuable and useful, but not necessary for everyone.

Gredler

Quote from: Psycho Arkhan on 05/12/2016, 05:52 PMYeah see the thing is, if you know how to handle C/C++/ASM, and understand how a computer works, the newer things fall into place easily.


It doesn't go the other way though.   You basically get flailing, until the red underlines go away and it builds.

It's a mess, lol
so you've watched me coding, eh?!