Page 1 of 2 12 LastLast
Results 1 to 30 of 32

Thread: Clion - C++ IDE for Linux/Win/OSX

  1. #1
    Programmer Bulat Ziganshin's Avatar
    Join Date
    Mar 2007
    Location
    Uzbekistan
    Posts
    4,572
    Thanks
    780
    Thanked 687 Times in 372 Posts

    Clion - C++ IDE for Linux/Win/OSX


  2. Thanks:

    Nania Francesco (12th September 2014)

  3. #2
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    CLion EAP availability is awesome news. I hope it will be also available as a plugin for IntelliJ IDEA not too far into the future.

  4. #3
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    Anyone using CLion on regular basis? What's your impressions? Is it ridden with bugs?

  5. #4
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    Anyone using CLion on regular basis? What's your impressions? Is it ridden with bugs?
    I think system programming languages are complex and not development friendly.

    The optimization is not really used because software industry year after year creates more and more complex software .And hardware industry changes the architecture every 2 years. The computers will not be faster because the software/hardware industry.

    Java is more slow ,but is more development friendly and easier. It helps open source community a lot.
    Just don t do complex software for the actual hardware architecture.

    I don t write software using systems languages anymore.Even if they are faster .

  6. #5
    Member
    Join Date
    Aug 2014
    Location
    Argentina
    Posts
    538
    Thanks
    238
    Thanked 92 Times in 72 Posts
    Quote Originally Posted by lunaris View Post
    I think system programming languages are complex and not development friendly.

    The optimization is not really used because software industry year after year creates more and more complex software .And hardware industry changes the architecture every 2 years. The computers will not be faster because the software/hardware industry.

    Java is more slow ,but is more development friendly and easier. It helps open source community a lot.
    Just don t do complex software for the actual hardware architecture.

    I don t write software using systems languages anymore.Even if they are faster .
    Even if it is a compressor??? Guys... Let's rewrite paq8 in Java!

  7. #6
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by Gonzalo View Post
    Even if it is a compressor??? Guys... Let's rewrite paq8 in Java!
    Paq is much complex for actual architecture. But old LZ compressors must be written in java because java is easier and more development friendly.This is very important for open source community.

  8. #7
    Member
    Join Date
    Aug 2014
    Location
    Argentina
    Posts
    538
    Thanks
    238
    Thanked 92 Times in 72 Posts
    Quote Originally Posted by lunaris View Post
    Paq is much complex for actual architecture. But old LZ compressors must be written in java because java is easier and more development friendly.This is very important for open source community.
    Here you go some:
    http://encode.su/threads/2083-Java-and-Go-compressors

    Sorry Piotr. I'm messing the thread.
    Last edited by Gonzalo; 27th November 2014 at 21:52.

  9. #8
    Member m^2's Avatar
    Join Date
    Sep 2008
    Location
    Ślůnsk, PL
    Posts
    1,610
    Thanks
    30
    Thanked 65 Times in 47 Posts
    Quote Originally Posted by lunaris View Post
    Paq is much complex for actual architecture. But old LZ compressors must be written in java because java is easier and more development friendly.This is very important for open source community.
    There's no "must". Let the developers choose what they find best for the job. You find java to be such thing. I don't.

    And I don't view java as a good thing for open source, mainly because of complexity (writing and maintaining a classpath turned out to be a too big project even for Apache) and stewardship that excluded open source community.

  10. #9
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    I've written LZP + order-2 compressor in Java: https://github.com/tarsa/TarsaLZP Java is less than 2x slower than plain C, so for research purposes that's perfectly fine, IMO. If you're into Python then you can use PyPy or if you're into JavaScript then you can use something with Google V8 engine, but they would be much slower than Java.

    And I don't view java as a good thing for open source, mainly because of complexity (writing and maintaining a classpath turned out to be a too big project even for Apache) and stewardship that excluded open source community.
    Complexity is here because Java platform contains lots of things by default. If you list all the functions a standard Java platform provides and compare it to a set of C/ C++ libraries that do the same then complexity will be comparable.

    How is Java stewardship different from eg stewardship of C++ standard or OpenGL or whatever? There are JCPs/ JSRs where different companies take part so it's not driven by single company like Microsoft does with .NET

  11. #10
    Member
    Join Date
    Aug 2008
    Location
    Planet Earth
    Posts
    1,026
    Thanks
    103
    Thanked 410 Times in 285 Posts
    Maybe also interesting; Visual Studio Community 2013, what looks like a free Visual Studio Professional 2013 as long you do not use it commercial:
    http://www.visualstudio.com/products...-community-vs/

  12. #11
    Programmer Bulat Ziganshin's Avatar
    Join Date
    Mar 2007
    Location
    Uzbekistan
    Posts
    4,572
    Thanks
    780
    Thanked 687 Times in 372 Posts
    It's free even for commercial users for companies with less than 5 afaik employees. msvc 2015 beta may be also interesting since it supports most of C++ 14 features plus their own C++ 17 proposal: async calls
    Last edited by Bulat Ziganshin; 1st December 2014 at 13:44.

  13. #12
    Programmer Bulat Ziganshin's Avatar
    Join Date
    Mar 2007
    Location
    Uzbekistan
    Posts
    4,572
    Thanks
    780
    Thanked 687 Times in 372 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    I've written LZP + order-2 compressor in Java: https://github.com/tarsa/TarsaLZP Java is less than 2x slower than plain C
    and what is the benefit? was it easier to write/debug/something else?

  14. #13
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    Benefit? I would say purpose. The purpose was to compare performance of different programming language environments. Algorithm was ready and tested before starting the project, as it was based on some old TarsaLZP version.

    I also wanted to learn new languages. JavaScript proved to be royal pain to write numerical algorithms (well, for me JS is royal pain to write anything), while Python version also was hard to write, but mainly because I wanted it to be processable by ShedSkin (BTW: Python version of TarsaLZP is included in ShedSkin examples for version 0.9.4).
    Last edited by Piotr Tarsa; 1st December 2014 at 14:50.

  15. #14
    Member
    Join Date
    Nov 2014
    Location
    California
    Posts
    158
    Thanks
    51
    Thanked 44 Times in 33 Posts
    and what is the benefit?
    One obvious benefit is the ability to take one jar and use it directly on many OSes (Windows, Mac, Linux, Android). No need to recompile or make assumptions about the environment where the program is going to run (except when GUI code is involved).

  16. #15
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by hexagone View Post
    One obvious benefit is the ability to take one jar and use it directly on many OSes (Windows, Mac, Linux, Android). No need to recompile or make assumptions about the environment where the program is going to run (except when GUI code is involved).


    Java have good IDEs and is more easier because does not need memory management and have better portability ,clean syntax and other features..C++ syntax is old and more system oriented.

    Projects like Alice IDE helps beginners to learn program languages like java .

  17. #16
    Member m^2's Avatar
    Join Date
    Sep 2008
    Location
    Ślůnsk, PL
    Posts
    1,610
    Thanks
    30
    Thanked 65 Times in 47 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    How is Java stewardship different from eg stewardship of C++ standard or OpenGL or whatever? There are JCPs/ JSRs where different companies take part so it's not driven by single company like Microsoft does with .NET
    https://en.wikipedia.org/wiki/Java_S...uest#Criticism

  18. #17
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    Sure. JSR is not fully open, but what is? There are quite a few big companies (Google, IBM, RedHat, whatever) that drive many JSRs, at least that's my impression.
    Java progress under Sun practically stopped after release of Java 6 (which brought almost no innovation to the language syntax vs Java 5) and Oracle wanted to push Java forward so maybe they've curtailed the process somewhat to bring new iteration of Java sooner to market. There's always some tradeoff. Microsoft was advancing its C# at a much faster pace, but they didn't have any serious community process (at least I haven't heard of any).

    What's the C++ counterpart of JSR and how it is better (if it's better)? People can complain at anything, but I haven't seen a comparison.


    I can point to eg: https://jcp.org/en/jsr/detail?id=310 Here, two out of three leaders are the founders of open source Joda Time library. So it seems that Oracle don't neglect community.

    As to Google (who is using Apache Harmony) vs Oracle - I don't see Android sales stopped and I haven't heard about huge fines. Do you have some other information?
    Last edited by Piotr Tarsa; 3rd December 2014 at 01:03.

  19. #18
    Member
    Join Date
    Feb 2013
    Location
    San Diego
    Posts
    1,057
    Thanks
    54
    Thanked 72 Times in 56 Posts
    Quote Originally Posted by lunaris View Post
    I think system programming languages are complex and not development friendly.

    The optimization is not really used because software industry year after year creates more and more complex software .And hardware industry changes the architecture every 2 years. The computers will not be faster because the software/hardware industry.

    Java is more slow ,but is more development friendly and easier. It helps open source community a lot.
    Just don t do complex software for the actual hardware architecture.

    I don t write software using systems languages anymore.Even if they are faster .
    C and C++ weren't created as systems languages. They were created for general-purpose programming. They were designated as systems languages after the fact.

    I'm not much of a defender of C++, but C has everything you need to write tight algorithms elegantly and succinctly. Compression algorithms are generally expressed well in C. C++ and Java don't really add anything, they just help you to obscure the details. If you don't want to deal with details, then why bother working on compression algorithms? There are already plenty that are off-the-shelf and don't require thinking at all.

    As far as GUI programming and other mundane things, I reserve judgment. These things can be very tedious, so high-level languages and IDEs may make them easier. It's not really what I enjoy working on.

  20. #19
    Member
    Join Date
    Nov 2014
    Location
    California
    Posts
    158
    Thanks
    51
    Thanked 44 Times in 33 Posts
    "they just help you to obscure the details" uh, really ? I guess you enjoy dealing with data alignment and endianness differences across platforms. Other than that, I do not know what else is "obscured".
    What can you not do in C++ that you can do it C (even the evil pointer arithmetic is feasible) ?

  21. #20
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    nburns:
    Developing new algorithms and data structures in C/C++ is a PITA ( urbandictionary.com/define.php?term=pita&defid=549368 ). It's hard to find bugs while focusing on execution speed. But if you don't care about execution speed then why use C/C++? Using something more developer friendly, like Java which will eg tell you when you dereferenced a bad pointer or went off array bounds or provide you with efficient virtual inheritance (this requires profiling, which Java does on-the-fly, whereas C++ requires extra effort), will save lots of pain. Too bad Java brings own painful problems - like lack of proper support for unsigned numbers.

    Java isn't that much slower than plain C or C++ (less than 2x difference) so it won't impair development speed. Python probably could, as Python code under reference interpreter is multiple times slower than native C code. And testing on small files means that you overtune your compressor to small files.

  22. #21
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    nburns:
    Developing new algorithms and data structures in C/C++ is a PITA ( urbandictionary.com/define.php?term=pita&defid=549368 ). It's hard to find bugs while focusing on execution speed. But if you don't care about execution speed then why use C/C++? Using something more developer friendly, like Java which will eg tell you when you dereferenced a bad pointer or went off array bounds or provide you with efficient virtual inheritance (this requires profiling, which Java does on-the-fly, whereas C++ requires extra effort), will save lots of pain. Too bad Java brings own painful problems - like lack of proper support for unsigned numbers.

    Java isn't that much slower than plain C or C++ (less than 2x difference) so it won't impair development speed. Python probably could, as Python code under reference interpreter is multiple times slower than native C code. And testing on small files means that you overtune your compressor to small files.
    The C/C++ execution speed today is not really good,because hardware industry does not want optimizations and change hardware every 2 years. And the software industry always wants to do more complex software every year . The reality is system languages only help the software/hardware industry gain more money .(Look the actual games ,they are too much slow and always require new hardware every 2 years.)

  23. #22
    Expert
    Matt Mahoney's Avatar
    Join Date
    May 2008
    Location
    Melbourne, Florida, USA
    Posts
    3,257
    Thanks
    307
    Thanked 797 Times in 489 Posts
    I find a lot of useful stuff in C++ in developing zpaq that I could not do in C: exception handling (decompression errors, out of memory, etc), string, vector, and map classes that I don't have to write myself, classes where I can abstract InputFile, OutputFile (with base class File) so I can hide Windows/Linux dependencies, AES, SHA1, SHA256 classes, StringBuffer, etc. It is very convenient to define a public interface and just deal with that in the rest of the code. The libzpaq API uses polymorphism (abstract classes Reader and Writer) which would be much more complicated and error prone in C, but possible if you were careful about casting void pointers to functions. Likewise for libzpaq classes Compressor and Decompresser, and their parts like Predictor, Encoder, PostProcessor, Array, etc. Lots of little stuff too like // comments, const, pass by reference, declaring variables where first need them like for(int i;...), etc.

    But that's just my preference. The best language to use is the one you are most familiar with.

  24. #23
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by Matt Mahoney View Post
    I find a lot of useful stuff in C++ in developing zpaq that I could not do in C: exception handling (decompression errors, out of memory, etc), string, vector, and map classes that I don't have to write myself, classes where I can abstract InputFile, OutputFile (with base class File) so I can hide Windows/Linux dependencies, AES, SHA1, SHA256 classes, StringBuffer, etc. It is very convenient to define a public interface and just deal with that in the rest of the code. The libzpaq API uses polymorphism (abstract classes Reader and Writer) which would be much more complicated and error prone in C, but possible if you were careful about casting void pointers to functions. Likewise for libzpaq classes Compressor and Decompresser, and their parts like Predictor, Encoder, PostProcessor, Array, etc. Lots of little stuff too like // comments, const, pass by reference, declaring variables where first need them like for(int i;...), etc.

    But that's just my preference. The best language to use is the one you are most familiar with.
    In my opinion C++ is powerful and complex ,but only advanced developers use C++ .It's not developer friendly and not an easy language.Java is much easier than C++.

  25. #24
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    IMO, the real power of object orientation lies within virtual functions/ methods. Virtual methods aren't really compatible with precompiled binaries, ie they incur high cost in C++, while in Java they are common and run-time profiling optimizes them efficiently.

    C++ has templates (besides virtual functions that are high cost), but they require lots of upfront thinking, they don't refactor well and C++ concepts aren't in the standard. Linus Torvals shuns C++ as it can kill big projects (ie according to him).

    Overall, Java makes it rather hard to shoot yourself in the foot, while scaling to big projects efficiently with quite good refactoring support. The language doesn't give a lot of fun, though. But there's eg Scala that runs on JVM and integrates well with Java language.

    The C/C++ execution speed today is not really good,because hardware industry does not want optimizations and change hardware every 2 years. And the software industry always wants to do more complex software every year . The reality is system languages only help the software/hardware industry gain more money .(Look the actual games ,they are too much slow and always require new hardware every 2 years.)
    No language will magically solve algorithmic complexity problems. If programmers code more complex software it will require higher computational power.
    Games pretty much require C/C++ language now. I think C/C++ could be replaced by eg Rust, but it would take lot of time and effort. Generally, managed languages aren't good for big games because of garbage collection drawbacks, ie random lags and size overhead.

    BTW (or rather, back to topic):
    JetBrains put a link to CLion on the front page. Maybe the IDE has a quality good enough not to be ashamed of. I still don't have the incentive to test it thoroughly, ATM.
    Last edited by Piotr Tarsa; 12th December 2014 at 20:18.

  26. #25
    Member
    Join Date
    May 2008
    Location
    brazil
    Posts
    163
    Thanks
    0
    Thanked 3 Times in 3 Posts
    Quote Originally Posted by Piotr Tarsa View Post


    No language will magically solve algorithmic complexity problems. If programmers code more complex software it will require higher computational power.
    Games pretty much require C/C++ language now. I think C/C++ could be replaced by eg Rust, but it would take lot of time and effort. Generally, managed languages aren't good for big games because of garbage collection drawbacks, ie random lags and size overhead.


    Managed languages can be good for games,but only the software industry stop increasing software complexity and the hardware industry give more time to optimizations.Like Jmonkey engine.
    Last edited by lunaris; 12th December 2014 at 21:32.

  27. #26
    Member
    Join Date
    Feb 2013
    Location
    San Diego
    Posts
    1,057
    Thanks
    54
    Thanked 72 Times in 56 Posts
    I'll reply out of order.

    But that's just my preference. The best language to use is the one you are most familiar with.
    True.

    Quote Originally Posted by Matt Mahoney View Post
    I find a lot of useful stuff in C++ in developing zpaq that I could not do in C: exception handling (decompression errors, out of memory, etc), string, vector, and map classes that I don't have to write myself, classes where I can abstract InputFile, OutputFile (with base class File) so I can hide Windows/Linux dependencies, AES, SHA1, SHA256 classes, StringBuffer, etc.
    A lot of what you mention relates to the kinds of mundane details that become tedious, like portability across Windows and Linux/Unix. Your algorithm code is pretty close to plain C, from what I've seen.

    It is very convenient to define a public interface and just deal with that in the rest of the code. The libzpaq API uses polymorphism (abstract classes Reader and Writer) which would be much more complicated and error prone in C, but possible if you were careful about casting void pointers to functions. Likewise for libzpaq classes Compressor and Decompresser, and their parts like Predictor, Encoder, PostProcessor, Array, etc. Lots of little stuff too like // comments, const, pass by reference, declaring variables where first need them like for(int i;...), etc.
    I have a feeling that if you got more regular practice working with plain C, you'd find that it's not as bad as you thought.

    C has had // comments, const, and the ability to mix variable declarations with code for a while now. I don't think C lets you declare variables in for statements, but I don't miss that, anyway-- I end up multiply-declaring the same variables and get compile errors, or get two variables with identical names in slightly different scopes -- bad.

    C suffers from prejudice as a result of programmers not using it, while at the same time they become more and more familiar and comfortable with C++. Some things require you to write more code in C, but in the process you gain more control and flexibility.

  28. #27
    Member
    Join Date
    Feb 2013
    Location
    San Diego
    Posts
    1,057
    Thanks
    54
    Thanked 72 Times in 56 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    nburns:
    Developing new algorithms and data structures in C/C++ is a PITA ( urbandictionary.com/define.php?term=pita&defid=549368 ). It's hard to find bugs while focusing on execution speed. But if you don't care about execution speed then why use C/C++? Using something more developer friendly, like Java which will eg tell you when you dereferenced a bad pointer or went off array bounds or provide you with efficient virtual inheritance (this requires profiling, which Java does on-the-fly, whereas C++ requires extra effort), will save lots of pain. Too bad Java brings own painful problems - like lack of proper support for unsigned numbers.

    Java isn't that much slower than plain C or C++ (less than 2x difference) so it won't impair development speed. Python probably could, as Python code under reference interpreter is multiple times slower than native C code. And testing on small files means that you overtune your compressor to small files.
    Java's API does have some useful stuff. But if I used Java for developing experimental things, I'd be planning to rewrite in native code once I got it working.

    The advantage of NullPointerExceptions is pretty much a myth, I think. Practically every time I have ever dereferenced a bad pointer, it segfaults and the debugger shows that it tried to dereference zero. It's one of the easiest errors to catch.

  29. #28
    Member
    Join Date
    Jun 2009
    Location
    Kraków, Poland
    Posts
    1,497
    Thanks
    26
    Thanked 132 Times in 102 Posts
    The advantage of NullPointerExceptions is pretty much a myth, I think. Practically every time I have ever dereferenced a bad pointer, it segfaults and the debugger shows that it tried to dereference zero. It's one of the easiest errors to catch.
    How many times you experienced segfaults on released binaries (from anywhere)? Did the debugger help you on that? I think not, because nobody releases debug binaries.

  30. #29
    Member
    Join Date
    Nov 2014
    Location
    California
    Posts
    158
    Thanks
    51
    Thanked 44 Times in 33 Posts
    "Managed languages can be good for games" Java is not well suited for games due to high memory requirements (MineCraft being a counter example).
    "nobody releases debug binaries.". You wish ... Unfortunately it is not true (in the US market at least).
    People should give Google's Go a try. It feels C-ish but is strongly typed, has managed memory (GC), not pointer arithmetic, built-in concurrency, allows first class functions, compiles very quickly, is easy to learn (even for OO folks) and provide great tools. The main drawbacks so for: lack of IDEs and execution speed not on par with C/C++ in most cases.

  31. #30
    Member
    Join Date
    Feb 2013
    Location
    San Diego
    Posts
    1,057
    Thanks
    54
    Thanked 72 Times in 56 Posts
    Quote Originally Posted by Piotr Tarsa View Post
    How many times you experienced segfaults on released binaries (from anywhere)? Did the debugger help you on that? I think not, because nobody releases debug binaries.
    It doesn't seem like Java is that different in that regard.

Page 1 of 2 12 LastLast

Similar Threads

  1. DoubleSpace/ DriveSpace drivers for eg Linux
    By Piotr Tarsa in forum The Off-Topic Lounge
    Replies: 1
    Last Post: 8th May 2012, 06:41
  2. Non Windows or Linux compressors
    By Earl Colby Pottinger in forum Data Compression
    Replies: 6
    Last Post: 8th April 2010, 16:26
  3. ECM linux compile
    By schnaader in forum Download Area
    Replies: 0
    Last Post: 27th November 2009, 16:46
  4. Linux
    By Bulat Ziganshin in forum The Off-Topic Lounge
    Replies: 9
    Last Post: 15th January 2009, 20:51
  5. FreeArc 0.40 beta - linux version
    By Bulat Ziganshin in forum Forum Archive
    Replies: 27
    Last Post: 24th October 2007, 15:35

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •