www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Pro programmer

reply GreatSam4sure <greatsam4sure gmail.com> writes:
I am wondering as to what is the starting point of being a pro 
programmer. If I want to be a pro programmer what language must I 
start with?

Most pro programmer I have heard of are all C and C++ Guru. Most 
of the best guys on this D forum falls into that category.

I really want to know programming to the core not just tied to a 
language or just at the level of drag and drop or use a framework 
or library.



I will appreciate your help in this matter. I am ready to put in 
hard work. I ready know a little of java, actionscrip 3.0, 
kotlin, D but at the surface level but can use them to write app.

But I am concern with matter like how can I write a GUI toolkit 
from the ground up.
Aug 25 2019
next sibling parent reply Tony <tonytdominguez aol.com> writes:
On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 I am wondering as to what is the starting point of being a pro 
 programmer. If I want to be a pro programmer what language must 
 I start with?

 Most pro programmer I have heard of are all C and C++ Guru. 
 Most of the best guys on this D forum falls into that category.

 I really want to know programming to the core not just tied to 
 a language or just at the level of drag and drop or use a 
 framework or library.



 I will appreciate your help in this matter. I am ready to put 
 in hard work. I ready know a little of java, actionscrip 3.0, 
 kotlin, D but at the surface level but can use them to write 
 app.

 But I am concern with matter like how can I write a GUI toolkit 
 from the ground up.
When you say "pro programmer" are you referring to someone who programs for a living for a company, or a "top notch/very good programmer" ?
Aug 25 2019
parent reply GreatSam4sure <greatsam4sure gmail.com> writes:
On Monday, 26 August 2019 at 04:39:39 UTC, Tony wrote:
 On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 I am wondering as to what is the starting point of being a pro 
 programmer. If I want to be a pro programmer what language 
 must I start with?

 Most pro programmer I have heard of are all C and C++ Guru. 
 Most of the best guys on this D forum falls into that category.

 I really want to know programming to the core not just tied to 
 a language or just at the level of drag and drop or use a 
 framework or library.



 I will appreciate your help in this matter. I am ready to put 
 in hard work. I ready know a little of java, actionscrip 3.0, 
 kotlin, D but at the surface level but can use them to write 
 app.

 But I am a concern with a matter like how can I write a GUI 
 toolkit from the ground up.
When you say "pro programmer" are you referring to someone who programs for a living for a company or a "top-notch/very good programmer"?
I am referring to a person who has a good understanding of programming that he can model any real-world situation. He can turn any real-world case to a program. For instance, I consider Walter, Andrei, etc as a pro programmer this platform. They are c and C++ programmer. What is the path of becoming very good at programming? Which language will one start with. I have some real-world situation I want to model but I am at a loss as to how to start. For instance, I do one build a GUI framework like adobe spark, javafx,etc with minimum dependency or no dependency from the ground up. The lack of easily customizable, platform native GUI in D is a real concern to me but I don't have the expertise to do it. Where is the starting point of doing such amazing thing? Thanks for your reply
Aug 25 2019
parent reply Chris <wendlec tcd.ie> writes:
On Monday, 26 August 2019 at 06:46:04 UTC, GreatSam4sure wrote:

 What is the path of becoming very good at programming? Which 
 language will one start with.
Often it's the language that best solves the problem at hand for you, but it really depends on what you want to achieve. For fast scripting and modelling maybe Python would be a good choice. But Python can be a dead end when it comes to performance etc. If you want to develop apps for Android/iOS you're better off using Java or better still Kotlin (Android) and Swift (iOS). You should always decouple the business logic of your app from the UI. So you can write code in C/C++ or D and later link it to any UI. Anyway, always think of where you want to go, e.g. portability / cross-platform and see what best suits you. If you wanna go mobile use a language that runs on mobile platforms like Android and iOS. If you want to write for desktop or server only you have more choices. Unfortunately, Android/iOS support for D leaves much to be desired.
 I have some real-world situation I want to model but I am at a 
 loss as to how to start. For instance, I do one build a GUI 
 framework like adobe spark, javafx,etc with minimum dependency 
 or no dependency from the ground up.

 The lack of easily customizable, platform native GUI in D is a 
 real concern to me but I don't have the expertise to do it.
There is DlangUI: https://github.com/buggins/dlangui Check it out. And there are D bindings to other UI frameworks.
 Where is the starting point of doing such amazing thing?
The truth of the matter is that you only know after years of programming what you need and what you don't need. As you get wiser you become less excited about the latest fancy feature of language X. Basically all languages have similar core features to model the world and solve problems (hash maps, arrays, structs, classes etc.) Just start to write programs that solve problems and enjoy...
 Thanks for your reply
Aug 26 2019
parent reply GreatSam4sure <greatsam4sure gmail.com> writes:
On Monday, 26 August 2019 at 08:50:29 UTC, Chris wrote:
 On Monday, 26 August 2019 at 06:46:04 UTC, GreatSam4sure wrote:

 What is the path of becoming very good at programming? Which 
 language will one start with.
Often it's the language that best solves the problem at hand for you, but it really depends on what you want to achieve. For fast scripting and modelling maybe Python would be a good choice. But Python can be a dead end when it comes to performance etc. If you want to develop apps for Android/iOS you're better off using Java or better still Kotlin (Android) and Swift (iOS). You should always decouple the business logic of your app from the UI. So you can write code in C/C++ or D and later link it to any UI. Anyway, always think of where you want to go, e.g. portability / cross-platform and see what best suits you. If you wanna go mobile use a language that runs on mobile platforms like Android and iOS. If you want to write for desktop or server only you have more choices. Unfortunately, Android/iOS support for D leaves much to be desired.
 I have some real-world situation I want to model but I am at a 
 loss as to how to start. For instance, I do one build a GUI 
 framework like adobe spark, javafx,etc with minimum dependency 
 or no dependency from the ground up.

 The lack of easily customizable, platform native GUI in D is a 
 real concern to me but I don't have the expertise to do it.
There is DlangUI: https://github.com/buggins/dlangui Check it out. And there are D bindings to other UI frameworks.
 Where is the starting point of doing such amazing thing?
The truth of the matter is that you only know after years of programming what you need and what you don't need. As you get wiser you become less excited about the latest fancy feature of language X. Basically all languages have similar core features to model the world and solve problems (hash maps, arrays, structs, classes etc.) Just start to write programs that solve problems and enjoy...
 Thanks for your reply
Thanks, I have check dlangui, it is not native go window at least. The display is poor and the fonts worse. I can even center the window on the screen. We notice the designer for a month now no reply. Skinning and theming is an issue too. I want customizable GUI toolkit like JavaFX and adobe spark framework in D. I just can find any. I don't know to link D code with any GUI if not I would have gone with JavaFX or adobe spark Does, it means being a good programmer does not depend on any language? Does it imply being comfortable in any language of choice and domain of interest? Thanks for the reply
Aug 26 2019
parent reply Kagamin <spam here.lot> writes:
On Monday, 26 August 2019 at 12:02:12 UTC, GreatSam4sure wrote:
 I want customizable GUI toolkit like JavaFX and adobe spark 
 framework in D.
DWT was translated from java SWT, you can do the same for JavaFX, D is heavily based on java and there's an automatic translation tool from java to D. There's no silver bullet to become a pro, you just work and gain experience and this experience allows you to reflect on coding practices on increasing scale.
Aug 26 2019
parent reply GreatSam4sure <greatsam4sure gmail.com> writes:
On Monday, 26 August 2019 at 15:29:47 UTC, Kagamin wrote:
 On Monday, 26 August 2019 at 12:02:12 UTC, GreatSam4sure wrote:
 I want customizable GUI toolkit like JavaFX and adobe spark 
 framework in D.
