ATTENTION: You are viewing a page formatted for mobile devices; to view the full web page, click HERE.

Main Area and Open Discussion > Living Room

I'm thinking about learning how to program.

<< < (8/16) > >>

MilesAhead:
Another thing to take notice of is the plethora of fantastic tools you get in your context menu in Visual Studio.
--- End quote ---


It's hard for me to imagine any new learner being anything but negatively impacted by all of the plethora of tools and commands in Visual Studio.  I've been programming for 30 years and i still find these super powerful IDEs a bit overwhelming and distracting.. If you're just starting out learning how to program you might be better off using a simple text editor for your code, and focusing on the language itself and not trying to master a complex development editor/tool at the same time.
-mouser (October 29, 2010, 07:49 AM)
--- End quote ---

I have to agree with that.  For first programming you should be getting the logic, syntax and how function calls, subroutines work. In gwBasic the only "advanced tool" in the editor was automatic line numbering.  Once you have the hang of getting programs to do what you want using comparisons and other tests and branching, then it's time to find out you really have only scratched the surface.  Unfortunately it's not like The Matrix where the stuff can just be downloaded into your head. It takes a while to absorb it.

It's easy to forget that coming from outside programming, you think there is some real correlation between what you see and what happens in the machine.  You don't realize to some extent it's an illusion created by the programmer(the error message doesn't have to say "file not found" it could say "jeez are you dumb or what?" etc...)  The correlations that seem real are just maintained by consistent practices.

Stoic Joker:
It's hard for me to imagine any new learner being anything but negatively impacted by all of the plethora of tools and commands in Visual Studio.  I've been programming for 30 years and i still find these super powerful IDEs a bit overwhelming and distracting.. If you're just starting out learning how to program you might be better off using a simple text editor for your code, and focusing on the language itself and not trying to master a complex development editor/tool at the same time.-mouser (October 29, 2010, 07:49 AM)
--- End quote ---

That's why I strip the VS UI down to just the basic main menu (no toolbars), the project window, and the code I'm working on. Build window pops up during compile then sinks back out of the way.

Me like simple clean interface.

Renegade:
Another thing to take notice of is the plethora of fantastic tools you get in your context menu in Visual Studio.
--- End quote ---


It's hard for me to imagine any new learner being anything but negatively impacted by all of the plethora of tools and commands in Visual Studio.  I've been programming for 30 years and i still find these super powerful IDEs a bit overwhelming and distracting.. If you're just starting out learning how to program you might be better off using a simple text editor for your code, and focusing on the language itself and not trying to master a complex development editor/tool at the same time.
-mouser (October 29, 2010, 07:49 AM)
--- End quote ---

I'm with wraith808 on this one.

I keep the properties and solution panes open all the time, but my build, output, error, tools, data connections, and all the other panes hide away until I need them. I'll pin the tools pane when I'm doing UI work, which is convenient, but usually it's hidden in a tab at the side of the IDE.

I've got a few toolbars open, but nothing that's really distracting.

And it's pretty much exactly as the VS default install!

Now, there are a trillion tools available, but it's like being a kid on an adventure through a candy store~!

The menus are well organized and things are easy to find.

Intellisense is wonderful.

There is one problem with VS 2010 though... A serious problem... A very sad, deeply saddening problem... Dynamic Help is gone.

If you can get VS 2008 or 2005, do it. Dynamic Help was about the best computing teacher one could ever hope for.  It would sense where you were inside your code, and list in a pane for you all the different relevant help topics. It was stupidly awesome. I feel dumber just knowing that it is gone in VS 2010.

It really was that good. You could just glance at it and there was so much useful information there. Or, you could type in your IDE something, and the answer would appear in the Dynamic Help pane.

It was the most underrated feature of VS, and for a new programmer, it was just the best.

Do look for a VS 2008 or 2005 version though. It will reduce your learning curve by half at least.

Oooops... Back on topic now...

I think that at the end of the day, if you're just starting out, the tools in VS (especially 2005/2008) will help you learn faster. A simple text editor will leave everything up to you, along with all the BS nonsense that nobody should ever even look at, much less code out by hand.

This is the kind of stuff I mean:

Wiring Up UI Code (mindnumbingly boring and repetitive):

--- Code: C# ---namespace SslTest{    partial class Form1    {        /// <summary>        /// Required designer variable.        /// </summary>        private System.ComponentModel.IContainer components = null;         /// <summary>        /// Clean up any resources being used.        /// </summary>        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>        protected override void Dispose(bool disposing)        {            if (disposing && (components != null))            {                components.Dispose();            }            base.Dispose(disposing);        }         #region Windows Form Designer generated code         /// <summary>        /// Required method for Designer support - do not modify        /// the contents of this method with the code editor.        /// </summary>        private void InitializeComponent()        {            this.textBox1 = new System.Windows.Forms.TextBox();            this.label1 = new System.Windows.Forms.Label();            this.label2 = new System.Windows.Forms.Label();            this.textBox2 = new System.Windows.Forms.TextBox();            this.label3 = new System.Windows.Forms.Label();            this.textBox3 = new System.Windows.Forms.TextBox();            this.label4 = new System.Windows.Forms.Label();            this.textBox4 = new System.Windows.Forms.TextBox();            this.label5 = new System.Windows.Forms.Label();            this.textBox5 = new System.Windows.Forms.TextBox();            this.label6 = new System.Windows.Forms.Label();            this.textBox6 = new System.Windows.Forms.TextBox();            this.label7 = new System.Windows.Forms.Label();            this.textBox7 = new System.Windows.Forms.TextBox();            this.label8 = new System.Windows.Forms.Label();            this.textBox8 = new System.Windows.Forms.TextBox();            this.label9 = new System.Windows.Forms.Label();            this.textBox9 = new System.Windows.Forms.TextBox();            this.label10 = new System.Windows.Forms.Label();            this.textBox10 = new System.Windows.Forms.TextBox();            this.btnDoCert = new System.Windows.Forms.Button();            this.SuspendLayout();            //             // textBox1            //             this.textBox1.Location = new System.Drawing.Point(96, 75);            this.textBox1.Name = "textBox1";            this.textBox1.Size = new System.Drawing.Size(184, 20);            this.textBox1.TabIndex = 0;            //             // label1            //             this.label1.AutoSize = true;            this.label1.Location = new System.Drawing.Point(12, 78);            this.label1.Name = "label1";            this.label1.Size = new System.Drawing.Size(35, 13);            this.label1.TabIndex = 1;            this.label1.Text = "label1";            //             // label2            //             this.label2.AutoSize = true;            this.label2.Location = new System.Drawing.Point(12, 104);            this.label2.Name = "label2";            this.label2.Size = new System.Drawing.Size(35, 13);            this.label2.TabIndex = 3;            this.label2.Text = "label2";            //             // textBox2            //             this.textBox2.Location = new System.Drawing.Point(96, 101);            this.textBox2.Name = "textBox2";            this.textBox2.Size = new System.Drawing.Size(184, 20);            this.textBox2.TabIndex = 2;            //             // label3            //             this.label3.AutoSize = true;            this.label3.Location = new System.Drawing.Point(12, 130);            this.label3.Name = "label3";            this.label3.Size = new System.Drawing.Size(35, 13);            this.label3.TabIndex = 5;            this.label3.Text = "label3";            //             // textBox3            //             this.textBox3.Location = new System.Drawing.Point(96, 127);            this.textBox3.Name = "textBox3";            this.textBox3.Size = new System.Drawing.Size(184, 20);            this.textBox3.TabIndex = 4;            //             // label4            //             this.label4.AutoSize = true;            this.label4.Location = new System.Drawing.Point(12, 156);            this.label4.Name = "label4";            this.label4.Size = new System.Drawing.Size(35, 13);            this.label4.TabIndex = 7;            this.label4.Text = "label4";            //             // textBox4            //             this.textBox4.Location = new System.Drawing.Point(96, 153);            this.textBox4.Name = "textBox4";            this.textBox4.Size = new System.Drawing.Size(184, 20);            this.textBox4.TabIndex = 6;            //             // label5            //             this.label5.AutoSize = true;            this.label5.Location = new System.Drawing.Point(12, 182);            this.label5.Name = "label5";            this.label5.Size = new System.Drawing.Size(35, 13);            this.label5.TabIndex = 9;            this.label5.Text = "label5";            //             // textBox5            //             this.textBox5.Location = new System.Drawing.Point(96, 179);            this.textBox5.Name = "textBox5";            this.textBox5.Size = new System.Drawing.Size(184, 20);            this.textBox5.TabIndex = 8;            //             // label6            //             this.label6.AutoSize = true;            this.label6.Location = new System.Drawing.Point(12, 208);            this.label6.Name = "label6";            this.label6.Size = new System.Drawing.Size(35, 13);            this.label6.TabIndex = 11;            this.label6.Text = "label6";            //             // textBox6            //             this.textBox6.Location = new System.Drawing.Point(96, 205);            this.textBox6.Name = "textBox6";            this.textBox6.Size = new System.Drawing.Size(184, 20);            this.textBox6.TabIndex = 10;            //             // label7            //             this.label7.AutoSize = true;            this.label7.Location = new System.Drawing.Point(12, 234);            this.label7.Name = "label7";            this.label7.Size = new System.Drawing.Size(35, 13);            this.label7.TabIndex = 13;            this.label7.Text = "label7";            //             // textBox7            //             this.textBox7.Location = new System.Drawing.Point(96, 231);            this.textBox7.Name = "textBox7";            this.textBox7.Size = new System.Drawing.Size(184, 20);            this.textBox7.TabIndex = 12;            //             // label8            //             this.label8.AutoSize = true;            this.label8.Location = new System.Drawing.Point(12, 260);            this.label8.Name = "label8";            this.label8.Size = new System.Drawing.Size(35, 13);            this.label8.TabIndex = 15;            this.label8.Text = "label8";            //             // textBox8            //             this.textBox8.Location = new System.Drawing.Point(96, 257);            this.textBox8.Name = "textBox8";            this.textBox8.Size = new System.Drawing.Size(184, 20);            this.textBox8.TabIndex = 14;            //             // label9            //             this.label9.AutoSize = true;            this.label9.Location = new System.Drawing.Point(12, 286);            this.label9.Name = "label9";            this.label9.Size = new System.Drawing.Size(35, 13);            this.label9.TabIndex = 17;            this.label9.Text = "label9";            //             // textBox9            //             this.textBox9.Location = new System.Drawing.Point(96, 283);            this.textBox9.Name = "textBox9";            this.textBox9.Size = new System.Drawing.Size(184, 20);            this.textBox9.TabIndex = 16;            //             // label10            //             this.label10.AutoSize = true;            this.label10.Location = new System.Drawing.Point(12, 312);            this.label10.Name = "label10";            this.label10.Size = new System.Drawing.Size(41, 13);            this.label10.TabIndex = 19;            this.label10.Text = "label10";            //             // textBox10            //             this.textBox10.Location = new System.Drawing.Point(96, 309);            this.textBox10.Name = "textBox10";            this.textBox10.Size = new System.Drawing.Size(184, 20);            this.textBox10.TabIndex = 18;            //             // btnDoCert            //             this.btnDoCert.Location = new System.Drawing.Point(96, 336);            this.btnDoCert.Name = "btnDoCert";            this.btnDoCert.Size = new System.Drawing.Size(75, 23);            this.btnDoCert.TabIndex = 20;            this.btnDoCert.Text = "Do Cert";            this.btnDoCert.UseVisualStyleBackColor = true;            //             // Form1            //             this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;            this.ClientSize = new System.Drawing.Size(619, 458);            this.Controls.Add(this.btnDoCert);            this.Controls.Add(this.label10);            this.Controls.Add(this.textBox10);            this.Controls.Add(this.label9);            this.Controls.Add(this.textBox9);            this.Controls.Add(this.label8);            this.Controls.Add(this.textBox8);            this.Controls.Add(this.label7);            this.Controls.Add(this.textBox7);            this.Controls.Add(this.label6);            this.Controls.Add(this.textBox6);            this.Controls.Add(this.label5);            this.Controls.Add(this.textBox5);            this.Controls.Add(this.label4);            this.Controls.Add(this.textBox4);            this.Controls.Add(this.label3);            this.Controls.Add(this.textBox3);            this.Controls.Add(this.label2);            this.Controls.Add(this.textBox2);            this.Controls.Add(this.label1);            this.Controls.Add(this.textBox1);            this.Name = "Form1";            this.Text = "Form1";            this.Load += new System.EventHandler(this.Form1_Load);            this.ResumeLayout(false);            this.PerformLayout();         }         #endregion         private System.Windows.Forms.TextBox textBox1;        private System.Windows.Forms.Label label1;        private System.Windows.Forms.Label label2;        private System.Windows.Forms.TextBox textBox2;        private System.Windows.Forms.Label label3;        private System.Windows.Forms.TextBox textBox3;        private System.Windows.Forms.Label label4;        private System.Windows.Forms.TextBox textBox4;        private System.Windows.Forms.Label label5;        private System.Windows.Forms.TextBox textBox5;        private System.Windows.Forms.Label label6;        private System.Windows.Forms.TextBox textBox6;        private System.Windows.Forms.Label label7;        private System.Windows.Forms.TextBox textBox7;        private System.Windows.Forms.Label label8;        private System.Windows.Forms.TextBox textBox8;        private System.Windows.Forms.Label label9;        private System.Windows.Forms.TextBox textBox9;        private System.Windows.Forms.Label label10;        private System.Windows.Forms.TextBox textBox10;        private System.Windows.Forms.Button btnDoCert;    }}

Program initialization code that never changes for any program (Windows Forms that is):


--- Code: C# ---using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms; namespace SslTest{    static class Program    {        /// <summary>        /// The main entry point for the application.        /// </summary>        [STAThread]        static void Main()        {            Application.EnableVisualStyles();            Application.SetCompatibleTextRenderingDefault(false);            Application.Run(new Form1());        }    }}

VS does all that stuff automatically for you, leaving you to get the real stuff done.

Now, if you're into programming for the sake of programming, by all means go for vi or emacs as your programming tool of choice. But if you want to play around more and get things working and done, then an IDE is much more productive.

FWIW, other IDEs are similar to VS and have much of the same functionality to get you up, running, and productive. e.g. intelli-J, Eclipse, NetBeans, MonoDevelop, SharpDevelop, etc. Lots of them out there.

They'll all take care of the mindnumbingly boring code like UI code and wiring up button events and things.

However, vi and emacs (or any bare bones text editor) will force you to go through a TON of excruciating pain that I would call cruel and unusual, BUT, you will learn more and you will learn the underlying concepts better.

I'd recommend trying out a few different IDEs and text editors and different languages to see what you like. You can get all the tools for free, so why not taste test them? :D

Renegade:
You might want to look at SharpDevelop => http://www.icsharpcode.net/OpenSource/SD/Features.aspx

