Foros del Web » Programación para mayores de 30 ;) » Programación General »

[SOLUCIONADO] ¿Qué lenguaje debería estudiar?

Estas en el tema de ¿Qué lenguaje debería estudiar? en el foro de Programación General en Foros del Web. Muy buenas, vengo de Visual Basic 6 y no me termina de cuadrar el .NET. Lo que más me echa para atrás en este último ...
  #1 (permalink)  
Antiguo 18/03/2014, 12:52
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 7
Antigüedad: 11 años, 7 meses
Puntos: 1
¿Qué lenguaje debería estudiar?

Muy buenas, vengo de Visual Basic 6 y no me termina de cuadrar el .NET. Lo que más me echa para atrás en este último es que haya que ofuscar un pseudo-código que cualquiera puede leer.
Quiero hacer aplicaciones de escritorio compiladas, distribuirlas con su instalador, descargándola cualquiera de la web, en formato shareware. Pero de forma que no puedan leer el código fuente, al menos que no sea fácil desensamblarlo.

Creo que Java como .NET, es igualmente pseudo código ejecutado en máquina virtual, y lo estudié algo en 2009 y recuerdo que era muy lento, aún en modo consola, desesperadamente lento comparando con VB6.0

Busco algo multipropósito, BBDD, algo de gráficos, sonido, etc. aunque no para videojuegos. En principio bajo windows, rápido, que respete la propiedad intelectual y si puede migrarse más o menos fácilmente a móviles u otras plataformas sería estupendo.

Estoy instalando para verificar Qt C++ y Xojo (antiguo Real Basic) pero no están extendidos, no hay comunidad...

¿Qué recomendáis?

Un saludo y gracias
  #2 (permalink)  
Antiguo 18/03/2014, 15:15
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 3 meses
Puntos: 35
Respuesta: ¿Qué lenguaje debería estudiar?

Yo uso Python que es justamente multiproposito, las tienes todas fáciles: BBDD, gráficos, sonido, etc. Funciona en Windows perfectamente (y puedes crear archivos .exe), no es lento (y si en algún momento necesitas que sea mas rapido, siempre puedes crear extensiones en C/C++ e importarlas desde Python!), y también funciona en otras plataformas. Tiene librerías de GUI como Qt, Gtk, wxWidgets, Tkinter. No está mucho en la industria de los móviles, aunque en Android puedes hacerlo correr. En Windows Phone solo podes usar C#, VB.NET o C++ para videojuegos. En iOS usas Objective-C así que estamos en la misma. Y ni hablemos de la web, Python + Django es una bestia!

Pero claro, es un lenguaje interpretado por lo tanto si tanto te preocupa el tema de desamblarlo y eso estás en un problema (si vas a hacer aplicaciones de escritorio). Aunque te adelanto que nadie se va a privar de usar tu programa sin haber pagado porque esté hecho en C o C++.

Java nunca usé y .NET no te lo recomiendo, encerras todas tus apps en windows.

  #3 (permalink)  
Antiguo 18/03/2014, 20:04
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 7
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: ¿Qué lenguaje debería estudiar?

Cita:
Iniciado por carbon Ver Mensaje
Yo uso Python que es justamente multiproposito, las tienes todas fáciles: BBDD, gráficos, sonido, etc. Funciona en Windows perfectamente (y puedes crear archivos .exe), no es lento (y si en algún momento necesitas que sea mas rapido, siempre puedes crear extensiones en C/C++ e importarlas desde Python!), y también funciona en otras plataformas. Tiene librerías de GUI como Qt, Gtk, wxWidgets, Tkinter. No está mucho en la industria de los móviles, aunque en Android puedes hacerlo correr. En Windows Phone solo podes usar C#, VB.NET o C++ para videojuegos. En iOS usas Objective-C así que estamos en la misma. Y ni hablemos de la web, Python + Django es una bestia!