DWT was translated from java SWT, you can do the same for JavaFX, D is heavily based on java and there's an automatic translation tool from java to D. There's no silver bullet to become a pro, you just work and gain experience and this experience allows you to reflect on coding practices on increasing scale.
Thanks, is there tutorial on the translation of Java to D. Which tools is used? Pls guide me, I am really interested in translating JavaFX to D
Aug 26 2019
parent =?UTF-8?B?UsOpbXkgTW91w6t6YQ==?= <remy.moueza gmail.com> writes:
On Monday, 26 August 2019 at 16:41:05 UTC, GreatSam4sure wrote:
 Thanks, is there tutorial on the translation of Java to D. 
 Which tools is used?

 Pls guide me, I am really interested in translating JavaFX to D
From what I can recall and find on the Internet, the tool used was named "tioport". It is only viewable on the old (deprecated) dsource.org website. Last activity was in 2007. A runtime library, dejavu, was used to emulate the java standard library. A port of swt 3.2.1 was done with it. I doubt that it supported D 2. I cannot find anything fresher than 2007 concerning tioport. The DWT project is still active: - https://code.dlang.org/packages/dwt - https://github.com/d-widget-toolkit/dwt I suppose once the first translation was made, the resulting code base was maintained incrementally, without resorting to whole translation of the SWT code.
Aug 26 2019
prev sibling next sibling parent reply Dukc <ajieskola gmail.com> writes:
On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 I am wondering as to what is the starting point of being a pro 
 programmer. If I want to be a pro programmer what language must 
 I start with?
Any general purpose language will do. Basically everything can be expressed in any language, through some tasks are very cumbersome in tasks they are not designed for.
 Most pro programmer I have heard of are all C and C++ Guru. 
 Most of the best guys on this D forum falls into that category.
C and C++ have steep learning curves, and tend to be better for professionals than amateurs. That does not mean C/C++ usage is what defines a pro. Even php, famous for being simple to learn but often hated by professionals, can be used professionally.
 I really want to know programming to the core not just tied to 
 a language or just at the level of drag and drop or use a 
 framework or library.
Don't worry, learn to apply one language in practice and you'll usually figure out automatically how to apply any language you will learn. Well, sometimes when you transition to a new language you should learn new ways to do thing, because the new language is better suited for those than your old language. Famous example is that C programmers that transitioned to C++ or Java in the 90's were encouraged to start to thinking in object oriented manner. They did not strictly have to, as C++ and Java can be used for same programming stye as C, and C can do sort-of object-oriented programming, but object-oriented designs were (and are) so much easier to implement in the newer languages that in practice, object design should be used a lot more now than in the 70's.
 I will appreciate your help in this matter. I am ready to put 
 in hard work. I ready know a little of java, actionscrip 3.0, 
 kotlin, D but at the surface level but can use them to write 
 app.

 But I am concern with matter like how can I write a GUI toolkit 
 from the ground up.
Basically, GUI libraries call the operating system API that is different for different operating systems.
Aug 27 2019
parent GreatSam4sure <greatsam4sure gmail.com> writes:
On Tuesday, 27 August 2019 at 08:09:40 UTC, Dukc wrote:
 On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 [...]
Any general purpose language will do. Basically everything can be expressed in any language, through some tasks are very cumbersome in tasks they are not designed for. [...]
Thanks a lot, really appreciate
Aug 27 2019
prev sibling parent reply Ron Tarrant <rontarrant gmail.com> writes:
On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 If I want to be a pro programmer what language must I start 
 with?
If it's deep understanding you want, start with assembly language. Knowing how things are done down at that level—before all the layers of abstraction are added—will give you an edge over 99% of current coders. It's the same with basic computer use. Wanna be a true expert user? Get any version of Linux or one of the BSDs and restrict yourself to using just the terminal for about a month. You'll be amazed at how much you'll learn. It'll also give you a great foundation for understanding coding. And your typing skills will go through the roof.
Aug 27 2019
parent reply GreatSam4sure <greatsam4sure gmail.com> writes:
On Tuesday, 27 August 2019 at 14:51:07 UTC, Ron Tarrant wrote:
 On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 If I want to be a pro programmer what language must I start 
 with?
