Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Gambinoh en 14 Octubre 2016, 03:44 am



Título: Diferencias entre C y C#
Publicado por: Gambinoh en 14 Octubre 2016, 03:44 am
¿Qué diferencias existen entre C y C# (C sharp).

Según tengo entendido la sintaxis es casi la misma, solo que C# ha sido desarrollado por Microsoft y ¿es un lenguaje propietario? ¿Qué opinión os merece en cuanto a utilidad y curva de aprendizaje? Dicen que es más fácil de aprender que C.


Título: Re: Diferencias entre C y C#
Publicado por: furciorifa en 14 Octubre 2016, 05:25 am
En cuanto la sintaxis se parece más a Java ya que es OOP y además tiene muchas diferencias C# de C ya que C# es lenguaje exclusivo de Windows, aunque se puede programar en Linux con MonoDevelop, pero es muy arduo y no te da 100% flexibilidad, C es un lenguaje de bajo nivel y C# es de alto nivel.


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 14 Octubre 2016, 15:31 pm
¿Qué diferencias existen entre C y C# (C sharp).

Según tengo entendido la sintaxis es casi la misma, solo que C# ha sido desarrollado por Microsoft y ¿es un lenguaje propietario? ¿Qué opinión os merece en cuanto a utilidad y curva de aprendizaje? Dicen que es más fácil de aprender que C.

Más allá del lenguaje que es C#, es el ambiente de trabajo con visual studio, el cual ayuda demasiado a un desarrollador en los proyectos de trabajo por su flexibilidad, escalabilidad y compatibilidad en multiples ambientes de trabajo en diferentes metodologias (por ejemplo, C# puede usarse para programas de en consola/terminales, windows forms, ambientes moviles, ambientes web (web forms, mvc, CMS, web services) y varias cosas más (APIs).

Yo veo a c# como una evolución de C++ en ambientes de trabajo para este tipo de recursos.

C++ también es una herramienta poderosa, pero su perfil se ha mantenido para ambientes educativos y profesionales para usos exclusivos como linux o software propietario como desarrollo de juegos (unreal es un gran ejemplo de como puede usarse C++).

Diferentes, uy pues son demasiadas, ya seria analizar la sintaxis y los estandares que se utilizan dependiendo del compilador y debug y ambientes y esto y aquello.

Para mi la diferencia principal es que C++ es un poco más intuitivo y difuso en algunas cosas, por ejemplo, aunque es una evolución de C, usando Objetos para metodología de alto nivel, realmente uno se acostumbra más a C# en el trabajo con Objetos y Clases. Pero ya es por ambientes de trabajo, ya que comparar Lenguajes de programación uno tiene la tendencia a comparar IDE, SDK y librerias que se usan en conjunto con esos lenguajes de programación.

no quiero decir falacias, solo estoy contando una experiencia meramente empirica y prágmatica, yo soy un simple desarrollador junior, que trabaja con Visual Studio (solo C#, basic apesta) y que viene aquí a este foro a hacer pequeñas rutinas de C/C++ a modo de distracción (aunque me sigue jodiendo el tema de punteros jajajaja, pero vamos poco a poco), y debo decir que hoy en día, Visual Studio es simplemente la mejor herramienta de trabajo, y puede que se pueda usar Visual C++ en este ambiente, pero realmente funciona mejor con C#, simplemente son inseparables.


Título: Re: Diferencias entre C y C#
Publicado por: Gambinoh en 14 Octubre 2016, 21:55 pm
dato000, ¿me podrías poner una serie de ejemplos de programas escritos en C#?

Digo programas conocidos, como Emule, VLC, Firefox, Thunderbird, Notepad++, CCleaner, KeePass, Avidemux, TeamViewer, o apps de móvil. 


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 15 Octubre 2016, 00:25 am
dato000, ¿me podrías poner una serie de ejemplos de programas escritos en C#?

Digo programas conocidos, como Emule, VLC, Firefox, Thunderbird, Notepad++, CCleaner, KeePass, Avidemux, TeamViewer, o apps de móvil. 

(https://nickit.com.br/wp-content/uploads/2014/10/j_watt.jpg)

No se como tomarme esa petición, si seriamente, si de risa, si de lastima, o si de rabia...  :¬¬ :¬¬ :¬¬ :¬¬ :¬¬

Voy a intentar ser diplomatico en mi respuesta simplemente diciendo, busca los ejemplos que quieras, san google es la respuesta.

Solo mira como hacer un hola mundo con un compilador gcc o cywin, comparalo con el compilador de visual studio, en cualquiera de sus versiones y sabores, y notaras la diferencia.


Título: Re: Diferencias entre C y C#
Publicado por: ivancea96 en 15 Octubre 2016, 13:39 pm
Las diferencias entre C y C++ son, esencialmente, una librería estándar más amplia y programación orientada a objetos. (Digo esto, porque C# es más parecido a C++ que a C)

Luego. C# no es un lenguaje compilado como C++. Este se pasa a un lenguaje intermedio, como Java.
C# trabaja sobre la plataforma .NET, igual que VisualBasic.NET o F#. Esta es su mayor diferencia.

Luego, ¿programas en C#? Simplemente busca programas .NET. Estos programas fueron hechos en C#, VB.NET u otros de la plataforma. Pero el resultado es prácticamente el mismo. (Entre VB y C#, por ejemplo, cambia poco más que la sintaxis del lenguaje)

Si utilizas Windows 10 (PC o Phone) (o Windows 8.1), los programas de la Windows Store (al menos en su mayoría), son .NET.
Se está extendiendo mucho el uso de .NET, así que por cada programa "normalmente" compilado que veas, te encontrarás uno .NET. Por ejemplo, Unity utiliza C# (al menos, es una posibilidad dentro del engine), para programar sus programas y juegos.


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 15 Octubre 2016, 14:51 pm
Luego. C# no es un lenguaje compilado como C++. Este se pasa a un lenguaje intermedio, como Java.
C# trabaja sobre la plataforma .NET, igual que VisualBasic.NET o F#. Esta es su mayor diferencia.

Luego, ¿programas en C#? Simplemente busca programas .NET. Estos programas fueron hechos en C#, VB.NET u otros de la plataforma. Pero el resultado es prácticamente el mismo. (Entre VB y C#, por ejemplo, cambia poco más que la sintaxis del lenguaje)

La sintaxis entre C# con Basic es terriblemente diferente, tanto que cambia completamente el esquema de trabajo, odio basic con todas mis fuerzas, es difuso y actualmente las librerias .NET no ofrecen un total adaptabilidad a los nuevos paradigmas de trabajo, un ejemplo perfecto es MVC, no conozco a nadie, repito, a nadie que use esta tecnologia con Basic, simplemente porque su trabajo se volveria una pesadilla al usar ese lenguaje, lo mismo ocurre al usar otros lenguajes interpretados que pueden soportar .NET como F# o Visual C++, su uso solo esta limitado a ciertas tecnologias y ambientes de desarrollo.



Título: Re: Diferencias entre C y C#
Publicado por: ivancea96 en 15 Octubre 2016, 15:58 pm
La sintaxis entre C# con Basic es terriblemente diferente, tanto que cambia completamente el esquema de trabajo, odio basic con todas mis fuerzas, es difuso y actualmente las librerias .NET no ofrecen un total adaptabilidad a los nuevos paradigmas de trabajo, un ejemplo perfecto es MVC, no conozco a nadie, repito, a nadie que use esta tecnologia con Basic, simplemente porque su trabajo se volveria una pesadilla al usar ese lenguaje, lo mismo ocurre al usar otros lenguajes interpretados que pueden soportar .NET como F# o Visual C++, su uso solo esta limitado a ciertas tecnologias y ambientes de desarrollo.

No digo que sea diferente. Digo que ambos terminan en CIL, para .NET. Con ambos se puede hacer lo mismo, salvando la diferente sintaxis y diferentes estructuras que tiene cada uno.
Cada lenguaje en su momento, y si alguien prefiere uno frente a otro, tendrá sus razones. Ninngún lenguaje es 'malo', simplemente tienen sus limitaciones y sus ventajas. Y cada uno le sabrá sacar lo mejor de cada parte.


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 15 Octubre 2016, 21:39 pm
Ninngún lenguaje es 'malo'

Eso es porque nunca te ha tocado usar Fortran, que pesadilla, o que decepción python, no sirve para nada.


Título: Re: Diferencias entre C y C#
Publicado por: engel lex en 15 Octubre 2016, 21:42 pm
python seamos sinceros, es un dolor de ##### algunas veces con el asunto de la identación (nada que un editor de codigo decente como sublime no resuelva), pero para hacer scripts es muy versatil y potente (en linux sobre todo lo segundo)...


Título: Re: Diferencias entre C y C#
Publicado por: ivancea96 en 16 Octubre 2016, 00:33 am
Eso es porque nunca te ha tocado usar Fortran, que pesadilla, o que decepción python, no sirve para nada.

He usado FORTRAN, y es un lenguaje como otro cualquiera ._.
Y Python, pues es un lenguaje abstante especial. El tema de controlar los ámbitos con identación es fantástico y obliga a identar bien. Es como si a otro lenguaje le quitas las llaves y los BEGIN/END. Queda identado, igual que Python. Y por linea de comandos, es bastante veloz para necesidades puntuales (sea cual sea el lenguaje que manejes).


Título: Re: Diferencias entre C y C#
Publicado por: Poyoncio en 16 Octubre 2016, 01:03 am
python seamos sinceros, es un dolor de ##### algunas veces con el asunto de la identación (nada que un editor de codigo decente como sublime no resuelva), pero para hacer scripts es muy versatil y potente (en linux sobre todo lo segundo)...
Eso es porque nunca te ha tocado usar Fortran, que pesadilla, o que decepción python, no sirve para nada.
Yo aprendi python como primer lenguaje y no he tenido ningun problema con la identacion en ningun otro lenguaje, son buenos modales que todo programador deberia de tener.
Respecto a lo de que no sirve para nada, no lo entiendo, es multiplataforma, con unas librerias completas y documentadas como(casi) las de java y es bastante veloz para ser interpretado. Para lo que viene siendo pentesting es de los lenguajes mas usados y utiles. Escribes un socket en 2 lineas y lo que viene siendo exploiting de lo mejorcito, incluso tienes decenas de librerias para depurar codigo asm con 4 ordenes, igual es que tu no tienes esas necesidades

Saludos


Título: Re: Diferencias entre C y C#
Publicado por: tincopasan en 16 Octubre 2016, 02:41 am
No creo que python o algún otro lenguaje no sirvan para nada! solo el que los usa.


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 16 Octubre 2016, 03:51 am
Ok buen punto, lo de linux, soy usuario linux, se que hay scripts que trabajan bien para el kernel.

Pero para un desarrollador promedio, diganme que tiene utilidad python o fortran, el primero es difuso para ponerlo con una funcionalidad que requiere un proyecto de categoria, y el segundo es tan rematadamente antiguo y poco dado a soporte que es realmente una pesadilla.

Uds hablan como que cualquier lenguaje para un desarrollador sirve para todo como una herramienta funciona para un trabajador. Pero uds estan siendo bastante pero bastante obtusos, decir ese tipo de falacias es algo totalmente absurdo.

Entiendo lo que dicen también sobre el perfil de desarrollo, y es ahi mismo donde C# tiene un gran poder, pues ha evolucionado de una manera que puede aplicarse en multiples perfiles de desarrollo.

Pentesting y asm son ambientes demasiado diferentes para relacionarlos en este tema. El tema de sockets, de que carajos hablas?? dos lineas??? por favor...

Código
  1. class mysocket:
  2.    '''demonstration class only
  3.      - coded for clarity, not efficiency
  4.    '''
  5.  
  6.    def __init__(self, sock=None):
  7.        if sock is None:
  8.            self.sock = socket.socket(
  9.                socket.AF_INET, socket.SOCK_STREAM)
  10.        else:
  11.            self.sock = sock
  12.  
  13.    def connect(self, host, port):
  14.        self.sock.connect((host, port))
  15.  
  16.    def mysend(self, msg):
  17.        totalsent = 0
  18.        while totalsent < MSGLEN:
  19.            sent = self.sock.send(msg[totalsent:])
  20.            if sent == 0:
  21.                raise RuntimeError("socket connection broken")
  22.            totalsent = totalsent + sent
  23.  
  24.    def myreceive(self):
  25.        chunks = []
  26.        bytes_recd = 0
  27.        while bytes_recd < MSGLEN:
  28.            chunk = self.sock.recv(min(MSGLEN - bytes_recd, 2048))
  29.            if chunk == '':
  30.                raise RuntimeError("socket connection broken")
  31.            chunks.append(chunk)
  32.            bytes_recd = bytes_recd + len(chunk)
  33.        return ''.join(chunks)
  34.  

Simplemente horrible, es como ver basic.
Y eso que esta documentado en la wiki oficial. Y eso que estamos hablando de simplemente abrir un canal para el paso de bytes en un solo puerto, en IPv4, en v6 es mucho peor.

De fortran no quiero ni hablar, recordar esos días en los que tuve que entregar una pequeña tarea de estadistica en ese horrendo lenguaje hace que lo considere de lejos el peor lenguaje de programación.



Título: Re: Diferencias entre C y C#
Publicado por: Poyoncio en 16 Octubre 2016, 11:29 am
Pero para un desarrollador promedio, diganme que tiene utilidad python o fortran, el primero es difuso para ponerlo con una funcionalidad que requiere un proyecto de categoria, y el segundo es tan rematadamente antiguo y poco dado a soporte que es realmente una pesadilla.
Antiguo?? Poco soporte?? Mejor no lo comento, ahi demuestras lo poco que sabes de python

Entiendo lo que dicen también sobre el perfil de desarrollo, y es ahi mismo donde C# tiene un gran poder, pues ha evolucionado de una manera que puede aplicarse en multiples perfiles de desarrollo.
Si claro... Teniendo en cuenta que C# es mas lento que python y que no es multiplataforma dudo que sea mas versatil que python...
PD: No nos engañemos con que C# es multiplataforma... Sabemos todos que si pasas algo a linux peta por todos lados. Python no hace falta ni cambiar una linea de codigo para pasarlo a linux sin errores.
Pentesting y asm son ambientes demasiado diferentes para relacionarlos en este tema.
Pero ya sirve para algo no? Pentesting y exploiting es un campo bastante extenso, python tambien sirve para web, django esta siendo de los frameworks mas utilizados hoy en dia.


 sockets, de que carajos hablas?? dos lineas??? por favor...

Me vuelves a mostrar que no tengas ni idea de python

Código
  1. import socket
  2.  
  3. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Crear socket IPv4
  4. s.connect(("localhost", 8080)) #Direccion, puerto
  5.  
  6. s.sendall('Hello, world') #Enviar "Hola mundo"
  7.  
  8. s.close() #Cerrar socket
  9.  
  10.  
Y eso que esta documentado en la wiki oficial. Y eso que estamos hablando de simplemente abrir un canal para el paso de bytes en un solo puerto, en IPv4, en v6 es mucho peor.

La libreria socket viene incluida por defecto en python, y nose en que wiki miras tu
https://docs.python.org/3/library/socket.html
Para ipv6 solo sambias AF_INET por AF_INET6
Con 4 lineas mas puedes montar un server asincrono incluso.


Resumiendo; que hay que haber programado "minimamente" en python para pdoer criticarlo, los prejuicios no son buenos. Te he demostrado de sobras que estas equivocado, si no quieres aceptarlo es tu problema, dilo en cualquier otro foro y se reiran fuertemente. No voy a seguir perdiendo el tiempo en una discrusion que no llega a ningun lado, para eso esta el foro libre.

Saludos


Título: Re: Diferencias entre C y C#
Publicado por: tincopasan en 16 Octubre 2016, 16:33 pm
coincido con Poyoncio  y además:
Citar
Pero para un desarrollador promedio, diganme que tiene utilidad python
pues como ya dije, depende de que quieran lograr o de las capacidades del "desarrollador"
python se utiliza mucho, pero claro no es para cualquier gil que abandona a la primera .


Título: Re: Diferencias entre C y C#
Publicado por: dato000 en 17 Octubre 2016, 03:01 am
Antiguo?? Poco soporte?? Mejor no lo comento, ahi demuestras lo poco que sabes de python

Hablaba de fortran  :¬¬ :¬¬ :¬¬

Si claro... Teniendo en cuenta que C# es mas lento que python y que no es multiplataforma dudo que sea mas versatil que python...

PD: No nos engañemos con que C# es multiplataforma... Sabemos todos que si pasas algo a linux peta por todos lados. Python no hace falta ni cambiar una linea de codigo para pasarlo a linux sin errores.Pero ya sirve para algo no? Pentesting y exploiting es un campo bastante extenso, python tambien sirve para web, django esta siendo de los frameworks mas utilizados hoy en dia.

Es multiplataforma, Escritorio, Web, Movil??? que es crees que todo se limita a windows Vs Linux???


Me vuelves a mostrar que no tengas ni idea de python

Código
  1. import socket
  2.  
  3. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #Crear socket IPv4
  4. s.connect(("localhost", 8080)) #Direccion, puerto
  5.  
  6. s.sendall('Hello, world') #Enviar "Hola mundo"
  7.  
  8. s.close() #Cerrar socket
  9.  
  10.  
La libreria socket viene incluida por defecto en python, y nose en que wiki miras tu
https://docs.python.org/3/library/socket.html
Para ipv6 solo sambias AF_INET por AF_INET6
Con 4 lineas mas puedes montar un server asincrono incluso.

Un hola mundo dista muchisimo de un uso practico...aqui el que esta demostrando cierta prepotencia e ignorancia por su parcialidad hacia determinado lenguaje de programación es otro  :silbar: :silbar:

Resumiendo; que hay que haber programado "minimamente" en python para poder criticarlo, los prejuicios no son buenos. Te he demostrado de sobras que estas equivocado, si no quieres aceptarlo es tu problema, dilo en cualquier otro foro y se reiran fuertemente. No voy a seguir perdiendo el tiempo en una discrusion que no llega a ningun lado, para eso esta el foro libre.

Saludos

Esas demostraciones solo son patologías, si se siguen riendo que se rian, da igual, quien lo usa es quien lo usa, que sigan con fanboysmo, no tengo la culpa de que prefieran usar una carreta con yegua a usar un avión, va en cada quien. Realmente ver ese racionamiento mediocre de "porque yo lo digo lo demuestro y tengo la razón y todo el mundo esta caga***la menos yo" demuestra lo obtusos y arrogantes que son algunos trolls del foro.

No lo culpo, yo soy así en otros lados, pero aquí particularmente en este foro, me gusta intentar ser serio, lo intento, pero siempre aparece algún pendejo a reventar los huevos.

Solicito que cierren el tema, se ha perdido toda la gracia, ni siquiera hablamos de C# ni C.


Título: Re: Diferencias entre C y C#
Publicado por: Poyoncio en 17 Octubre 2016, 16:06 pm
aqui el que esta demostrando cierta prepotencia e ignorancia por su parcialidad hacia determinado lenguaje de programación es otro  :silbar: :silbar:
que pesadilla, o que decepción python, no sirve para nada.

Anda que tu, vuelve a leer tus incisos. Eres el unico que has despreciado a algun lenguaje :-*


Es multiplataforma, Escritorio, Web, Movil??? que es crees que todo se limita a windows Vs Linux???

Es multiplataforma, puede ser usado de escritorio (parte de linux esta en python y muchos programas de escritorio estan escritos en python), web tienes django y mobil tienes PyMob, que mas quieres que te demuestre????
Un hola mundo dista muchisimo de un uso practico...
Te he puesto un Hola mundo porque era lo que venia en la documentacion y he hecho un copia pega, de todas formas, te puse un ejemplo, no un programa, aunque si quieres te paso alguno para que veas  :xD :xD :xD No te quedan ni argumentos para criticar a python. Que sera lo proximo, criticar mi ortografia?? :xD


no tengo la culpa de que prefieran usar una carreta con yegua a usar un avión, va en cada quien. Realmente ver ese racionamiento mediocre de "porque yo lo digo lo demuestro y tengo la razón y todo el mundo esta caga***la menos yo" demuestra lo obtusos y arrogantes que son algunos trolls del foro.
No considero a C# como una carreta ni a python, me parecen dos buenos lenguajes, simplemente defiendo, que python no es tan malo como argumentas.


No lo culpo, yo soy así en otros lados, pero aquí particularmente en este foro, me gusta intentar ser serio, lo intento, pero siempre aparece algún pendejo a reventar los huevos.

Solicito que cierren el tema, se ha perdido toda la gracia, ni siquiera hablamos de C# ni C.

SI algo yo tengo que no me falta, se llama respeto, seras mejor programador que yo y todo lo que quieras, pero te falta el respeto, no se que es peor.
Y como bien dices (la unica cosa logica que has dicho en todo este hilo) porfavor cierren este tema, antes de que vuelva a decir chorradas y a recurrir a criticas sin ningun tipo de argumento

PD: Yo salte en este post, por los comentarios que pusisteis,yo  respeto a C#, Fortran y todos los demas lenguajes, considero que ninguno puede ser despreciado, incluso te respeto a ti y a todos los programadores que aludan a argumentos sin sentido.

Saludos y espero que sigas con C# y si puede ser que incluso intentes aprender python, te sorprendera y entenderas porque lo defiendo