Faits:
Faits:
A. Par jugement du 28 octobre 2003, le Tribunal criminel de l'arrondissement de Lausanne a condamné X._, pour crime manqué de meurtre, menaces, faux dans les certificats, infraction à la LArm ainsi qu'infraction et contravention à la LSEE, à la peine de 9 ans de réclusion et à une amende de 300 francs, prononçant en outre son expulsion de Suisse pour une durée de 12 ans, sans sursis.
Le recours en nullité et en réforme interjeté par le condamné contre ce jugement a été écarté par arrêt du 6 avril 2004 de la Cour de cassation pénale du Tribunal cantonal vaudois.
Le recours en nullité et en réforme interjeté par le condamné contre ce jugement a été écarté par arrêt du 6 avril 2004 de la Cour de cassation pénale du Tribunal cantonal vaudois.
B. Cet arrêt retient, en substance, ce qui suit.
B.a En février 2002, X._ a proposé à B.Y._, dont il avait fait la connaissance au début de l'année, de se fiancer avec elle, ce qu'elle a accepté. Les fiançailles ont été célébrées au début avril 2002, conformément aux coutumes du Kosovo, dont tous deux sont originaires.
Par la suite, les relations entre les fiancés se sont toutefois rapidement modifiées. X._ s'est montré extrêmement jaloux et possessif, au point de chercher à éloigner sa fiancée de sa famille et même de lui imposer de choisir entre lui et sa famille. Aussi, B.Y._ a-t elle fait part à ses parents, vraisemblablement le 27 mai 2002, de son souhait de ne pas épouser X._. Le père de celle-ci, D.Y._, a alors exigé d'elle qu'elle informe par téléphone son fiancé de sa décision. Comme X._ semblait ne pas accepter l'idée d'une rupture, D.Y._ a suggéré que les deux jeunes gens et lui-même se rencontrent afin de clarifier la situation.
Lors de cette rencontre, qui a eu lieu le 29 mai 2002, D.Y._ a expliqué à X._ qu'il n'entendait pas décider pour sa fille. Cette dernière a clairement fait savoir à X._ qu'elle n'envisageait pas de l'épouser et lui a restitué divers cadeaux qu'il lui avait offerts. Prenant alors conscience de la réalité de la situation, X._ s'est emporté et a proféré des menaces à l'encontre de la famille Y._.