Pero claro, es un lenguaje interpretado por lo tanto si tanto te preocupa el tema de desamblarlo y eso estás en un problema (si vas a hacer aplicaciones de escritorio). Aunque te adelanto que nadie se va a privar de usar tu programa sin haber pagado porque esté hecho en C o C++.

Java nunca usé y .NET no te lo recomiendo, encerras todas tus apps en windows.

Gracias por tu rápida respuesta. La verdad es que sonaba muy bien Python hasta que leí que es interpretado. Supongo que la nueva moda de los intérpretes es porque hoy hay HW potente. Antes eran cosa de las máquinas antiguas de 8bits de los '80, todas llevaban un intérprete Basic en el firmware, como "sistema operativo" e instantáneo. Java me decepcionó con sus vergonzosos 25-30" en arrancar un miserable "Hola mundo" en un P-IV a 4GHz, frente a menos de 1" en aquellas máquinas hoy de museo.

Totalmente de acuerdo en que cualquier programa es crackeable, pero es que por ej .NET-Java o cualquier intérprete es como entregar el código fuente al cliente y Visual Studio 2010 ya trae el desensamblador incorporado como utilidad. Para la mayoría será chino, pero siempre está la figura del amigo informático o el hijo que estudia... Es como poner una puerta de cartón en casa.

Sin embargo una aplicación .EXE compilada por algún lenguaje a código máquina, no es nada legible, exige conocimientos, horas de trabajo... Yo mismo no sabría cómo piratearme una app propia en VB6 bien protegida por mí, y por el precio que vale la licencia ni me compensaría.

Saludos
  #4 (permalink)  
Antiguo 19/03/2014, 01:41
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: ¿Qué lenguaje debería estudiar?

Cita:
Iniciado por enrib72 Ver Mensaje
Muy buenas, vengo de Visual Basic 6 y no me termina de cuadrar el .NET. Lo que más me echa para atrás en este último es que haya que ofuscar un pseudo-código que cualquiera puede leer.
Quiero hacer aplicaciones de escritorio compiladas, distribuirlas con su instalador, descargándola cualquiera de la web, en formato shareware. Pero de forma que no puedan leer el código fuente, al menos que no sea fácil desensamblarlo.
Varios puntos a comentar:
- .NET no es un lenguaje de programación sino un framework que usan varios lenguajes, entre ellos C#, Visual Basic.NET, C++/CLR, etc.

- Porque en ".NET" hay ofuscar el código? En que te basas? Cualquiera puede leer el código de un programa en .NET? En cambio un programa que no están en ILASM sino en código máquina es meno legible? Bajo que premisas haces esa afirmación?

- Con .NET (o con Java, C++, ...) puedes crear un programa en versión "shareware" y con herramientas como NSIS crear instaladores independientemente de con que lenguaje se programó.

- Un programa en .NET es tan facil de descompilar como un programa "antiguo" nativo o en VB6.



Creo que las premisas que usas para la elección del lenguaje no son las apropiadas. Tienes que basarte en la curva de aprendizaje, cosas que te permitirá hacer, etc. En tu caso, viniendo de Visual Basic 6 lo más fácil sería empezar con Visual Basic. NET. Ojo, lo más fácil, pero no lo mejor. Yo personalmente optaría por .NET o por Java pero depende de a que sistemas operativos quieras acceder, etc.
__________________
Aviso: No se resuelven dudas por MP!
  #5 (permalink)  
Antiguo 19/03/2014, 09:24
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 7
Antigüedad: 11 años, 7 meses
Puntos: 1
Respuesta: ¿Qué lenguaje debería estudiar?

Cita:
Iniciado por Malenko Ver Mensaje
Varios puntos a comentar:
- .NET no es un lenguaje de programación sino un framework que usan varios lenguajes, entre ellos C#, Visual Basic.NET, C++/CLR, etc.

- Porque en ".NET" hay ofuscar el código? En que te basas? Cualquiera puede leer el código de un programa en .NET? En cambio un programa que no están en ILASM sino en código máquina es meno legible? Bajo que premisas haces esa afirmación?

