Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: AlbertoBSD en 5 Marzo 2022, 19:49 pm



Título: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 19:49 pm
No se ofendan ni se enojen es titulo es clickbait, me encanta utilizar C tengo usándolo varios años (bastantes) y aun sigo aprendiendo cosas nuevas. C++ aun que conozco mucho de la teoria de las clases, me falta mucha practica, aun lo estoy aprendiendo, no termino de acostumbrándome a las nuevas clases de  estructuras de datos que ya tienen casi todo implementado.

Digo casi todo, por que aunque en C me gusta implementar todo desde 0, entiendo que en el mundo laboral no tendrás tiempo de hacer todo eso así que lo ideal seria utilziar C++ con un framwork ya trabajado y depurado por otros o en su defecto otro lenguaje mas friendly....

Para practicar C++ estoy haciendo muchos ejercicios de programación y también resolviendo algunos capture the flag en linea, pero se me presenta el siguiente problema y creo que se seguirá presentando.:

aunque la clase string ya esta muy depurada y implementada desde hace años, aun no tiene por defecto una funcion trim..... DE VERDAD?

Siendo tan facil utilizar en JAVA u otro lenguaje

Código
  1. s.trim()

PHP

Código
  1. trim(string $string, string $characters = " \n\r\t\v\x00"): string

Buscando en google me encuentro con que hay que implementar muchas cosas desde 0 aun ya teniendo

https://www.techiedelight.com/trim-string-cpp-remove-leading-trailing-spaces/
https://stackoverflow.com/questions/216823/how-to-trim-a-stdstring

Ok lo agrego no pasa nada.

En un capture te flag necesito hacer base64 encode y decode ... ¿Que creen? No hay una p**a funcion estandar para ello

Buscando en linea:

https://stackoverflow.com/questions/180947/base64-decode-snippet-in-c
https://renenyffenegger.ch/notes/development/Base64/Encoding-and-decoding-base-64-with-cpp/index

Siendo que también otros lenguajes ya lo tiene ahí listo para usar...

Código
  1. import base64
  2. base64_bytes = base64.b64encode(message_bytes)
  3.  

En C tienes que implementarlo desde 0 o depender de librerías externas.... si lo se, nada me cuesta agregar la librería y usarla... va no hay queja lo hago y listo, aun asi me sorprende que C++ no tenga ciertas cosas que ya están implementadas amplia-mente en otros lenguajes mas recientes que el mismo C++

Y esto solo es es mi primera hora que empezando a migrar mis códigos de C a C++

Esta es la razón por la que C++ no es tan popular, no se diga C.

En otros lenguajes como python o Java muchas veces no te tienes que preocupar por la asignación de memoria o la inicialización de ciertas variables entre otras cosas.

Eso es todo solo quería desahogarme un poco, seguire utilizando C/C++.. si alguien mas puede compartir su opinión, agrego una pregunta para abrir debate:

¿debería de enfocarme en python u otro lenguaje diferente a C++ en 2022?

Saludos!


Título: Re: Me cago en C/C++
Publicado por: MAFUS en 5 Marzo 2022, 20:00 pm
A mi lo que me revienta es que sigan designando el par C/C++ como si fueran a ser la misma cosa o hermanos o primos, si quieres, cuándo ya son dos cosas distintas sobre todo hablando de los últimos estándares. O se habla de C o se habla de C++. Y sí. Me gusta C y odio C++, para trabajar con clases hay mejores lenguajes.


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 20:08 pm
Va MAFUS no te molestes tanto, si en el titutlo los puse juntos, pero claramente hablo de ellos de forma separada.


Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 20:27 pm
y seguro que aprenderá antes. No es difícil, es alto nivel. Imagina bajo nivel, y cada cpu una forma de hablar.

Empieza con estructura de datos y algoritmos, empieza por python para entender programación y después
++

== edit ==
No se ofendan

no es mi intención, en principio perdoneme

¿les ha dicho que conoce el paradigma de la programación orientada objetos y no la conoce? usted sabe utilizar los objetos

== edit++ ==
no mires C++ como C y lo verás como Java, es muy sencillo entenderte así, busca lo mismo.


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 20:34 pm
Empieza con estructura de datos y algoritmos, empieza por python para entender programación y después
++

Bro, tengo años usando C y soy muy bueno en ello, puedo escribir casi todas las estructuras de datos en C desde 0, pilas, colas, listas,arboles, grafos etc... algoritmos de ordenamiento de  búsqueda etc.. ya domino esa parte.

Python es un asco de lenguaje es muy lento tal vez el mas lento de todos, no digo que sea malo, para principiantes esta bien y como lo mencione en el primer post tiene muchas las facilidades por que ya casi todas las funciones estan implementadas y lista para ser llamadas.

El punto del post es por que C++ siendo un lenguaje mas robusto y completo, aun tiene deficiencias en las clases que no implementan las funciones que otros lenguajes ya implementan.

Saludos!


Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 20:55 pm
es que culpas a creaciones con C++ no ves el paradigma.

== edit ==
a lo mejor eso creado con c++ lo hace mejor :-P

greetings


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 21:15 pm
Como lo comente en el primer post, si tengo que agregarlo en el código como función aparte al estilo C o  extender una clase existente en C++ lo hago no tengo problema con eso.

No estoy culpando a nadie, simplemente me sorprender que aun no estén implementadas algunas funciones en las bibliotecas de funciones estándar de C++ funciones que yo consideraría básicas y otros lenguajes ya implementan, todas estas funciones de las que hable la tengo ya implementadas en C, ya sea desde 0 o utilizando algun bibliotecas ya existente


Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 21:28 pm
funciones que yo consideraría básicas

amigo, te lo digo por ello. Eso te lo crees tú. Lo de python lo decía por empezar por el principio, paso a paso. Sin prisas.

https://www.cplusplus.com/reference/string/string


Título: Re: Me cago en C/C++
Publicado por: MAFUS en 5 Marzo 2022, 21:29 pm
Va MAFUS no te molestes tanto, si en el titutlo los puse juntos, pero claramente hablo de ellos de forma separada.
No lo digo por ti, sino por el mundo entero, jejeje.


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 21:44 pm
No lo digo por ti, sino por el mundo entero, jejeje.

jajajaja, si es cierto la gran mayoria lo ve asi.

Eso te lo crees tú

A que te refieres?

https://www.cplusplus.com/reference/string/string

OK muestra donde esta trim?

Saludos!


Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 22:00 pm
A que te refieres?

tu queja del lenguaje va referida a sus objetos y son creaciones, librerías creadas. Otras cosas lo puden hacer mejor, sin duda, creadas con codigo c

quiero decir también que no conoces las funciones frnd (que no llegan a ser otra cosa que utilizamos, sus creaciones dentro de librerías, te gusta fijarte en el alto nivel, en el entrelazado, pero llegas a C, sin ello eso no está, o sería más complicado, como las herramientas creadas con C que permiten otros lenguajes)

has ignorado https://www.cplusplus.com/reference/string/string/length]length[/url], demostrando que no lo conoces string. Hay mucho que estudiar, para decir que no.


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 22:16 pm
No lees nada de lo que escribo verdad? Lo vuelvo a repetir

Simplemente me sorprender que aun no estén implementadas algunas funciones en las bibliotecas de funciones estándar de C++ funciones que yo consideraría básicas y otros lenguajes ya implementan



Esta es mi función trim que ya tengo implementada en C y con algunos cambios mínimos puedo incluir para strings de c++.

Código
  1. char *ltrim(char *str, const char *seps) {
  2. size_t totrim;
  3. if (seps == NULL) {
  4. seps = "\t\n\v\f\r ";
  5. }
  6. totrim = strspn(str, seps);
  7. if (totrim > 0) {
  8. size_t len = strlen(str);
  9. if (totrim == len) {
  10. str[0] = '\0';
  11. }
  12. else {
  13. memmove(str, str + totrim, len + 1 - totrim);
  14. }
  15. }
  16. return str;
  17. }
  18.  
  19. char *rtrim(char *str, const char *seps) {
  20. int i;
  21. if (seps == NULL) {
  22. seps = "\t\n\v\f\r ";
  23. }
  24. i = strlen(str) - 1;
  25. while (i >= 0 && strchr(seps, str[i]) != NULL) {
  26. str[i] = '\0';
  27. i--;
  28. }
  29. return str;
  30. }
  31.  
  32. char *trim(char *str, const char *seps) {
  33. return ltrim(rtrim(str, seps), seps);
  34. }
  35.  


has ignorado https://www.cplusplus.com/reference/string/string/length]length[/url], demostrando que no lo conoces string. Hay mucho que estudiar, para decir que no.

No no lo ignore claramente te pregunte que donde esta la funcion trim


La funcion remove que pusiste remueve todas las coincidendias. La funcion trim no.

Ademas como lo comente no solo es eso sino tambien los encode y decode de varios chartsets tienene que implementarse  cosas que en otros lenguajes ya estan implementados.

php adipto

Eso que significa? puse ejemplos de lenguajes como PHP, Java, Python para indicar que ahi ya estaban implementados de forma estandar.

Ya doy por terminado el tema ya que nadie contesto la única pregunta que hice en mi post

Código:
¿debería de enfocarme en python u otro lenguaje diferente a C++ en 2022?




Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 22:30 pm
claramente te pregunte que donde esta la funcion trim

mientrás leí (que no leo bien) creí leer length sorry ...

Esta es mi función trim que ya tengo implementada en C y con algunos cambios mínimos puedo incluir para strings de c++.

Código
  1. char *ltrim(char *str, const char *seps) {
  2. size_t totrim;
  3. if (seps == NULL) {
  4. seps = "\t\n\v\f\r ";
  5. }
  6. totrim = strspn(str, seps);
  7. if (totrim > 0) {
  8. size_t len = strlen(str);
  9. if (totrim == len) {
  10. str[0] = '\0';
  11. }
  12. else {
  13. memmove(str, str + totrim, len + 1 - totrim);
  14. }
  15. }
  16. return str;
  17. }
  18.  
  19. char *rtrim(char *str, const char *seps) {
  20. int i;
  21. if (seps == NULL) {
  22. seps = "\t\n\v\f\r ";
  23. }
  24. i = strlen(str) - 1;
  25. while (i >= 0 && strchr(seps, str[i]) != NULL) {
  26. str[i] = '\0';
  27. i--;
  28. }
  29. return str;
  30. }
  31.  
  32. char *trim(char *str, const char *seps) {
  33. return ltrim(rtrim(str, seps), seps);
  34. }
  35.  


Título: Re: Me cago en C/C++
Publicado por: .xAk. en 5 Marzo 2022, 23:02 pm
A que te refieres?

Culpa del lenguaje. Estás en lo integrado.


Título: Re: Me cago en C/C++
Publicado por: AlbertoBSD en 5 Marzo 2022, 23:09 pm
Ya asi dejalo. ya se devirtuo el tema.

Lo mencione como 3 veces

Que a mi opinion las funciones ya deberian de estar implementadas, pero es mi opion...




Título: Re: Me cago en C/C++
Publicado por: Danielㅤ en 6 Marzo 2022, 20:11 pm
Hola Alberto, coincido totalmente en que un lenguaje tan robusto como C++ debería de tener funciones básicas que la gran mayoría de lenguajes lo tiene, son funciones tipo métodos muy útiles que uno mismo tiene que crearlas porque no existen.

Yo alguna vez dije en otras comunidades que en C++ hay que crear todo completamente desde cero porque funciones muy necesarias y útiles no están implementadas de forma nativa en ese lenguaje y que debería estarlo porque son funciones muy básicas que todo programador va a utilizar en algún momento.

Yo en mi época de programador he aprendido Python y en algún momento me he interesado por aprender C++, en el aprendizaje me he empezado a dar cuenta de que en C++ prácticamente hay que crear todo desde cero, casi cualquier función que está implementada de forma nativa en otros lenguajes simplemente en C++ no lo está y uno mismo tiene que crearla desde cero lo cuál por un lado es bueno porque uno puede aprender a crearla y conocer internamente la estructura de operaciones que realiza la función para llegar al resultado final pero por otro lado puede ser una traba una complicación, porque llevaría tiempo crear esas funciones básicas y eso demoraría el aprendizaje ya que son funciones muy vitales que tienen que estar listas para ser usadas en cualquier momento del código.

Incluso en un momento de mí aprendizaje he pensado en crear una librería propia llamada si no mal recuerdo "funciones" y distribuirla por todos los sitios posibles porque sabía que iba a ser muy útil y muy buscada por los programadores justamente porque las funciones de las que comentas Alberto no existían en aquel entonces y aún siguen faltando.

Ese tipo de funciones básicas tipo método pero muy útiles ya deberían existir a esta altura de forma nativa en el propio lenguaje y por lo que veo aún siguen faltando, esa es una de las razones por las que no he querido continuar con C++.

Lamentablemente no he podido crear esa librería con ese pack de funciones útiles porque he abandonado antes el lenguaje pero si me hubiese gustado que hasta hoy en día exista y sea muy utilizada, de hecho esas funciones iban a ser todas o la gran mayoría de funciones que si existen en otros lenguajes e iban a  poder ser utilizadas de la misma forma.

En cuanto a aconsejarte de estudiar otro u otros lenguajes de programación como por ejemplo Python que lo has comentado, todo depende si estás seguro y conforme porque por lo que he leído no lo tenés bien considerado como buen lenguaje a Python, el tema es que si vos has estudiado lenguajes como C/C++ es posible que no lo veas a Python como un verdadero lenguaje -enteramente- de programación, pero es que Python utiliza la base de otros lenguajes porque nunca podrá ser mejor lenguaje que los que utiliza de base en su creación.

Además lo ves un lenguaje lento en su ejecución y procesamiento de datos y funciones, lógicamente no va a tener la velocidad de un lenguaje compilado porque es un lenguaje interpretado.
Ahora Python es muy utilizado hoy en día y va en constantes avances y mejoras.
Yo te aconsejaría que lo aprendas y en el camino del aprendizaje podrás ver si continúas o no, porque ya tendrás más conocimientos sobre ese lenguaje, es decir que vas a profundizarlo más.


Saludos