If it's deep understanding you want, start with assembly language. Knowing how things are done down at that level—before all the layers of abstraction are added—will give you an edge over 99% of current coders. It's the same with basic computer use. Wanna be a true expert user? Get any version of Linux or one of the BSDs and restrict yourself to using just the terminal for about a month. You'll be amazed at how much you'll learn. It'll also give you a great foundation for understanding coding. And your typing skills will go through the roof.
Thanks a lot. I want to have a deep understanding of programming. I will look into your advice
Aug 27 2019
parent reply "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Tue, Aug 27, 2019 at 04:01:03PM +0000, GreatSam4sure via Digitalmars-d-learn
wrote:
 On Tuesday, 27 August 2019 at 14:51:07 UTC, Ron Tarrant wrote:
 On Sunday, 25 August 2019 at 21:30:10 UTC, GreatSam4sure wrote:
 If I want to be a pro programmer what language must I start with?
If it's deep understanding you want, start with assembly language. Knowing how things are done down at that level—before all the layers of abstraction are added—will give you an edge over 99% of current coders.
To quote Knuth: People who are more than casually interested in computers should have at least some idea of what the underlying hardware is like. Otherwise the programs they write will be pretty weird. -- D. Knuth Learning assembly language will give you an intrinsic understanding of what actually happens at the machine level, which will guide your high-level designs later. But caveat emptor: you don't want to get stuck in the "rut" of thinking in assembly language, because it can lead to missing the forest for the trees sometimes. So to balance that, you want to learn also a very high-level language that makes you think on a whole different level: I recommend Haskell or Lisp after you learn assembly language. They are very different from "mainstream" imperative languages, but they really strip away all the frills and lay bare the essentials of algorithms and computation. Even if you end up working mainly with an imperative language later, the experience of learning a functional language like Haskell or Lisp will help you think about algorithms in a much clearer and deeper way. You'll be able to identify patterns where others lose their way in details, and your code will be much better structured and maintainable.
 It's the same with basic computer use. Wanna be a true expert user?
 Get any version of Linux or one of the BSDs and restrict yourself to
 using just the terminal for about a month.
[...] Only a month? :-D I've been doing exactly this for the last 20 years, and now I don't even dream of using a GUI anymore. The Unix command line is far more powerful and expressive, and I can get so much more done without wasting time switching my hand between the rodent and the keyboard. It forces me to learn command-line utilities that don't require ridiculous amounts of RAM and 40 seconds just to start up, and that has accelerated my productivity by orders of magnitude. On top of that, command-line programs are scriptable, meaning once I know how to use it, I don't ever have to use it again because I'd write a script to do it for me. No more aneurysm-inducing clicking through endless nested menus and carpal tunnel syndrome; it's automation FTW! Kill the rodent, and long live the keyboard! :-P T -- Public parking: euphemism for paid parking. -- Flora
Aug 27 2019
parent reply Jani Hur <spam com.invalid> writes:
On Tuesday, 27 August 2019 at 16:32:08 UTC, H. S. Teoh wrote:
 [..] you want to learn also a very high-level language that 
 makes you think on a whole different level: I recommend Haskell 
 or Lisp after you learn assembly language.
For Lisp, Clojure (https://clojure.org/) is a strong candidate: https://blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html
Aug 27 2019
parent Russel Winder <russel winder.org.uk> writes:
On Wed, 2019-08-28 at 04:46 +0000, Jani Hur via Digitalmars-d-learn wrote:
=20
[=E2=80=A6]
 For Lisp, Clojure (https://clojure.org/) is a strong candidate:
=20
 https://blog.cleancoder.com/uncle-bob/2019/08/22/WhyClojure.html
Common Lisp implementations may still have car, cdr, etc. for backward compatibility, but I haven't seen any human written/read Lisp code using th= em for ages. So that is a bit of a false argument by Bob on that one. Clojure = is fun, but only if you already have to have the JVM and The Java Platform. Common Lisp implementations have all the needful and do not have the resour= ce requirements of the JVM, and they have JITs. --=20 Russel. =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
Aug 28 2019