- Con .NET (o con Java, C++, ...) puedes crear un programa en versión "shareware" y con herramientas como NSIS crear instaladores independientemente de con que lenguaje se programó.

- Un programa en .NET es tan facil de descompilar como un programa "antiguo" nativo o en VB6.



Creo que las premisas que usas para la elección del lenguaje no son las apropiadas. Tienes que basarte en la curva de aprendizaje, cosas que te permitirá hacer, etc. En tu caso, viniendo de Visual Basic 6 lo más fácil sería empezar con Visual Basic. NET. Ojo, lo más fácil, pero no lo mejor. Yo personalmente optaría por .NET o por Java pero depende de a que sistemas operativos quieras acceder, etc.

Gracias por responder:
- Totalmente de acuerdo, disculpa por no haberme expresado bien, cuando me referí a .NET quise decir "lenguaje Visual Basic .NET".

- Nuevamente disculpas por mi ignorancia si en algo me equivoco: estudié algo, poca cosa de VB.Net hace años, como primera opción para saltar de VB6.0, y lo que tengo entendido es que MSIL (MicroSoft Intermediate Languaje) es el lenguaje interno de .NET Framework, cercano al código máquina.
Y todos los lenguajes compatibles .NET (da igual su sintaxis) se compilan a este MSIL que es un pseudo-código propio solo entendible por la máquina virtual o framework .NET, que a su vez hace de intermediario con el microprocesador que solo entiende código máquina, ensamblador, assembler, código nativo, binario o como queramos llamarlo.
Y que la plataforma (framework) .NET, cada vez que ejecuta un .EXE de .Net, lo que ejecuta es ese pseudo-código, INTERPRETÁNDOLO cada vez al código máquina x86.

Cita:
Por qué en ".NET" hay ofuscar el código? En que te basas? Cualquiera
puede leer el código de un programa en .NET?
Obviamente para "intentar" que no me lo pirateen, al menos dificultarlo en lo posible.

Cita:
"Cualquiera puede leer el código de un programa en .NET?"
Hombre, mi abuela no, pero aunque suene duro, la respuesta es SÍ: Cualquiera, cualquier estudiante o aficionado a la programación que acaba de instalar Visual Studio (como yo novato en .Net), tendrá el Desensamblador de IL (IL DASM) en Microsoft Windows SDK Tools, del menú MS VS2010. Lo demuestro y como ej. si le arrastro un .EXE de VB6.0 me da error "exe no valid" como era previsible. En cambio si le meto un .EXE generado con VB.NET en VS2010, me da lo siguiente:

Código:
// Source File 'C:\Users\Enrique\documents\visual studio 2010\Projects\TablaMultiplicar\TablaMultiplicar\Module1.vb' 
//000003:     Sub Main()
    IL_0000:  nop
//000004:         Dim tabla As Integer
//000005:         Dim n As Integer
//000006:         Dim resultado As Integer
//000007: 
//000008:         Console.Write("Escriba la tabla de multiplicar que quiere calcular: ")
    IL_0001:  ldstr      "Escriba la tabla de multiplicar que quiere calcula"
    + "r: "
    IL_0006:  call       void [mscorlib]System.Console::Write(string)
    IL_000b:  nop
//000009:         tabla = Console.ReadLine()
    IL_000c:  call       string [mscorlib]System.Console::ReadLine()
    IL_0011:  call       int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToInteger(string)
    IL_0016:  stloc.2
//000010:         Console.WriteLine("")
    IL_0017:  ldstr      ""
    IL_001c:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_0021:  nop
//000011:         'Bucle de la tabla de multiplicar
//000012:         For n = 0 To 10
    IL_0022:  ldc.i4.0
    IL_0023:  stloc.0
//000013:             resultado = tabla * n
    IL_0024:  ldloc.2
    IL_0025:  ldloc.0
    IL_0026:  mul.ovf
    IL_0027:  stloc.1
//000014:             'Impresión en pantalla
//000015:             Console.WriteLine(" {0} x {1} = {2}", tabla, n, resultado)
    IL_0028:  ldstr      " {0} x {1} = {2}"
    IL_002d:  ldloc.2
    IL_002e:  box        [mscorlib]System.Int32
    IL_0033:  ldloc.0
    IL_0034:  box        [mscorlib]System.Int32
    IL_0039:  ldloc.1
    IL_003a:  box        [mscorlib]System.Int32
    IL_003f:  call       void [mscorlib]System.Console::WriteLine(string,
                                                                  object,
                                                                  object,
                                                                  object)
    IL_0044:  nop
//000016:         Next
    IL_0045:  nop
    IL_0046:  ldloc.0
    IL_0047:  ldc.i4.1
    IL_0048:  add.ovf
    IL_0049:  stloc.0
//000017: 
//000018:         Call salir()
//000019:     End Sub
//000020: 
//000021:     Sub salir()
//000022:         Console.WriteLine("")
//000023:         Console.WriteLine("Pulsa intro para salir...")
//000024:         Console.ReadLine()
//000025:     End Sub
//000026: 
//000027: End Module
IL_004a:  ldloc.0
    IL_004b:  ldc.i4.s   10
    IL_004d:  stloc.3
    IL_004e:  ldloc.3
    IL_004f:  ble.s      IL_0024

//000018:         Call salir()
    IL_0051:  call       void TablaMultiplicar.Module1::salir()
    IL_0056:  nop
//000019:     End Sub
    IL_0057:  nop
    IL_0058:  ret
  } // end of method Module1::Main

  .method public static void  salir() cil managed
  {
    // Code size       31 (0x1f)
    .maxstack  8
//000020: 
//000021:     Sub salir()
    IL_0000:  nop
//000022:         Console.WriteLine("")
    IL_0001:  ldstr      ""
    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_000b:  nop
//000023:         Console.WriteLine("Pulsa intro para salir...")
    IL_000c:  ldstr      "Pulsa intro para salir..."
    IL_0011:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_0016:  nop
//000024:         Console.ReadLine()
    IL_0017:  call       string [mscorlib]System.Console::ReadLine()
    IL_001c:  pop
//000025:     End Sub
    IL_001d:  nop
    IL_001e:  ret
  } // end of method Module1::salir

} // end of class TablaMultiplicar.Module1
Como se ve es una mezcla de instrucciones código máquina MSIL con sus instrucciones equivalentes, variables originales... hasta los comentarios que hice en VB.NET y a continuación el listado original de dicho código fuente. Es un sencillo ejercicio que en consola muestra la tabla de multiplicar elegida por el usuario:

Código:
Module Module1

    Sub Main()
        Dim tabla As Integer
        Dim n As Integer
        Dim resultado As Integer

        Console.Write("Escriba la tabla de multiplicar que quiere calcular: ")
        tabla = Console.ReadLine()
        Console.WriteLine("")

          'Bucle de la tabla de multiplicar
          For n = 0 To 10
            resultado = tabla * n
            
            'Impresión en pantalla
            Console.WriteLine(" {0} x {1} = {2}", tabla, n, resultado)

          Next

        Call salir()
    End Sub

    Sub salir()
        Console.WriteLine("")
        Console.WriteLine("Pulsa intro para salir...")
        Console.ReadLine()
    End Sub

End Module
En Visual Basic 6.0 tienes 2 opciones a la hora de compilar: a P-Code (Pseudo-Código más lento y creo que sí podrías recuperar el código fuente desensamblando aunque jamás usé esta opción) o a Código Nativo (Código Máquina x86, rápido, sin posibilidad de código fuente) aunque en honor a la verdad, jamás he intentado desensamblar.

Cita:
- Un programa en .NET es tan facil de descompilar como un programa
"antiguo" nativo o en VB6.
OK, de acuerdo, pero una cosa es descompilar a código máquina, que no lo entiendo ni yo a pesar de que hace ya mucho estudié y trabajé el Zilog Z80, y otra muy diferente descompilar a MSIL con el código fuente VB.NET al lado o entremezclado.

No obstante, si conoces o alquien más, alguna forma de evitar esto, alguna opción que evite el código fuente visible dentro del ejecutable distribuible, quizás en nuevas versiones de Visual Studio, yo las desconozco, bienvenidas sean. Como bien dices, un tema importante es la curva de aprendizaje y VB.NET me interesaría por eso, pero lo descarté por lo ya expuesto.

Saludos
  #6 (permalink)  
Antiguo 19/03/2014, 09:48
Avatar de Malenko
Moderador
 
Fecha de Ingreso: enero-2008
Mensajes: 5.323
Antigüedad: 16 años, 3 meses
Puntos: 606
Respuesta: ¿Qué lenguaje debería estudiar?

Cita:
Iniciado por enrib72 Ver Mensaje
Y que la plataforma (framework) .NET, cada vez que ejecuta un .EXE de .Net, lo que ejecuta es ese pseudo-código, INTERPRETÁNDOLO cada vez al código máquina x86.
Más o menos, utiliza un compilador JIT para que cuando vayas a ejecutar el código sea "en modo nativo". Es decir, que más o menos lo pasa a código máquina antes de ejecutarlo.

Es lo que usan otros lenguajes (como Java) para evitar las penalizaciones por usar bytecodes:

http://msdn.microsoft.com/en-us/libr...=vs.90%29.aspx

Cita:
Iniciado por enrib72 Ver Mensaje
Obviamente para "intentar" que no me lo pirateen, al menos dificultarlo en lo posible.
Te lo preguntaré de otra manera... tu ofuscabas el código en VB6? Piensa que cuando lo pasa a código intermedio se hacen una serie de operaciones de forma que no es posible sacar los fuentes originales de forma exacta. Puedes intuir que hacía el código pero de la misma manera que lo puedes intuir viendo un código en ensamblador x86.


Cita:
Iniciado por enrib72 Ver Mensaje
Hombre, mi abuela no, pero aunque suene duro, la respuesta es SÍ: Cualquiera, cualquier estudiante o aficionado a la programación que acaba de instalar Visual Studio (como yo novato en .Net), tendrá el Desensamblador de IL (IL DASM) en Microsoft Windows SDK Tools, del menú MS VS2010.
Antiguamente MS-DOS (y los primeros windows) tenía un programilla llamado debug.com que permitia desensamblar los ejecutables. Venía de serie con el sistema operativo. Que alguien tenga una herramienta a mano no quiere decir que tenga los conocimientos necesarios para usarla. Por ejemplo, en casa tengo llaves inglesas y eso no quiere decir que adquiera automágicamente conocimientos de lampisteria.

Por cierto, tampoco hay necesidad de usar el desensamblador de Visual Studio, hay herramientas mucho mejores al alcance de cualquiera, como por ejemplo IDA.

Cita:
Iniciado por enrib72 Ver Mensaje
Lo demuestro y como ej. si le arrastro un .EXE de VB6.0 me da error "exe no valid" como era previsible. En cambio si le meto un .EXE generado con VB.NET en VS2010, me da lo siguiente:

Código:
// Source File 'C:\Users\Enrique\documents\visual studio 2010\Projects\TablaMultiplicar\TablaMultiplicar\Module1.vb' 
//000003:     Sub Main()
    IL_0000:  nop
//000004:         Dim tabla As Integer
//000005:         Dim n As Integer
//000006:         Dim resultado As Integer
//000007: 
//000008:         Console.Write("Escriba la tabla de multiplicar que quiere calcular: ")
    IL_0001:  ldstr      "Escriba la tabla de multiplicar que quiere calcula"
    + "r: "
    IL_0006:  call       void [mscorlib]System.Console::Write(string)
    IL_000b:  nop
//000009:         tabla = Console.ReadLine()
    IL_000c:  call       string [mscorlib]System.Console::ReadLine()
    IL_0011:  call       int32 [Microsoft.VisualBasic]Microsoft.VisualBasic.CompilerServices.Conversions::ToInteger(string)
    IL_0016:  stloc.2
//000010:         Console.WriteLine("")
    IL_0017:  ldstr      ""
    IL_001c:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_0021:  nop
//000011:         'Bucle de la tabla de multiplicar
//000012:         For n = 0 To 10
    IL_0022:  ldc.i4.0
    IL_0023:  stloc.0
//000013:             resultado = tabla * n
    IL_0024:  ldloc.2
    IL_0025:  ldloc.0
    IL_0026:  mul.ovf
    IL_0027:  stloc.1
//000014:             'Impresión en pantalla
//000015:             Console.WriteLine(" {0} x {1} = {2}", tabla, n, resultado)
    IL_0028:  ldstr      " {0} x {1} = {2}"
    IL_002d:  ldloc.2
    IL_002e:  box        [mscorlib]System.Int32
    IL_0033:  ldloc.0
    IL_0034:  box        [mscorlib]System.Int32
    IL_0039:  ldloc.1
    IL_003a:  box        [mscorlib]System.Int32
    IL_003f:  call       void [mscorlib]System.Console::WriteLine(string,
                                                                  object,
                                                                  object,
                                                                  object)
    IL_0044:  nop
//000016:         Next
    IL_0045:  nop
    IL_0046:  ldloc.0
    IL_0047:  ldc.i4.1
    IL_0048:  add.ovf
    IL_0049:  stloc.0
//000017: 
//000018:         Call salir()
//000019:     End Sub
//000020: 
//000021:     Sub salir()
//000022:         Console.WriteLine("")
//000023:         Console.WriteLine("Pulsa intro para salir...")
//000024:         Console.ReadLine()
//000025:     End Sub
//000026: 
//000027: End Module
IL_004a:  ldloc.0
    IL_004b:  ldc.i4.s   10
    IL_004d:  stloc.3
    IL_004e:  ldloc.3
    IL_004f:  ble.s      IL_0024

//000018:         Call salir()
    IL_0051:  call       void TablaMultiplicar.Module1::salir()
    IL_0056:  nop
//000019:     End Sub
    IL_0057:  nop
    IL_0058:  ret
  } // end of method Module1::Main

  .method public static void  salir() cil managed
  {
    // Code size       31 (0x1f)
    .maxstack  8
//000020: 
//000021:     Sub salir()
    IL_0000:  nop
//000022:         Console.WriteLine("")
    IL_0001:  ldstr      ""
    IL_0006:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_000b:  nop
//000023:         Console.WriteLine("Pulsa intro para salir...")
    IL_000c:  ldstr      "Pulsa intro para salir..."
    IL_0011:  call       void [mscorlib]System.Console::WriteLine(string)
    IL_0016:  nop
//000024:         Console.ReadLine()
    IL_0017:  call       string [mscorlib]System.Console::ReadLine()
    IL_001c:  pop
//000025:     End Sub
    IL_001d:  nop
    IL_001e:  ret
  } // end of method Module1::salir

} // end of class TablaMultiplicar.Module1
Como se ve es una mezcla de instrucciones código máquina MSIL con sus instrucciones equivalentes, variables originales... hasta los comentarios que hice en VB.NET y a continuación el listado original de dicho código fuente. Es un sencillo ejercicio que en consola muestra la tabla de multiplicar elegida por el usuario:

[CODE]

Module Module1

Sub Main()
Dim tabla As Integer
Dim n As Integer
Dim resultado As Integer

Console.Write("Escriba la tabla de multiplicar que quiere calcular: ")
tabla = Console.ReadLine()
Console.WriteLine("")

'Bucle de la tabla de multiplicar
For n = 0 To 10
resultado = tabla * n

'Impresión en pantalla
Console.WriteLine(" {0} x {1} = {2}", tabla, n, resultado)

