LinuxQuestions.org
Latest LQ Deal: Complete CCNA, CCNP & Red Hat Certification Training Bundle
Go Back   LinuxQuestions.org > Forums > Non-*NIX Forums > Programming
User Name
Password
Programming This forum is for all programming questions.
The question does not have to be directly related to Linux and any language is fair game.

Notices


Reply
  Search this Thread
Old 06-09-2017, 02:53 AM   #1
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Rep: Reputation: 20
Best Language / IDE / Database to Learn from Scratch


I've been using C#.NET and SQL Server since about 2003 in a Windows environment.

If I'm starting from scratch in Linux (Manjaro) what would be the best:
1. Language
a. Cross-Platform (Linux and Windows - not so worried about OS X)
b. Mostly Forms (Not just for running jobs)
2. IDE to code in that language
3. Database that's most compatible with that language (preferably with some horse power)
4. Easy deployment for users (preferably fat-client)
4. Easy installation for development

I'm not concerned with my personal history of development but more so of what's the best going starting over.

Research on the internet has mainly pointed to Java-NetBeans-MySQL but I'm reluctant to delve in and find it's not what I'm looking for given the above parameters. Java application deployment concerns me some because I'm not to sure businesses will go for installing and keeping Java up-to-date (I could be wrong about the deployment of Java applications). With C# you can either add a dll to the global assembly cache (not the preferred method) or install it from an installer with the application or web-deployment with either IE or Edge (preferred method). I 'think' in Java it's necessary to install some core libraries for the user to be able to use a program written in Java and this can sometimes be a "put-off" to businesses. (Again, not sure about this)

Installation of all the modules necessary is also something I'm not terribly familiar with on Linux. What's the best method for installation using yaourt or pacman where you can install the fewest libraries in the respository that will automatically grab the necessary dependencies.

I do apologize for the compounded question! I think if I broke this into several different questions the fundamentality would be lost and resulting answers might be less considerable.
 
Old 06-09-2017, 07:11 AM   #2
wpeckham
Senior Member
 
Registered: Apr 2010
Location: Continental USA
Distribution: Debian, Ubuntu, Fedora, RedHat, DSL, Puppy, CentOS, Knoppix, Mint-DE, Sparky, Vsido, tinycore, Q4OS
Posts: 2,199

Rep: Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885
You are looking for a mythical beast: it does not exist.

Any language you select will require updates. Best to pick one readily available with some OS independence, but which is optimal will depend upon what you want to do with it. I have seen project for which lisp is perfect, but those are rare. The best languages for OS independence are not optimal for some kinds of projects.

If you select JAVA, use the Open Source implementations rather than the Oracle one to prevent having to update it often as well as the license restrictions. The most compatible are the ones that are, like JAVA, interpreted by an OS specific runtime (PERL and Python are examples) but with these you must install that runtime or the entire language on every target machine. While it is possible to create C/C++ programs that compile to stand-alone executable and run without external library requirements, it is rare to find such a project. There are likely to be some be some external requirements that must be installed with or prior to the project executable: these add flexibility and reduce the size in most cases.

Focus should be on the objective. Use the language most appropriate for the goal that has the features you require. Any of them will be something of a compromise, but many of them are very good.

No IDE is perfect, but must be a fair match the language. These days most good IDE can be adapted to a wide range of languages. If your development environment is varied, you may also value an IDE that is cross-platform or cloud based. These days team development implies some level of GIT compatibility as well, but you can fake that easily if required. (Manual git refresh and commit is not difficult.)

No SQL database is efficient. Do you need a stand-alone database engine? Do you NEED SQL? IF a non-SQL engine will do, is there advantage at it being internal? PERL has a couple of kinds of native database definitions that do not require an external engine, and also has connectors for most open-source database engines. There are also connectors for some major proprietary engines. If there is not native tool, ODBC will serve (slowly and badly, but it works).

If you need an external engine, perhaps select a language that has no internal support for a native database, you have a huge range to pick from.

In all of the cases above, you are going to have to nail down some goals, review the options, and come up with a few "best or most likely" options for language, IDE, and Database: then figure out which COMBINATION closets matches your needs.

If education is your primary goal, decide on the objective of the education. C/C++ is the most broadly used for OS development, but is not naturally safe or portable (it takes manual effort - a lot- to make it seem so). Java is just a mess, smalltalk makes more sense but is not in high demand and never will be. RUST forces correctness and is powerful, but lacks some features and makes some kinds of projects difficult. Pascal was built for teaching and learning and is powerful, but Pascal skills are not marketable and making Pascal code cross platform it "interesting" at best.