It supports IronPython:

Supported Programming Languages

    * C# (Code Completion, Windows Forms Designer)
    * VB.NET (Code Completion, Windows Forms Designer)
    * Boo (Code Completion, Windows Forms Designer)
    * IronPython (Code Conversion, Windows Forms Designer, partial Code Completion)
    * IronRuby (Code Conversion, Windows Forms Designer)
    * F#

app103:
Another thing to take notice of is the plethora of fantastic tools you get in your context menu in Visual Studio.
--- End quote ---


It's hard for me to imagine any new learner being anything but negatively impacted by all of the plethora of tools and commands in Visual Studio.  I've been programming for 30 years and i still find these super powerful IDEs a bit overwhelming and distracting.. If you're just starting out learning how to program you might be better off using a simple text editor for your code, and focusing on the language itself and not trying to master a complex development editor/tool at the same time.
-mouser (October 29, 2010, 07:49 AM)
--- End quote ---

I felt that way about VS after having used an older Borland IDE (Delphi 6) exclusively. I actually thought that if I wanted to eventually move to C#, I was going to have to learn it first in a Borland IDE (UI already familiar enough to deal with) and then make the transition to using it in VS, so I wouldn't be complicating everything for myself by trying to learn 2 things at once. VS is scary looking compared to what I am used to...so are newer versions of Delphi, for that matter.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version