Next

Call salir()
End Sub

Sub salir()
Console.WriteLine("")
Console.WriteLine("Pulsa intro para salir...")
Console.ReadLine()
End Sub

End Module
Seguramente estés compilando en modo debug y con código incrustado en el ejecutable, lo que se puede configurar por configuración.



Cita:
Iniciado por enrib72 Ver Mensaje
OK, de acuerdo, pero una cosa es descompilar a código máquina, que no lo entiendo ni yo a pesar de que hace ya mucho estudié y trabajé el Zilog Z80, y otra muy diferente descompilar a MSIL con el código fuente VB.NET al lado o entremezclado.
En realidad el descompilar al final es lo mismo. Con los conocimientos son igual de entendibles ambos.


Cita:
Iniciado por enrib72 Ver Mensaje
No obstante, si conoces o alquien más, alguna forma de evitar esto, alguna opción que evite el código fuente visible dentro del ejecutable distribuible, quizás en nuevas versiones de Visual Studio, yo las desconozco, bienvenidas sean. Como bien dices, un tema importante es la curva de aprendizaje y VB.NET me interesaría por eso, pero lo descarté por lo ya expuesto.

Saludos
Revisa las opciones de compilación, seguro que estás incluyendo información de depuración en el ejecutable. Mira que no tengas ningún ".pdb" ni nada parecido, etc.
__________________
Aviso: No se resuelven dudas por MP!
  #7 (permalink)  
Antiguo 19/03/2014, 16:15
 
Fecha de Ingreso: septiembre-2012
Ubicación: Sevilla
Mensajes: 7
Antigüedad: 11 años, 7 meses
Puntos: 1
De acuerdo Respuesta: ¿Qué lenguaje debería estudiar?

Cita:
Seguramente estés compilando en modo debug y con código incrustado en el ejecutable, lo que se puede configurar por configuración.

Revisa las opciones de compilación, seguro que estás incluyendo información de depuración en el ejecutable. Mira que no tengas ningún ".pdb" ni nada parecido, etc.
OK, estaba compilando en modo Debug, lo cambio a modo Release, aunque iba igual.
También he necesitado modificar una cosa, lo dejo por si alguien más lo necesita y cambio el título:
¿Cómo configurar la compilación en VisualStudio.NET para eliminar el código fuente del programa, del interior del ejecutable .EXE que se genera al compilar y entrega a los usuarios?

Dentro del IDE, ventana Explorador de soluciones->(MiApp)TablaMultiplicar->Botón der: Propiedades->Compilar->Opciones de compilación avanzadas->Generar información de depuración=None (antes era pdb-only)

Los .pdb ya no salen en el directorio donde compila. Por fin el código fuente queda eliminado al generar el archivo .EXE de compilación.

Compilaba así por defecto, no recuerdo haber tocado nada ni sabía lo que eran los ".pdb".

Realmente ha sido un malentendido. Tengo un libro de Tim Patrick "Programación con VB2008", OReilly_McGraw-Hill, habla varias veces sobre ofuscación y la necesidad de proteger tu trabajo y tal... y los ejemplos que pone son sobre el propio código fuente VB, modificando nombres de variables y funciones. Claro luego dice que realmente la ofuscación trabaja sobre el código MSIL. Cuando miro el MSIL con el desensamblador y veo que trae el código fuente dentro... alucino. Pensé que era un problema intrínseco del lenguaje, que le hacía falta ofuscar el código fuente visible.

Ahora al quedar eliminado el código fuente ya es casi código máquina. Esto ya lo cambia todo. Si encima lo ofuscas con el Dotfuscator todavía se complicaría mucho más para los hackers, aunque tampoco me hace falta.

Muchísimas gracias por la info, me acabas de decantar a VB.NET, por la curva de aprendizaje y aplicaciones que tenemos los que venimos del VB6.0.

Saludos

Etiquetas: lenguaje, vb
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:05.