Anything you choose will be a compromise. Consider carefully.
Sorry if I rambled a bit. I had a cat "helping"!
 
1 members found this post helpful.
Old 06-09-2017, 02:24 PM   #3
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
The Elusive Mythical Beast

Hi wpeckham, thank you for the reply. You are so right! I guess I was looking for the mythical beast. LOL! I haven't kept up-to-date on any languages that have came out or the advances of any of the existing languages (other than C#) since about 2003. I thought(hoped) that a great combination might strolled along within the last 14 years. I've just stuck with something that worked okay. I think the cross-platform is probably the biggest kicker. I really enjoy Linux but it's unfortunate that most of the businesses aren't using it for end-user desktops yet. Many would probably disagree with me but I'm not interest in using a remote desktop server. That technology may have improved but I probably don't want to haggle with it.

So, let's stick with Linux. In that case Java would probably be the best or at least the most common and supported high-level language. I learned OS390 assembler many years ago. I realize that languages like Python are much better than it but I prefer high-level languages.

Since the new animal doesn't exist yet I'd like to stick with SQL. I've been using SQL for at least 25 years (MS Access, DB2, Oracle(from a repository only stand point - maily Quest's Toad), and a whole lot of SQL Server). SQL Server is probably the only thing M$ did really well (that's just my opinion). For that reason I would like to stick with it. If I ever do publish something that needs connectivity, SQL will still be available. I won't be using a database for a while. Just the differences in the languages first. I want to be sure a database is available when/if I get to that point.

The main thing for all three (language-IDE-databse) is $expense$!!!!!!!!! I do not want to spend any money if I can help it. I've bought so many M$ products over the years it just makes me physically ill when I know I'm going to have to chunk out a lot of change just for an upgrade. The upgrade for this calls for the upgrade of that which requires the subscription fee for this, the hardware upgrade for that, etc...

I installed NetBeans (yoaurt -S netbeans). It looks fantastic!

I've attached a couple of screenshots of something I wrote a few years ago. I would like to write stuff like that in a MVVM kind of way but of course not WPF.


Do you think that { Java-NetBeans-Oracle } is a pretty good combination for Linux only? I want to just play around and learn something useful for the Linux platform (not publish anything) for a while.

When I look in Octopi there are many libraries with the "java" keyword. Do you know which ones are necessary for basic stuff (that is if you think Java is the best way to go).

Last edited by scottm7; 06-10-2017 at 01:53 AM.
 
Old 06-09-2017, 06:27 PM   #4
wpeckham
Senior Member
 
Registered: Apr 2010
Location: Continental USA
Distribution: Debian, Ubuntu, Fedora, RedHat, DSL, Puppy, CentOS, Knoppix, Mint-DE, Sparky, Vsido, tinycore, Q4OS
Posts: 2,199

Rep: Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885Reputation: 885
I fear I cannot help you with Java. I looked at Java when 1.1 was the standard and decided that was not the way I wanted to go. If the Open Source java is in your OS repos (as it is with everything RHEL derived and Debian derived (including Ubuntu) it has a huge license advantage (oracle cannot come at you for $$$).

By the way, Python and recent PERL are high level languages. Python has an advantage that it runs on everything, including the Raspberry PI devices. (I have hear rumor that it runs on some cell phones, but cannot vouch for that.)

For an SQL database that is available for many platforms it is hard to avoid MariaDB! This is what MySQL is when Oracle has no hand in it. Postresql is good, but slower. MariaDB for performance advantage and it runs nicely on Windows, Linux, AIX, HP-UX, and more.

The problem with Java-Netbeans-Oracle is that Oracle can come to you for money for at least Java and Oracle DB. If you want to avoid expense, that is not the path you want to take.

For a java targeted IDE consider https://blog.idrsolutions.com/2015/0...t-programming/ or perhaps https://www.quora.com/What-are-the-b...va-programmers for some light reading.
 
1 members found this post helpful.
Old 06-09-2017, 07:40 PM   #5
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
Thanks wpeckham. I looked at some python code and it's not what I thought it was - it is high level. I installed PyCharm Community Edition and it's really nice. I know the professional edition is expensive.

I appreciate your help with this! This should keep me going for awhile.
 
Old 06-14-2017, 09:26 AM   #6
Ramurd
Member
 
Registered: Mar 2009
Location: Rotterdam, the Netherlands
Distribution: Slackwarelinux
Posts: 677

Rep: Reputation: 105Reputation: 105
Quote:
Postresql is good, but slower.
I have to disagree with that one; It used to be so, but only due to myISAM with no integrity checks whatsoever.
We have found, and seen, PostgreSQL perform about 10 times faster than the same database on mysql used with the same application, with roughly the same load.

IIRC MS SQL is derived from Sybase; No idea what MySQL is derived from; PostgreSQL shares the same ancestor as Oracle (Ingres) and shares many things with it's expensive sibling.

Please note that the 'S' in SQL stands for 'Structured', not for 'Standard'. So, switching database platforms will require learning how your database of choice wants the queries.

Anyway; I think your choice for Java is a good one; It's used in many situations (not only for cross-platformness), has JDBC for database connectivity and a huge library of what-you-want. Besides, the language is so widely used, that if you get stuck somewhere, there's bound to be someone who can help you, on many forums.

Myself, I smelled at Java about at version 1.1 and found it not to my liking. Java, back then, was ...S....l...o....w. Much changed at version 5; The current version(s) are very usable for time and performance critical applications.
 
1 members found this post helpful.
Old 06-14-2017, 09:34 AM   #7
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
Hi Ramurd,

Thanks for the reply. I started playing around with Java yesterday. I like it better than Python because I'm very use to C#. It's extremely similar. The NetBeans IDE is very easy to install and use. I tried many times with monodevelop-stable for C# without luck. I can install mono and open mono but when I create a solution or open a solution it crashes. NetBeans seems to be really stable. Mono might be an issue with my disto (Manjaro-Cinnamon). While that might be the case (I'm sort of doubtful) There is no way I would switch to a different Distro!

Last edited by scottm7; 06-14-2017 at 09:35 AM. Reason: correction
 
Old 06-14-2017, 02:15 PM   #8
dugan
LQ Guru
 
Registered: Nov 2003
Location: Canada
Distribution: Slackware
Posts: 7,401

Rep: Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768Reputation: 2768
Am I correct that your domain is Intranet-deployed business applications?

Am I correct that your goal is to develop a new product to sell?

Those tend to have a client-server architecture, with the clients typically being web-based. Web-based clients don't really have a deployment process, and the server can be deployed in a Docker container.

Last edited by dugan; 06-14-2017 at 02:55 PM.
 
1 members found this post helpful.
Old 06-14-2017, 09:41 PM   #9
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
Quote:
Am I correct that your domain is Intranet-deployed business applications?
If I do end up writing applications on a Linux based desktop for business this might be the case but it is doubtful. I would most likely deploy them via internet. My company(which is basically just me), multiple businesses come to me for a variety of different needs. Other than websites(interactive with a backend database or static) applications are written in C# with Visual Studio, have an SQL Server backend and are deployed with IE/Edge (online) or a small executable creates a desktop shortcut to IE/Edge (32/64) to run the online without the user going to a website and deploying. It actually still deploys the application from a website but this isn't noticable for the user. I could compile them into an msi or deploy them with something else, but this is the way I do it for now.

Quote:
Am I correct that your goal is to develop a new product to sell?
Possibly in the future. I would need to 1earn the language first -> then a good database -> then deployment. That's why I was asking about a good structure that may have been developed in the past 14 years in case I didn't hear/read about it or something that may have only been available to Linux (as I am new to Linux). I don't just want to be familar with everything but have in depth knowledge before I either convert what I written already(probably not possible because so much of it has DevExpress Winforms) and/or write new software that businesses require.

A solid starting point is important. I wouldn't want to be steered in a direction to a dead or almost dead language, get use to an IDE and it become really expensive, etc...


About MonoDevelop,

I created a VM that's as close to my configuration as possible. I got it up to date and compressed it. When I installed mono, it crashes when I open mono (Fatal Error...would you like to send report). When I uncompress the backup VM and try with monodevelop-stable, it doesn't install. It goes through a very length (3 to 5 minutes) and states 20 errors, would you like to attempt installation again or something similar to that verbiage. With future attempts, the same results of the installation happen. I'm not familiar enough with Linux to determine a fix. I like NetBeans because it appears to be more stable. I can install and start using it in less than a couple of minutes.

I tried a C# plugin with NetBeans. It's not finished yet and I had some problems with it. Java seems to make sense because it's so easy to just start going at it.

Last edited by scottm7; 06-14-2017 at 09:52 PM. Reason: About MonoDevelop
 
Old 06-15-2017, 03:27 AM   #10
Michael Uplawski
Member
 
Registered: Dec 2015
Distribution: Debian stretch/sid
Posts: 446
Blog Entries: 9

Rep: Reputation: 278Reputation: 278Reputation: 278
Quote:
Originally Posted by scottm7 View Post
deploy them via internet.
With what you describe and your C# background, you should stick with Java for a while. There is much to explore in that universe, before you look for alternatives. This is payed work that you talk about. So make it expensive, the drawbacks of Java justify any price and the folks who pay for Web-based business-applications (because they have read about them somewhere) are ready to accept all the claims (because others do, too).

"Learn from Scratch" as you write in the title of your initial post, is something different and I cannot get this expression in the context of the current thread.

Once you are done with Java or once that Java and the diverse Web-containers and applicat_ion servers have done you, take some holidays with Ruby-anything.., on Rails, Sinatra or whatever is hip nowadays. Also check out Watir, a Webdriver-implementation in Ruby (similar to Selenium for others).

Make "payed work" "played work".

Last edited by Michael Uplawski; 06-23-2017 at 08:54 AM. Reason: Kraut2English and more
 
1 members found this post helpful.
Old 06-15-2017, 06:12 AM   #11
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
Hi Michael,

Thanks for your reply.

Originally I was looking to start from scratch. The first reply to the post that nothing new came along that was exactly what I was looking for (mythical beast) - so I figured I would stick closer to what I already knew.

I really can't afford to spend money on something that I'm not putting in production yet. It looks to me like it cost $0.00 to learn Java with NetBeans all day long. As far as I can see if I ever do publish anything for clients with Java, the expense is not NEARLY as bad as it is with M$.
 
Old 06-15-2017, 04:21 PM   #12
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
First Java Program :)

Thanks everyone for your help! Output of first Java program attached 4

Couldn't really get the escape characters to literals - but it's not like something like this would be usual.

Code:
public class clsLeet {

    public void convert() {
        output = "";

        for (char c : input.toUpperCase().toCharArray()) {
            String cs = c + "";
            if (!upperalpha.contains(cs)) {
                output += cs;
            } else {
                output += leetchar(c);
            }
        }
    }

    private String leetchar(char c) {
        for (int mc = 0; mc < upperalpha.length(); mc++) {
            if (c == upperalpha.charAt(mc)) {
                String[] possibilities;
                //possibilities = (alphatable[mc].substring(1, alphatable[mc].length() - 1)).split("--");
                possibilities = alphatable[mc].split("--");

                Random rnd = new Random();
                int choice = rnd.nextInt(possibilities.length);

                return possibilities[choice];
            }
        }

        return "?";
    }

    public String input;
    public String output;

    private final String upperalpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    private final String[] alphatable = new String[]{
        "A--a--1",
        "B--b--2",
        "C--c--3",
        "D--d--4",
        "E--e--5",
        "F--f--6",
        "G--g--7",
        "H--h--8",
        "I--a--9",
        "J--j--10",
        "K--k--11",
        "L--l--12",
        "M--m--13",
        "N--n--14",
        "O--o--15",
        "P--p--16",
        "Q--q--17",
        "R--r--18",
        "S--s--19",
        "T--t--20",
        "U--u--21",
        "V--v--22",
        "W--w--23",
        "X--x--24",
        "Y--y--25",
        "Z--z--26",};

//    private String toLiteral(String str) {
//        return StringEscapeUtils.unescapeJava(str);
    //}
    //private final String[] alphatable = new String[] {
    //toLiteral("A4--/-\\--@--^--/\\--//-\\\\--/=\\"),
    //toLiteral("B8--]3--]8--|3--|8--]]3--13"),
    //toLiteral("C(--{--[[--<"),
    //toLiteral("D)--[}--|)--|}--|>--[>--]])"),
    //toLiteral("E3--ii"),
    //toLiteral("F|=--(=--]]=--ph"),
    //toLiteral("G6--9--(_>--[[6--&--(--"),
    //toLiteral("H#--|-|--(-)--)-(--}{--}-{--{-}--/-/--\\-\\--|~|--[]-[]--]]-[[--k"),
    //toLiteral("I1--!--|--][--[]"),
    //toLiteral("J_|--u|--;_[]--;_[["),
    //toLiteral("K|<--|{--][<--]]<--[]<"),
    //toLiteral("L|--1--|_--[]_--][_"),
    //toLiteral("M/\\/\\--|\\/|--[\\/]--(\\/)--/V\\--[]V[]--\\\\\\--(T)--^^--.\\\\--//.--][\\\\//][--JVL"),
    //toLiteral("N/\\/--|\\|--(\\)--/|/--[\\]--{\\}--][\\][--[]\\[]--~"),
    //toLiteral("O0--()--[]--<>--*--[[]]"),
    //toLiteral("P|D--|*--|>--[]D--][D"),
    //toLiteral("Q(,)--0,--O,--O\\--[]\\"),
    //toLiteral("R|2--|?--|---]]2[]2][2"),
    //toLiteral("S5--$--a"),
    //toLiteral("T7--+--\']\'--7`--~|~---|---\'][\'(\"|\""),
    //toLiteral("U(_)--|_|--\\_\\--/_/--\\_/--[]_[]--]_["),
    //toLiteral("V\\/--\\\\//"),
    //toLiteral("W\\/\\/--|/\\|--[/\\]--(/\\)--VV--///--\\^/--\\\\/\\//--1/\\/--\\/1/--1/1/"),
    //toLiteral("X><--}{--)(--}["),
    //toLiteral("Y\'/--%--`/--\\j--``//--j--\\|/---/"),
    //toLiteral("Z2--z--7_--`/_")};
Attached Thumbnails
Click image for larger version

Name:	form.png
Views:	6
Size:	34.4 KB
ID:	25254  
 
Old 06-23-2017, 08:52 AM   #13
Michael Uplawski
Member
 
Registered: Dec 2015
Distribution: Debian stretch/sid
Posts: 446
Blog Entries: 9

Rep: Reputation: 278Reputation: 278Reputation: 278
Quote:
Originally Posted by scottm7 View Post
Hi Michael,

Thanks for your reply.
Thanks for your tolerance with my typos. I correct my own post above now. Should make it readable to others, too.
 
Old 06-23-2017, 08:56 AM   #14
scottm7
LQ Newbie
 
Registered: Apr 2017
Location: US
Distribution: Manjaro XFCE 4.9.31
Posts: 26

Original Poster
Rep: Reputation: 20
I don't even remember them. Must not have been too bad. I like the <Reason> you stated though - Reason = Kraut2English.
 
Old 06-23-2017, 09:02 AM   #15
Michael Uplawski
Member
 
Registered: Dec 2015
Distribution: Debian stretch/sid
Posts: 446
Blog Entries: 9

Rep: Reputation: 278Reputation: 278Reputation: 278
Quote:
Originally Posted by scottm7 View Post
It looks to me like it cost $0.00 to learn Java with NetBeans all day long. As far as I can see if I ever do publish anything for clients with Java, the expense is not NEARLY as bad as it is with M$.
My experience with Java is different, because I had learned to program with C, then did my first professional development with C++. I am sure that you can do the same with Java plus a ton of community-provided third party-libraries. But having to spend more time coping with the errors and constraints that are gratitiously provided by the same communities and crashing web-containers more than (you spend) with the actual programming tasks, makes you think.

Suddenly OJB does no longer provide a critical feature; suddenly the String-class is a collection and your programs just stop working. Oh, and the OutOfMemory Error in Tomcat (Restart your server three times a day and enjoy the same comfort as everybody else. "Shut up", BTW. and do what you are payed for).

I am partial on the question of programming languages, when Java is discussed. Maybe I should integrate the information in my User-Name on LQ.., but you are prepared, now.

Last edited by Michael Uplawski; 06-27-2017 at 09:16 AM. Reason: more time spent correcting my article
 
1 members found this post helpful.
  


Reply

Tags
databases, ide, programming language


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off



Similar Threads
Thread Thread Starter Forum Replies Last Post
Learn Linux From Scratch saadaly Linux From Scratch 3 03-12-2017 03:04 PM
Learn Linux from scratch Sonte Linux - Newbie 4 09-02-2011 08:42 AM
How to Learn Linux from scratch ashwani.mailbox Linux - Newbie 3 08-12-2010 01:14 PM
want to learn linux from scratch??? satyam_ankur Linux - General 5 05-01-2007 10:58 AM
Best IDE to learn IDE to leran on Linux alix123 Programming 4 01-07-2005 04:22 AM


All times are GMT -5. The time now is 05:08 PM.

Main Menu
Advertisement
My LQ
Write for LQ
LinuxQuestions.org is looking for people interested in writing Editorials, Articles, Reviews, and more. If you'd like to contribute content, let us know.
Main Menu
Syndicate
RSS1  Latest Threads
RSS1  LQ News
Twitter: @linuxquestions
Facebook: linuxquestions Google+: linuxquestions
Open Source Consulting | Domain Registration