Le 30 mai 2002, X._ a organisé un nouveau rendez-vous avec D.Y._. A cette occasion, une discussion de cinq minutes environ a eu lieu, dont les propos exacts n'ont pu être établis, mais qui étaient toutefois virulents. X._ espérait que D.Y._ reviendrait sur la décision de sa fille ou, du moins, s'engagerait à intervenir pour qu'elle reconsidère sa décision de rompre. D.Y._ a toutefois confirmé à X._ que les fiançailles étaient définitivement rompues. Ne supportant pas d'entendre une nouvelle fois cette décision irrévocable, X._ a alors sorti un pistolet Astra 9 mm, qu'il avait dissimulé derrière son dos, et a tiré à quatre reprises sur D.Y._, à une distance de deux à quatre mètres. La victime a été atteinte par chacun des projectiles à la partie supérieure gauche du thorax, soit à proximité d'organes vitaux, mais a eu la vie sauve grâce à l'intervention rapide des secours qu'un témoin avait appelés.
B.b La cour cantonale a d'abord écarté deux griefs de nullité de l'accusé, l'un, pris d'une violation de l'art. 411 lettres h et i CPP/VD, par lequel il contestait les faits relatifs à la date de l'acquisition de l'arme et de l'annonce de la rupture des fiançailles et l'autre, pris d'une violation de l'art. 411 lettre j CPP/VD, par lequel il se plaignait d'une motivation insuffisante du jugement attaqué. Examinant ensuite les moyens de réforme de l'accusé, qui soutenait que c'est, non pas le crime manqué de meurtre, mais une mise en danger de la vie d'autrui ou, du moins, le crime manqué de meurtre passionnel qui devait être retenu et qui se plaignait en outre de n'avoir pas été mis au bénéfice d'un repentir sincère au sens de l'art. 64 CP ainsi que d'avoir été condamné à une peine excessive, elle les a également écartés.
B.b La cour cantonale a d'abord écarté deux griefs de nullité de l'accusé, l'un, pris d'une violation de l'art. 411 lettres h et i CPP/VD, par lequel il contestait les faits relatifs à la date de l'acquisition de l'arme et de l'annonce de la rupture des fiançailles et l'autre, pris d'une violation de l'art. 411 lettre j CPP/VD, par lequel il se plaignait d'une motivation insuffisante du jugement attaqué. Examinant ensuite les moyens de réforme de l'accusé, qui soutenait que c'est, non pas le crime manqué de meurtre, mais une mise en danger de la vie d'autrui ou, du moins, le crime manqué de meurtre passionnel qui devait être retenu et qui se plaignait en outre de n'avoir pas été mis au bénéfice d'un repentir sincère au sens de l'art. 64 CP ainsi que d'avoir été condamné à une peine excessive, elle les a également écartés.
C. X._ forme un recours de droit public et un pourvoi en nullité au Tribunal fédéral. Dans le premier, il se plaint d'une violation du principe "in dubio pro reo" et, dans le second, d'une violation des art. 13, 22 et 65 ainsi que 55 CP. Il conclut à l'annulation de l'arrêt attaqué, en sollicitant l'assistance judiciaire.
Le Tribunal fédéral considère en droit:
I. Recours de droit public
I. Recours de droit public
1. Invoquant une violation du principe "in dubio pro reo" découlant de la présomption d'innocence garantie par les art. 6 ch. 2 CEDH et 32 al. 1 Cst., le recourant reproche à la cour cantonale d'avoir retenu arbitrairement, au sens de l'art. 9 Cst., qu'il jouissait d'une responsabilité pleine et entière lorsqu'il a tiré sur la victime.
Aux termes de l'art. 86 al. 1 OJ, le recours de droit public n'est recevable qu'à l'encontre des décisions prises en dernière instance cantonale. Cette disposition signifie que les griefs soulevés devant le Tribunal fédéral ne doivent plus pouvoir faire l'objet d'un recours ordinaire ou extraordinaire de droit cantonal (<ref-ruling> consid. 1a).
En procédure pénale vaudoise, le grief d'arbitraire dans l'établissement des faits peut être invoqué dans le cadre d'un recours en nullité, notamment sur la base de l'art. 411 let. i CPP/VD (<ref-ruling> consid. 1c p. 259 s. et l'arrêt cité). En l'espèce, cela ressort d'ailleurs expressément du chiffre 3a/bb de l'arrêt attaqué. Or, dans son recours en nullité cantonal, le recourant s'est exclusivement plaint d'arbitraire dans l'établissement des faits en ce qui concerne la date d'acquisition de l'arme et celle de l'annonce de la rupture des fiançailles. Il n'a nullement contesté la constatation des premiers juges selon laquelle, nonobstant son état de déprime momentané, il était pleinement responsable de ses actes au moment de l'homicide, en prétendant qu'elle reposait sur une appréciation arbitraire des preuves. Le contraire ne ressort en tout cas pas de l'arrêt attaqué et le recourant ne l'établit aucunement. Faute d'épuisement des instances cantonales, l'unique grief soulevé dans le recours de droit public, donc ce dernier, est par conséquent irrecevable.
II. Pourvoi en nullité
II. Pourvoi en nullité
2. Le recourant se plaint d'une violation de l'art. 13 CP, alléguant que les circonstances dans lesquelles il a tiré sur la victime et son comportement durant les jours qui ont précédé devaient faire naître un doute quant à sa responsabilité, de sorte que les juges cantonaux devaient ordonner une expertise psychiatrique.
Comme cela résulte du considérant précédent, dans son recours en nullité cantonal, le recourant n'a nullement contesté la constatation des premiers juges selon laquelle, nonobstant son état de déprime momentané, il était pleinement responsable de ses actes au moment de l'homicide. Or, sur la base de cette constatation, qu'elle ne pouvait réexaminer d'office (art. 439 al. 1 CPP/VD), la cour de cassation cantonale n'avait aucune raison de concevoir des doutes quant à la responsabilité pénale du recourant au moment des faits. Elle ne saurait donc se voir reprocher de n'avoir pas fait application de l'art. 13 CP, dont aucune violation n'a d'ailleurs été invoquée par le recourant dans son recours en réforme (cf. supra, let. B.b).
En réalité, l'argumentation du recourant revient à critiquer l'appréciation des éléments de preuve sur laquelle repose la constatation de son entière responsabilité. Un tel grief, au demeurant non soulevé en instance cantonale dans le cadre de la voie de droit qui permettait de le faire, est irrecevable dans un pourvoi en nullité, qui ne peut être formé que pour violation du droit fédéral (art. 269 PPF; <ref-ruling> consid. 2a p. 83; <ref-ruling> consid. 1a p. 186; <ref-ruling> consid. 2b p. 317).
En réalité, l'argumentation du recourant revient à critiquer l'appréciation des éléments de preuve sur laquelle repose la constatation de son entière responsabilité. Un tel grief, au demeurant non soulevé en instance cantonale dans le cadre de la voie de droit qui permettait de le faire, est irrecevable dans un pourvoi en nullité, qui ne peut être formé que pour violation du droit fédéral (art. 269 PPF; <ref-ruling> consid. 2a p. 83; <ref-ruling> consid. 1a p. 186; <ref-ruling> consid. 2b p. 317).
3. Le recourant soutient que l'arrêt entrepris "consacre une violation des art. 22 et 65 CP". Il reproche à la cour cantonale d'avoir méconnu que les premiers juges avaient fixé la peine sans tenir compte du degré de réalisation de l'homicide. En effet, selon le recourant, rien dans le jugement de première instance ne permettrait de constater que c'est un crime manqué de meurtre, et non un meurtre consommé, que les premiers juges avaient à l'esprit lorsqu'ils ont fixé la peine, le dispositif du jugement de première instance ne mentionnant d'ailleurs pas l'art. 22 CP. Les juges cantonaux auraient ainsi omis de tenir compte d'un élément propre à entraîner une atténuation de la peine en application de l'art. 65 CP.
Ce grief est manifestement infondé. Il résulte clairement du jugement de première instance que c'est un crime manqué de meurtre, et non un meurtre consommé, qui a été retenu. Ledit jugement, aux pages 28 in fine et 29 in limine, le précise d'ailleurs en ces termes: "Le comportement volontaire de X._ n'a pas causé la mort d'autrui, de sorte que c'est une forme de tentative d'homicide intentionnel qui doit être retenue; l'accusé a poursuivi jusqu'au bout son activité coupable, mais sans atteindre le résultat nécessaire pour que le crime soit consommé; il s'agit donc d'un crime manqué au sens de l'art. 22 CP". Certes, au stade de la fixation de la peine, les premiers juges n'ont pas indiqué expressément qu'ils atténuaient la peine en raison de cet élément. Il est toutefois manifeste qu'ils l'avaient alors à l'esprit et en ont tenu compte. D'une part, énumérant à ce stade les infractions qu'ils retenaient, ils ont rappelé que le recourant "s'est rendu coupable de crime manqué de meurtre (art. 111 e.r. 22 CP)". D'autre part, contrairement à ce qu'affirme le recourant, le dispositif du jugement de première instance mentionne expressément l'art. 22 CP en relation avec l'art. 111 CP et, en outre, l'art. 65 CP parmi les dispositions appliquées. Au demeurant, un jugement forme un tout et, en l'absence d'indices clairs en sens contraire, on doit en principe admettre qu'un juge garde à l'esprit les éléments qui y figurent.
Le grief doit par conséquent être rejeté.
Le grief doit par conséquent être rejeté.
4. Le recourant se plaint du refus du sursis à l'expulsion, y voyant une violation de l'art. 55 CP.
4.1 Le recourant ne conteste en rien le principe même de l'expulsion, mais seul le refus de l'assortir du sursis. Le grief revient donc en réalité à invoquer une violation de l'art. 41 ch. 1 CP en relation avec l'art. 55 CP, et non de cette dernière disposition. Il ne ressort toutefois pas de l'arrêt attaqué que ce grief, pas plus d'ailleurs que celui pris d'une violation de l'art. 55 CP, ait été invoqué devant la cour de cassation cantonale. Se pose dès lors la question de sa recevabilité.
4.2 Le pourvoi en nullité au Tribunal fédéral revêt un caractère subsidiaire par rapport aux voies de recours de droit cantonal et suppose donc l'épuisement préalable des instances et voies de droit cantonales permettant de faire réexaminer librement l'application du droit fédéral. Il découle de cette exigence, résultant de l'art. 268 ch. 1 PPF, que si l'autorité cantonale avait la possibilité ou le devoir, selon le droit cantonal, d'examiner aussi des questions de droit qui ne lui étaient pas expressément soumises, ces questions peuvent être soulevées pour la première fois dans le cadre du pourvoi en nullité au Tribunal fédéral. En revanche, si l'autorité cantonale, selon la loi de procédure applicable, ne pouvait examiner que les griefs valablement soulevés devant elle, il n'y a pas d'épuisement des instances cantonales, si la question déjà connue n'a pas été régulièrement invoquée, de sorte que l'autorité cantonale ne pouvait se prononcer sur celle-ci (<ref-ruling> consid. 2a p. 44 s.; <ref-ruling> consid. 3b p. 60 s., 285 consid. 1c p. 287; <ref-ruling> consid. 1a p. 341).
En procédure pénale vaudoise, la violation de la loi, notamment de la loi pénale, doit être invoquée dans le cadre d'un recours en réforme (cf. art. 415 CPP/VD). Selon l'art. 447 al. 1 CPP/VD, saisie d'un tel recours, la cour de cassation vaudoise examine librement les questions de droit sans être limitée aux moyens que les parties invoquent. L'alinéa 2 de cette disposition apporte toutefois des limites au principe ainsi posé, en prévoyant notamment que "la cour de cassation ne peut cependant aller au-delà des conclusions du recourant" (art. 447 al. 2 1ère phrase CPP/VD).
4.3 En l'espèce, dans son recours en réforme, le recourant ne s'est aucunement plaint du refus des premiers juges d'assortir l'expulsion du sursis et il n'a pris aucune conclusion tendant à une modification du jugement de première instance en ce sens qu'il soit mis au bénéfice de cette mesure. Sauf à statuer ultra petita, la cour de cassation cantonale, qui ne l'a du reste pas fait, ne pouvait donc examiner cette question. Il s'ensuit l'irrecevabilité du grief, faute d'épuisement des instances cantonales.
4.3 En l'espèce, dans son recours en réforme, le recourant ne s'est aucunement plaint du refus des premiers juges d'assortir l'expulsion du sursis et il n'a pris aucune conclusion tendant à une modification du jugement de première instance en ce sens qu'il soit mis au bénéfice de cette mesure. Sauf à statuer ultra petita, la cour de cassation cantonale, qui ne l'a du reste pas fait, ne pouvait donc examiner cette question. Il s'ensuit l'irrecevabilité du grief, faute d'épuisement des instances cantonales.
5. Au vu de ce qui précède, le recours de droit public doit être déclaré irrecevable et le pourvoi être rejeté dans la mesure où il est recevable.
III. Frais et dépens
III. Frais et dépens
6. Comme le recours de droit public et le pourvoi en nullité étaient d'emblée dépourvus de chances de succès, l'assistance judiciaire sollicitée pour les deux recours ne saurait être accordée (art. 152 al. 1 OJ) et le recourant, qui succombe, supportera les frais (art. 156 al. 1 OJ; art. 278 al. 1 PPF), dont le montant sera fixé en tenant compte de sa situation financière.

Par ces motifs, le Tribunal fédéral prononce:
Par ces motifs, le Tribunal fédéral prononce:
1. Le recours de droit public est déclaré irrecevable.
1. Le recours de droit public est déclaré irrecevable.
2. Le pourvoi en nullité est rejeté dans la mesure où il est recevable.
2. Le pourvoi en nullité est rejeté dans la mesure où il est recevable.
3. La requête d'assistance judiciaire est rejetée.
3. La requête d'assistance judiciaire est rejetée.
4. Un émolument judiciaire de 1'600 francs est mis à la charge du recourant.
4. Un émolument judiciaire de 1'600 francs est mis à la charge du recourant.
5. Le présent arrêt est communiqué en copie au mandataire du recourant, au Ministère public du canton de Vaud et au Tribunal cantonal du canton de Vaud, Cour de cassation pénale.
Lausanne, le 24 août 2004
Au nom de la Cour de cassation pénale
du Tribunal fédéral suisse
Le président: La greffière: