# Python? or Visual Basic?

**URL:** <https://discourse.mcneel.com/t/python-or-visual-basic/59822>\
**Category:** Rhino for Windows\
**Created:** [April 6, 2018, 4:25am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822 "2018-04-06T04:25:10Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Knead](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/knead/32/66196_2.png) [@Knead](https://discourse.mcneel.com/u/Knead)\
**Post date:** [April 6, 2018, 4:25am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/1 "2018-04-06T04:25:10Z")

</div>

Hi Rhino! 😁

I am interested in creating a Rhino script.  
Which Programming Language Should I (a complete beginner) learn First? 😅

---

<div class="post-metadata">

**Author:** ![enzo\_molinari](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/enzo_molinari/32/524891_2.png) [@enzo\_molinari](https://discourse.mcneel.com/u/enzo_molinari)\
**Post date:** [April 6, 2018, 6:06am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/2 "2018-04-06T06:06:33Z")

</div>

I would say Python

> **[Rhino.Python Guides](http://developer.rhino3d.com/guides/rhinopython/)**
>
> Quickly add functionality to Rhino or automate repetitive tasks.

---

<div class="post-metadata">

**Author:** ![Helvetosaur](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/helvetosaur/32/635974_2.png) [@Helvetosaur](https://discourse.mcneel.com/u/Helvetosaur)\
**Post date:** [April 6, 2018, 7:32am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/3 "2018-04-06T07:32:46Z")

</div>

> [@Knead](#):
>
> Which Programming Language Should I (a complete beginner) learn First?

Python will be a tiny bit harder to learn at first, but will be worth the effort as it gives you access to many more advanced functions (via Rhinocommon) that vb rhinoscript does not.

The other thing I should say here is that learning scripting is two things at once - learning various methods and strategies in programming which are common to all languages, plus learning the syntax of the particular language you are interested in. Once you have mastered the principles of the first part, switching languages is not nearly as hard.

–Mitch

---

<div class="post-metadata">

**Author:** ![Knead](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/knead/32/66196_2.png) [@Knead](https://discourse.mcneel.com/u/Knead)\
**Post date:** [April 6, 2018, 8:42am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/4 "2018-04-06T08:42:49Z")

</div>

I 'm very grateful to you for all your help! 😍

---

<div class="post-metadata">

**Author:** ![qythium](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/qythium/32/84125_2.png) [@qythium](https://discourse.mcneel.com/u/qythium)\
**Post date:** [April 6, 2018, 8:59am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/5 "2018-04-06T08:59:49Z")

</div>

+1 vote for Python too 🙂

For a beginner level I’d say it’s _mostly_ personal preference - both are weakly typed and with similar styles of library functions through the rhinoscript wrappers. But once you start doing more complex operations, Python is definitely more expressive and comes with more modules you can easily import and use.

(To confuse things, VB.NET which you can use in Grasshopper is a completely different language from VBScript)

You can look through samples for both languages here and decide which looks friendlier :

#### Python:

[http://developer.rhino3d.com/api/RhinoScriptSyntax/](http://developer.rhino3d.com/api/RhinoScriptSyntax/)

#### VBScript

[http://developer.rhino3d.com/api/rhinoscript/index.html](http://developer.rhino3d.com/api/rhinoscript/index.html)

Two big differences in syntax are the case sensitivity (Python’s approach is more standard among other languages, but may take a bit of getting used to) and indentation (Number of spaces at the start of a line is meaningful in Python but completely ignored in VBScript)

---

<div class="post-metadata">

**Author:** ![Knead](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/knead/32/66196_2.png) [@Knead](https://discourse.mcneel.com/u/Knead)\
**Post date:** [April 6, 2018, 9:39am UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/6 "2018-04-06T09:39:24Z")

</div>

Thank you so much. 😀

---

<div class="post-metadata">

**Author:** ![Willem](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/willem/32/554347_2.png) [@Willem](https://discourse.mcneel.com/u/Willem)\
**Post date:** [April 6, 2018, 12:57pm UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/7 "2018-04-06T12:57:55Z")

</div>

I also advice you go for Python.

Begin here : [http://developer.rhino3d.com/guides/rhinopython/primer-101/](http://developer.rhino3d.com/guides/rhinopython/primer-101/)

notice there is also a PDF document for the primet-101:  
[http://download.rhino3d.com/IronPython/5.0/RhinoPython101/](http://download.rhino3d.com/IronPython/5.0/RhinoPython101/)

Any questions do post them at the scripting section of discource:  
[https://discourse.mcneel.com/c/scripting](https://discourse.mcneel.com/c/scripting)  
don’t hesitate to ask it’s a great community that is eager to help!

Good luck!  
-Willem

---

<div class="post-metadata">

**Author:** ![Knead](https://sea3.discourse-cdn.com/mcneel/user_avatar/discourse.mcneel.com/knead/32/66196_2.png) [@Knead](https://discourse.mcneel.com/u/Knead)\
**Post date:** [April 6, 2018, 2:28pm UTC](https://discourse.mcneel.com/t/python-or-visual-basic/59822/8 "2018-04-06T14:28:52Z")

</div>

Yeh! 🕶  
Thank you.
