Descanse en paz, VBScript
Tags: spanish, windows, news, programming
Published: 2023-10-12 08:59:55

---
title: Descanse en paz, VBScript
published: true
description: VBScript no será ya incluido en Windows.
tags: spanish, windows, news, programming
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-10-12 08:15 +0000
---

En 1996 nacía [VBScript](https://es.wikipedia.org/wiki/VBScript), un lenguaje de script basado en **Visual Basic** para "dar vida" a las por entonces novedosas páginas web en HTML.

![VBScript en Windows](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cp9sgbytowkyvq3e4x5v.jpg)

Este lenguaje solo era soportado por **Internet Explorer**, que al menos por necesidad, también soportaba JavaScript. Su uso seguía las mismas pautas que JavaScript, como podemos ver en este ejemplo (que sería parte de un archivo HTML):

```html
<html>
<body>
<script type="text/vbscript">
    document.write("Hola desde VBScript.")
</script>
</body>
</html>
```

Este ejemplo... no podrás probarlo porque ya ni siquiera **Edge** (el antiguo) soporta **VBScript**. Pero podemos hacernos una idea, ¿no?

Lo cierto es que este no es el mejor ejemplo, porque más allá de las llamadas comunes al DOM, lo único que podremos apreciar es la falta de punto y coma (';') al final de la instrucción. En este caso, además JavaScript permitiría omitirlo, así que... vamos a por otro:

```html
<html>
<body>
<script type="text/vbscript">
    Dim nombre as String

    nombre = InputBox("Dame tu nombre:")
    document.write("Tu nombe es: " & nombre)
</script>
</body>
</html>
```

Aquí ya podemos hacernos una mejor idea sobre cómo era el lenguaje, que está fuertemente basado en **Visual Basic**. Los comentarios se marcan con el apóstrofe, como en muchas antiguas versiones de BASIC... me pregunto si funcionaría **REM** (la palabra clave para comentarios "original"). Colocar `as String` detrás de `Dim` y el nombre de la variable es opcional, ya que VBScript no es fuertemente tipado.

```html
<html>
<body>
<script type="text/vbscript">
    Function superficieCirculo(ByVal r)
       superficieCirculo = r * r * 3.14
    End Function

    Dim x

    x = InputBox("Dame un radio:")
    document.write("La superficie es: " & superficieCirculo(x))
</script>
</body>
</html>
```

Aquí tenemos un ejemplo un pelín más complejo porque involucra crear una función y tomar su resultado.

En fin, ah... ¿qué por qué ese título? VBScript ha "muerto" oficialmente (octubre de 2023). Ya no será incluido en nuevas versiones de Windows. En todo caso, si lo necesitas, podrás bajártelo e instalártelo.

La pregunta es... ¿por qué esta opción, si al fin y al cabo ya nadie lo usaba? Resutla que además de servir como lenguaje de scripting para HTML, diferentes versiones se adaptaron para la gestión del sistema operativo, y también para MS Office (**VBA**, o Visual Basic for Applications). Estas también se eliminan, ya que aunque se utilizaran bastante más, eran un problema como vector de ataque para la gente amante de virus y troyanos.

Por cierto, ya sé que te has quedado con ganas de saber cómo se hace lo mismo con **JavaScript**:

```html
<html>
<body>
<script type="text/javascript">
    function superficieCirculo(r)
    {
       return r * r * 3.14;
    }

    let x = parseInt(prompt("Dame un radio:"));

    if (x != null) {
        document.write("La superficie es: " + superficieCirculo(x));
    }
</script>
</body>
</html>
```

En fin, otro peso muerto del que Microsoft se ha deshecho... 30 años después..., no como otras compañías, que no soportan sus servicios ni diez años, ¿no Google?

EDITADO:

*¿Hay alguna forma de ejecutar VBScript? Lo cierto es que sí, hay varias.*

- **ClearScript**:

Para utilizar ClearScript, necesitas una máquina Windows y dotnet.

El proyecto **ClearScript** ofrece una forma sencilla de añadir *scripting* a una aplicación C#. En Linux, funciona el motor V8, por ejemplo, pero para **VBScript** es necesario tener Windows, pues lo que hace es exponer el intérprete.

Crea un proyecto C# y desde NuGET añade ClearScript. A partir de ahí, se puede instanciar un motor de VBScript y ejecutar instrucciones en su interior.


```c#
using Microsoft.ClearScript.Windows;


Console.WriteLine( "VBScript en .NET!!" );

// create a script engine
using (var engine = new VBScriptEngine()) {
    engine.Execute( "print \"Hola desde VBScript\"" );
}
```

- **FreeBasic**:

No se trata de ningún port the Visual Basic Script, pero lo cierto es que [**FreeBasic**](https://www.freebasic.net/) persigue una [gran compatibilidad con el antiguo **QuickBasic**](https://www.freebasic.net/wiki/CompilerQB), y por tanto es muy compatible con VBScript. ¡Por cierto, es un compilador, no un intérprete... y es multiplataforma!

```basic
DIM nombre as String

INPUT "Dame tu nombre: "; nombre
PRINT "Hola, " & nombre
```