• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

Going back to University for Discrete Math, Computer Graphics and Databases Management Systems.

It's nice to be on a campus again. Driving back and forth to work and meeting with the same people every day to build the same thing over and over and over again was killing me. I am so thankful to be meeting different people and doing new things again.

Yeah, I agree, it's a really nice change of pace to be going to school coming from just working a lot.

I'm also in Discrete Math right. How are you liking it so far? My professor seems pretty great, and the class seems fairly interesting so far. Definitely feels like it's going to be much more applicable to CS for me than Calc I and II were. (By the way, I can't tell you how happy I am to be done with Calc classes forever. I managed to get through Calc I and II with C's, so I didn't do a great job, but I'm happy I'm done.)

Also, I feel like I've learned more in my first week of Operating Systems then I did during an entire semester of Computer Architecture last semester. 0.0
 

Tristam

Member
Does anyone feel that abstraction can, and sometimes is, taken way too far (in the same way that database normalization is sometimes taken too far)? Obviously they both have great benefits (in particular a certain level of database normalization is basically the point of a relational system), but taken too far can produce something that's unnecessarily complex (where does this call stack finally end?!) and quite probably inferior performance-wise to boot.

I may be off the mark here as I still consider myself a novice developer with a huge amount to learn, but curious to get the thoughts of more experienced folks.
 

hateradio

The Most Dangerous Yes Man
Can you show an example of what you mean?

There are certainly times when an abstract solution impairs the readability and comprehension from the code. In the Scala course one of the lecturers mentioned that writing "baby code" was actually not bad. It was funny to contrast this to the prior course which focused a lot on recursion -- which this guy said was the "GOTO of functional programing."

His point was that sometimes a simple while loop with mutable variables and a concise body is a lot more readable and understandable than recursion or folding. Everything is a good tool, but it can be misused.
 

usea

Member
Does anyone feel that abstraction can, and sometimes is, taken way too far (in the same way that database normalization is sometimes taken too far)? Obviously they both have great benefits (in particular a certain level of database normalization is basically the point of a relational system), but taken too far can produce something that's unnecessarily complex (where does this call stack finally end?!) and quite probably inferior performance-wise to boot.

I may be off the mark here as I still consider myself a novice developer with a huge amount to learn, but curious to get the thoughts of more experienced folks.
Yes, definitely. This is not a controversial opinion, either. The problem is that readability of code (on a per-line basis and an organizational basis) is subjective, so the waters are a bit muddy.

In general, simplicity is better. If you find that abstracting something will hurt simplicity, it's probably not worth it. However, abstractions often make things simpler. Especially if you're neither complecting state, nor conflating operations. Those two things will sometimes make you feel like you're helping, but you're actually just complicating things.

Rich Hickey gave a talk called Simple Made Easy which is one of the best programming talks I've seen. If you don't mind sitting through an hour-long video, I highly recommend it. If nothing else, the insight into the difference between simplicity and ease is valuable.
 

diaspora

Member
So I'm trying to make a function for my program that converts a char array of numbers (i.e. '0', '0', '1', '2', '5') into an int array. This is what I have but it isn't working because it returns an int without 0s at the front. So if my string is 0078818095, it give me back: 78818095. I need the 0s at the front though.

Code:
int intisbn(char *chisbn)
{
	int integerisbn;
	
	integerisbn = atoi(chisbn);

	return integerisbn;
}
 

maeh2k

Member
So I'm trying to make a function for my program that converts a char array of numbers (i.e. '0', '0', '1', '2', '5') into an int array. This is what I have but it isn't working because it returns an int without 0s at the front. So if my string is 0078818095, it give me back: 78818095. I need the 0s at the front though.

Code:
int intisbn(char *chisbn)
{
	int integerisbn;
	
	integerisbn = atoi(chisbn);

	return integerisbn;
}

Maybe explain it a bit more precisely. What exactly do you want? This function doesn't give you an int array, but just an int. So you don't get [0, 0, 7, 8, 8, 1, 8, 0, 9, 5], but 78818095. And of course with an int you can't tell the number of leading zeros.
Also, technically your parameter isn't a char array, but a C-string. So you don't enter ['0', '0', '7', '8', '8', '1', '8', '0', '9', '5'], but more like "0078818095\0". (i.e. if my memory serves correctly; it's been a while since I've done C)

Since atoi won't give you leading zeros, you can just convert the data manually for every char in the array:

char charDigit = array;
int digit = charDigit - '0'; // in ASCII: (int) '3' = (int) '0' + 3;
 
So I'm trying to make a function for my program that converts a char array of numbers (i.e. '0', '0', '1', '2', '5') into an int array. This is what I have but it isn't working because it returns an int without 0s at the front. So if my string is 0078818095, it give me back: 78818095. I need the 0s at the front though.

Code:
int intisbn(char *chisbn)
{
	int integerisbn;
	
	integerisbn = atoi(chisbn);

	return integerisbn;
}

Well, it gives you back the integer representation of the number that's stored in the character array, so in that sense it's doing exactly what it's supposed to. An integer doesn't have leading zeroes unless you print them manually. That means, if you want to convert your string to an integer but also print it with leading zeroes, your best approach would probably be to convert the number to an integer but also keep the character array around so you can use it to print the number with leading zeroes.
 

maeh2k

Member
I've recently finished my CS degree, but I don't have a lot of actual programming experience. So before I go out looking for a job, I decided to first work a bit on my programming skills. I'm currently doing an internship for a couple of months and I've been reading a couple of programming books.
Currently I'm reading Clean Code, which is all about writing simple and understandable programs. It's a pretty good book, but it doesn't replace actual practice.

While looking at possible jobs I came across a company that has a little programming challenge for their applicants (cf challenge in German). There's this small, compact, and hard to read function, and the task is, to understand the function and to improve upon it.

Code:
void m(int[] a, int[] b, int[] c, int p, int q) {
    if (p + 1 < q) {
       m(a, c, b, p, (p + q) / 2);
       m(a, c, b, (p + q) / 2, q);
       for (int i = p, j = p, k = (p + q) / 2; i < q; i++) {
           b[i] = (k >= q || j < (p + q) / 2 && c[j] <= c[k]) ? 
                   c[j++] : c[k++];
       }
    } else {
        b[p] = a[p];
    }
}

What does the function do? SPOILER ALERT:
It's merge sort, if you don't feel like deciphering it yourself

How can you improve on it?


I've been working on it for a bit, and I think it would be interesting to see and maybe discuss different solutions. Does anyone want to give it a shot?

I'll post my solution when I'm finished. I'm struggling a bit with cleaning it up without radically changing the function.
SPOILER ALERT:
The function tries to implement the algorithm efficiently, by working only within on the three arrays passed in as parameters. The cleanest solution would only take one array and output another as a return value. But then you'd get a lot of overhead for memory allocation.On the other hand, if you keep the arrays it's automatically a lot less clean since you have to lug the arrays and index variable around everywhere.




P.S: This is not a 'do-my-homework' kind of question. Going by their job description, I don't think I'm a good fit for the company, anyway. They require 'excellent programming skills', as well as very good knowledge of software engineering, data bases, algorithms, data structures, operating systems, and compiler design.
My programming skills are certainly not 'excellent', and my knowledge of software engineering, operating systems, and compiler design is severely limited.

Edit: So far I haven't made it any simpler; only longer. ^^ At the moment I'd take the original function with some renaming over my WIP.
 

diaspora

Member
Maybe explain it a bit more precisely. What exactly do you want?

An ISBN number which the user input as a string to be converted into an integer array.

Since atoi won't give you leading zeros, you can just convert the data manually for every char in the array:

char charDigit = array;
int digit = charDigit - '0'; // in ASCII: (int) '3' = (int) '0' + 3;


Code:
for(x = 0; x < 13; x++)
{
     charDigit = array[x];
     digit = charDigit - '0';
}

Or would this not work?
 
Is it possible to check if the users input is sort of what I want? Like, I want to user to enter "hello" but the user is also allowed to enter "hello!" (with an exclamation mark) and get the same output. Is it possible to have it so that the users input is sort of like what I'm asking for? I'm going to assume not but it would be amazing. I'm using C#.
 

usea

Member
Is it possible to check if the users input is sort of what I want? Like, I want to user to enter "hello" but the user is also allowed to enter "hello!" (with an exclamation mark) and get the same output. Is it possible to have it so that the users input is sort of like what I'm asking for? I'm going to assume not but it would be amazing. I'm using C#.
Yes, but you need to define what "sort of" means. Your program is basically an explanation by you, to the computer, how you want it to act. The computer doesn't know what "sort of" means unless you define it explicitly.

Do you want to only allow "hello" and "hello!", or also some other combinations? Is "hello123456789YELLOW" acceptable? What about "!hello"? What about "helo"?

For example if you went to Wendy's and said you want "a hamburger with no pickles or anything like that." The cashier would have no idea what you mean. Is lettuce "like a pickle"? What about ketchup? You have to be specific.
 

diaspora

Member
I'm getting "left operand must be modifiable l-value" on two lines of code.

Code:
/* numericisbn is an int array, and intisbn(moddedisbn) is a function that returns an int array. */
[B]numericisbn[/B] = intisbn(moddedisbn);

as well as

Code:
for(x = [B]0[/B] && y = 10; x <= 10; x++ && y--);

With the bolded being the error.
 
I'm getting "left operand must be modifiable l-value" on two lines of code.

Code:
/* numericisbn is an int array, and intisbn(moddedisbn) is a function that returns an int array. */
[B]numericisbn[/B] = intisbn(moddedisbn);

as well as

Code:
for(x = [B]0[/B] && y = 10; x <= 10; x++ && y--);

With the bolded being the error.
The error might be a little confusing but it's because you're using the && operator on assignments and increment/decrement statements. The && or || operators are only used to yield boolean values, like in true && true or false || false (or any variables you can think of). Think of them like the addition or subtraction operators.
The way it should look is this:
Code:
int x, y;
for(x = 0, y = 10;  x <= 10; x++, y++)
Don't do a semicolon after your for loop or it won't do what you think it should do. (it would loop but not execute the loop's body, I think. Unfortunately it will also compile) Also, you're looping 11 times here. x goes from 0 to 10 inclusive. You probably want to replace the <= with a < sign.
 

Water

Member
I've been working on it for a bit, and I think it would be interesting to see and maybe discuss different solutions. Does anyone want to give it a shot?
My initial take is that I wouldn't change the code until I knew more.
The interface of the function is awkward for most uses, but might be right for some very specific uses where you already have the temporary memory reserved. For more general use, there should be a convenience wrapper that handles memory.
Presumably some kind of optimization and fine control is required since one wouldn't write their own sort implementation otherwise. Upon learning what the actual requirements and data are, it's probably time to hit Knuth and others for good specialized implementations. I sure don't have advanced mergesorts memorized. Some usual improvements would include switching to insertion sort at a low enough N, and using concurrency. I'm a bit wary of the way the existing code fetches the original values at the bottom of the recursion, but am not sure if it's an actual problem. Moving the copy outside the recursion would at least save one recursion argument and clean up memory accesses a bit, but as with most optimizations, profiling would be necessary to see whether it actually matters and how much.
 
Yes, but you need to define what "sort of" means. Your program is basically an explanation by you, to the computer, how you want it to act. The computer doesn't know what "sort of" means unless you define it explicitly.

Do you want to only allow "hello" and "hello!", or also some other combinations? Is "hello123456789YELLOW" acceptable? What about "!hello"? What about "helo"?

For example if you went to Wendy's and said you want "a hamburger with no pickles or anything like that." The cashier would have no idea what you mean. Is lettuce "like a pickle"? What about ketchup? You have to be specific.

What I mean with "sort of" is when someone adds punctuation to the end of the word or misspells it (like "helo"). How would you do that? With splits and for-loops of characters? It must require loads of code and even then it's not bullet-proof.
 

phoenixyz

Member
What I mean with "sort of" is when someone adds punctuation to the end of the word or misspells it (like "helo"). How would you do that? With splits and for-loops of characters? It must require loads of code and even then it's not bullet-proof.
That's because the concept of "sort of" is not known to a computer. To infer information and deduct what passes "sort of like hello" can be done by humans but not by a dumb machine.
 
That's because the concept of "sort of" is not known to a computer. To infer information and deduct what passes "sort of like hello" can be done by humans but not by a dumb machine.

Haha, yeah I know that, thanks. In SQL you can do a like-command, which is nice. Not perfect, but works.
 

iapetus

Scary Euro Man
Is it possible to check if the users input is sort of what I want? Like, I want to user to enter "hello" but the user is also allowed to enter "hello!" (with an exclamation mark) and get the same output. Is it possible to have it so that the users input is sort of like what I'm asking for? I'm going to assume not but it would be amazing. I'm using C#.

Of course it's possible. There are plenty of ways to do this sort of thing with various levels of accuracy - one simple approach would be to strip all non-alpha characters and use Soundex to compare the values, for example. Obviously, the more permissive you are with input, the more likely you are to accept false positives, though.
 

iapetus

Scary Euro Man
Yes, but that does not run directly on the machine. It's interpreted and somebody programmed the database to be able to handle a command like that.

Not sure what he's referring to exactly; LIKE does pattern matching on a string and wouldn't be useful for any more than the simplest cases (ignoring content after the 'correct' match). Some databases support SOUNDS-LIKE (or similar) keywords, and they use the same algorithm I pointed out above. Which is trivial to implement.
 
Yesterday I wrote a C# solution to the N-Queens puzzle after learning about it here. It took me several hours (I didn't look at the solution, but coffeescript is confusing anyway). I did it almost entirely with LINQ because functional programming yay.

Here's my solution, with an included print method. It solves n=8 in milliseconds, and n=13 in ~1.6 seconds. The code could be shorter, but I tried to break up stuff into functions for readability. It was a lot of fun to write.

Inspired by this, I decided to revisit C# and re-do my L-System interpreter/renderer in a more clean and functional style. The result is here. I've put a lot of emphasis on readability and using immutable classes and collections whenever possible. (the one exception being the StepOne function which uses a StringBuilder because string concatenation is really, really slow otherwise) Immutable collections are really something I've come to appreciate in the last year or so.
 

Tristam

Member
usea and hateradio: thank you for your helpful responses!

What I mean with "sort of" is when someone adds punctuation to the end of the word or misspells it (like "helo"). How would you do that? With splits and for-loops of characters? It must require loads of code and even then it's not bullet-proof.

Depending on what range of acceptable input is covered by "sort of," you may only need a single if-statement with a regular expression validator. Some languages, like Perl and PHP, have built-in support for regular expressions. Others you'll need to import a module/library. If you are unfamiliar with regular expressions, check your preferred language's documentation on them--they are very easy to understand conceptually (it's just input validation) but can be just as tricky to implement in practice.
 

iapetus

Scary Euro Man
Depending on what range of acceptable input is covered by "sort of," you may only need a single if-statement with a regular expression validator. Some languages, like Perl and PHP, have built-in support for regular expressions. Others you'll need to import a module/library. If you are unfamiliar with regular expressions, check your preferred language's documentation on them--they are very easy to understand conceptually (it's just input validation) but can be just as tricky to implement in practice.

regular_expressions.png


Wait, forgot to escape a space. Wheeeeee[taptaptap]eeeeee.

Constructing a regular expression for typos/misspellings might be a bit fraught, though.
 
Depending on what range of acceptable input is covered by "sort of," you may only need a single if-statement with a regular expression validator. Some languages, like Perl and PHP, have built-in support for regular expressions. Others you'll need to import a module/library. If you are unfamiliar with regular expressions, check your preferred language's documentation on them--they are very easy to understand conceptually (it's just input validation) but can be just as tricky to implement in practice.

Oh yeah, that's good. I'll check it out.

No worries for incorrect inputs or whatever, it's just an experimental bot that I'm doing.
 

usea

Member
What I mean with "sort of" is when someone adds punctuation to the end of the word or misspells it (like "helo"). How would you do that? With splits and for-loops of characters? It must require loads of code and even then it's not bullet-proof.
Here's another option. There's a concept of "edit distance" in strings, which is a number that represents how many characters you have to change to get from one string to another. Like to go from "Hello" to "Helo" the edit distance is 1, because you only have to remove an L. You could implement this (or find a library), and allow any string with an edit distance of 1 from your expected input.

Here are some results for "string edit distance C#" in google which I didn't actually read (sorry).
http://www.dotnetperls.com/levenshtein
http://rosettacode.org/wiki/Levenshtein_distance#C.23
http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#C.23

Note that Levenshtein distance is a particular type of edit distance.
http://en.wikipedia.org/wiki/Levenshtein_distance
http://en.wikipedia.org/wiki/Edit_distance
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
I'd say a combination of Soundex, Metaphone, Levenshtein-Distance and Damerau–Levenshtein Distance would cover most bases for fuzzy logic string matching, but implementing them all would probably be a herculean effort for someone just introduced to the concept, better to find a Fuzzy Logic library for the particular language/environment you are developing on and learn how to use that.
 
Here's another option. There's a concept of "edit distance" in strings, which is a number that represents how many characters you have to change to get from one string to another. Like to go from "Hello" to "Helo" the edit distance is 1, because you only have to remove an L. You could implement this (or find a library), and allow any string with an edit distance of 1 from your expected input.

Here are some results for "string edit distance C#" in google which I didn't actually read (sorry).
http://www.dotnetperls.com/levenshtein
http://rosettacode.org/wiki/Levenshtein_distance#C.23
http://en.wikibooks.org/wiki/Algorithm_Implementation/Strings/Levenshtein_distance#C.23

Note that Levenshtein distance is a particular type of edit distance.
http://en.wikipedia.org/wiki/Levenshtein_distance
http://en.wikipedia.org/wiki/Edit_distance

Thanks, will definitely look into this.
 
Just started up my classes for the semester and went through the first unit of my Discrete Mathematics online class. I'm already struggling to grasp these concepts, and it's the very first unit. Not setting a good precedent for my programming classes.
 

Chuckl3s

Member
I hope GAF can help cause I'm losted.

In my DTSpackage, I have this to create a table...

Code:
CREATE TABLE [fwAIR].[dbo].[tblPRODUCTIVITY] (
    [CMS_Login] varchar (5) NOT NULL, 
    [DeptIndex] tinyint NOT NULL, 
    [CMS_Date] datetime NOT NULL, 
    [AssociateNumber] int NULL, 
    [TotalCalls] smallint NULL, 
    [StaffTime] int NULL, 
    [ACDTime] int NULL, 
    [ACWTime] int NULL, 
    [PureAuxTime] int NULL, 
    [AuxInTime] int NULL, 
    [AuxOutTime] int NULL, 
    [HoldTime] int NULL, 
    [RingTime] int NULL, 
    [AvailableTime] int NULL, 
    [CallTime] int NULL, 
    [TotalNPTMinutes] smallint NULL, 
    [Active] char (1) NULL, 
    [iOther] int NULL, 
    [RcdCreateUser] varchar (15) NULL, 
    [RcdUpdtUser] varchar (15) NULL, 
    [RcdCreateDateTime] datetime NULL, 
    [RcdUpdtDateTime] datetime NULL,
    sdtImportDate smalldatetime NOT NULL DEFAULT GETDATE(),
    CONSTRAINT idxPRODUCTIVITY_PK PRIMARY KEY NONCLUSTERED (DeptIndex, CMS_Login, CMS_Date)
);

CREATE NONCLUSTERED INDEX idxPRODUCTIVITY
ON tblPRODUCTIVITY (AssociateNumber, CMS_Date);

CREATE CLUSTERED INDEX idxPRODUCTIVITY_DeptIndex_Date
ON tblPRODUCTIVITY (DeptIndex, CMS_Date);

When I import a text file in to this table, I get the following error.

Error Source: Microsoft OLE DB Provider for SQL Server

Error Description: The take reported failure on execution
The Statement has been terminated.
Violation of PRIMARY KEY constraint "idxProductivity_PK". Cannot insert duplicates key in object 'tblProductivity'.

I read online I can add to the create table portion

Code:
ALTER INDEX idxPRODUCTIVITY_PK on fwAIR.dbo.tblPRODUCTIVITY
SET (IGNORE_DUP_KEY = ON);

But was told it wouldn't work and it would still error out. I was told I can also "create mimic IX and added that option". Which should work?

I'm kinda lost from this point on getting rid of that error and having it continue on with the import.
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
Why are you trying to create a DB with a primary key on fields you know contains duplicates?
 
I'm kinda lost from this point on getting rid of that error and having it continue on with the import.

Your primary key should be your unique identifier of the record, and it sounds like your combination of fields is not producing uniqueness. You'll need to find an additional field (or a replacement) that makes your record unique. If you can't, you should create a regular index on that combination (I'm assuming that combo is important, perhaps a source for querying, and an index would be beneficial) and perhaps just use an identity field as the key.

Alternately, are you trying to reimport that same data multiple times? Perhaps as a test? If so, you should kill the (test) data you might already have. Reimporting the same data will, of course, violate the key on uniqueness.
 

Chuckl3s

Member
Why are you trying to create a DB with a primary key on fields you know contains duplicates?

This text file has never in the past sent me duplicates, but once in a bluemoon it does. I just want to ignore those dups and have the import continue on.

Your primary key should be your unique identifier of the record, and it sounds like your combination of fields is not producing uniqueness. You'll need to find an additional field (or a replacement) that makes your record unique. If you can't, you should create a regular index on that combination (I'm assuming that combo is important, perhaps a source for querying, and an index would be beneficial) and perhaps just use an identity field as the key.

Alternately, are you trying to reimport that same data multiple times? Perhaps as a test? If so, you should kill the (test) data you might already have. Reimporting the same data will, of course, violate the key on uniqueness.

This makes sense and I will mess with it. Your second paragraph got me scared cause I totally thought about that as well. I could be retarded.
 
Are there any IDE's for Ubuntu that support Javascript and CSS? Do you even use an IDE for these languages?

I recommend using a text editor that supports linting and syntax highlighting and then just use browser tools for debugging. (Chrome Developer Tools or Firebug for Firefox.)

Sublime Text is always a great choice. There are plenty of good linting and other plugins for it that make JavaScript development in it really nice.
 

Onemic

Member
I recommend using a text editor that supports linting and syntax highlighting and then just use browser tools for debugging. (Chrome Developer Tools or Firebug for Firefox.)

Sublime Text is always a great choice. There are plenty of good linting and other plugins for it that make JavaScript development in it really nice.

How about scratch pad on firefox?
 

xero273

Member
Hi,

I am running into a fileurl problem. When I am building the fileurl link, the file contains a # sign. For example, file name is my_file_#_here. The fileurl gets up to my_file_ because the # is a delimiter, it is breaking my url. Is there any way to escape this character in javascript? I can't rename the file since the file name is pulled from a database and I would like to avoid this.

Thanks.
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
Hi,

I am running into a fileurl problem. When I am building the fileurl link, the file contains a # sign. For example, file name is my_file_#_here. The fileurl gets up to my_file_ because the # is a delimiter, it is breaking my url. Is there any way to escape this character in javascript? I can't rename the file since the file name is pulled from a database and I would like to avoid this.

Thanks.

Would encodeURIComponent() not work for this? (And decodeURIComponent() for the reverse)
The encodeURIComponent() function encodes a URI component.

This function encodes special characters. In addition, it encodes the following characters: , / ? : @ & = + $ #

Tip: Use the decodeURIComponent() function to decode an encoded URI component.

You can test the various escaping methods here.
 
I recommend using a text editor that supports linting and syntax highlighting and then just use browser tools for debugging. (Chrome Developer Tools or Firebug for Firefox.)

Sublime Text is always a great choice. There are plenty of good linting and other plugins for it that make JavaScript development in it really nice.

Sublime Text and Notepad++ are my preferred text editors for non compiled languages. I definitely recommend them.
 

usea

Member
Another vote for Notepad++, it's really great.

(And why for non compiled languages?)
(I'm also confused about the non-compiled comment)

I love Notepad++ and I use it every day. But mostly just for editing xml, json, etc. I don't really write code with it. Maybe javascript, but that's only because I'm not a javascript developer. It's not bad, but I wouldn't use it professionally or anything. I use Visual Studio or LINQPad 99% of the time. My other coding is done in linux, where I use Geany or trial Sublime, which are admittedly sub-optimal experiences.

I like Sublime, but it's way, way too expensive, and I have no confidence in the developer. JetBrains's IDEs like WebStorm and PyCharm are absolutely fantastic. Well worth the money if you're doing any actual work with them. If I had to write javascript for work often, I'd buy WebStorm for sure (or just use visual studio)
 
i'm assuming the non-compiled comment is because Notepad++ doesn't have compilers built in; so it's nice to quickly edit files and throw them up somewhere. Probably prefers IDEs that can auto-compile for languages that need it, I think.
 

phoenixyz

Member
Just started up my classes for the semester and went through the first unit of my Discrete Mathematics online class. I'm already struggling to grasp these concepts, and it's the very first unit. Not setting a good precedent for my programming classes.
I had my Discrete Mathematics class in my first semester at university. That was really rough because the Professor was a no-nonsense mathematician and not a computer scientist. And that directly after the childstuff you do at school. But don't fret, you'll get used to it and it also doesn't actually say much about how you'll fare in the programming classes.
 

Osiris

I permanently banned my 6 year old daughter from using the PS4 for mistakenly sending grief reports as it's too hard to watch or talk to her
IntelliJ Ultimate Edition does, if you're willing to pay. :)

<3

Well worth the money, may Eclipse never (dis)grace my PC ever again :D

Edit: To add to that, oh Darcula theme how I love you, may my eyes never bleed from hours of coding ever again :p
 
Top Bottom